<?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>214126</bug_id>
          
          <creation_ts>2020-07-08 23:38:46 -0700</creation_ts>
          <short_desc>Multiplex the HID and GameController gamepad providers on Mac</short_desc>
          <delta_ts>2020-07-09 18:28:03 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670028</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-08 23:38:46 -0700</bug_when>
    <thetext>Multiplex the HID and GameController gamepad providers on Mac

Both providers have worked fine on Mac for awhile.

By teaching WebKit how to use both at the same time, we get more gamepads, and better support for GameController.framework devices</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670029</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-08 23:41:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/63192532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670031</commentid>
    <comment_count>2</comment_count>
      <attachid>403848</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-08 23:50:34 -0700</bug_when>
    <thetext>Created attachment 403848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670117</commentid>
    <comment_count>3</comment_count>
      <attachid>403870</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 08:45:20 -0700</bug_when>
    <thetext>Created attachment 403870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670118</commentid>
    <comment_count>4</comment_count>
      <attachid>403871</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 08:48:10 -0700</bug_when>
    <thetext>Created attachment 403871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670126</commentid>
    <comment_count>5</comment_count>
      <attachid>403872</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 09:05:53 -0700</bug_when>
    <thetext>Created attachment 403872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670140</commentid>
    <comment_count>6</comment_count>
      <attachid>403877</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 09:30:44 -0700</bug_when>
    <thetext>Created attachment 403877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670146</commentid>
    <comment_count>7</comment_count>
      <attachid>403878</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 09:52:39 -0700</bug_when>
    <thetext>Created attachment 403878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670175</commentid>
    <comment_count>8</comment_count>
      <attachid>403888</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 10:43:49 -0700</bug_when>
    <thetext>Created attachment 403888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670179</commentid>
    <comment_count>9</comment_count>
      <attachid>403889</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 10:50:27 -0700</bug_when>
    <thetext>Created attachment 403889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670202</commentid>
    <comment_count>10</comment_count>
      <attachid>403896</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 11:54:43 -0700</bug_when>
    <thetext>Created attachment 403896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670209</commentid>
    <comment_count>11</comment_count>
      <attachid>403901</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 12:05:00 -0700</bug_when>
    <thetext>Created attachment 403901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670220</commentid>
    <comment_count>12</comment_count>
      <attachid>403903</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 12:26:14 -0700</bug_when>
    <thetext>Created attachment 403903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670221</commentid>
    <comment_count>13</comment_count>
      <attachid>403904</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 12:30:30 -0700</bug_when>
    <thetext>Created attachment 403904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670231</commentid>
    <comment_count>14</comment_count>
      <attachid>403905</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 12:45:29 -0700</bug_when>
    <thetext>Created attachment 403905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670243</commentid>
    <comment_count>15</comment_count>
      <attachid>403907</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 13:04:25 -0700</bug_when>
    <thetext>Created attachment 403907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670250</commentid>
    <comment_count>16</comment_count>
      <attachid>403910</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 13:19:29 -0700</bug_when>
    <thetext>Created attachment 403910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670252</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 13:29:00 -0700</bug_when>
    <thetext>This is intolerable.

The IOKitSPI.h header is bizarrely kinda cross platform but not really.

Forget it. Doing something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670254</commentid>
    <comment_count>18</comment_count>
      <attachid>403912</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 13:37:58 -0700</bug_when>
    <thetext>Created attachment 403912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670280</commentid>
    <comment_count>19</comment_count>
      <attachid>403919</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 14:22:36 -0700</bug_when>
    <thetext>Created attachment 403919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670285</commentid>
    <comment_count>20</comment_count>
      <attachid>403920</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 14:31:25 -0700</bug_when>
    <thetext>Created attachment 403920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670312</commentid>
    <comment_count>21</comment_count>
      <attachid>403920</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-07-09 15:54:40 -0700</bug_when>
    <thetext>Comment on attachment 403920
Patch

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

&gt; Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h:59
&gt; +    void makeInvisibileGamepadsVisible();

s.p. invisibile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670338</commentid>
    <comment_count>22</comment_count>
      <attachid>403936</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-09 17:41:31 -0700</bug_when>
    <thetext>Created attachment 403936
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670349</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-09 18:28:02 -0700</bug_when>
    <thetext>Committed r264207: &lt;https://trac.webkit.org/changeset/264207&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403936.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403848</attachid>
            <date>2020-07-08 23:50:34 -0700</date>
            <delta_ts>2020-07-09 08:45:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30422</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLmZiNjE0OGY5YzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAt
NTYsNiArNTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250
cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISURE
ZXZpY2UoSU9ISUREZXZpY2VSZWYpOworCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2liaWxl
R2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVf
cHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1l
cGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li41YzRhZWIwNWE1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0zMyw2ICszMyw4IEBACiAjaW1w
b3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxJT0tpdC9oaWQv
SU9ISURFdmVudFN5c3RlbUNsaWVudC5oPgorI2ltcG9ydCA8SU9LaXQvaGlkL0lPSElEU2Vydmlj
ZUNsaWVudC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTE5NSw2ICsxOTcsNTAgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKICAgICBkaXNwYXRjaFBsYXRm
b3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKIH0KIAorYm9vbCBHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlcjo6d2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCit7
CisgICAgaWYgKCFpc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGV2aWNlU2VydmljZSA9IElPSElERGV2aWNlR2V0
U2VydmljZShkZXZpY2UpOworICAgIGlmICghZGV2aWNlU2VydmljZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHNlcnZpY2UgZGlyZWN0bHkgYmFja2luZyB0aGlz
IGRldmljZQorICAgIHVpbnQ2NF90IHJlZ2lzdHJ5SUQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRy
eUdldFJlZ2lzdHJ5RW50cnlJRChkZXZpY2VTZXJ2aWNlLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9T
VUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGV2ZW50U3lzdGVtQ2xp
ZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKG51bGxwdHIpKTsKKyAg
ICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0
KCksIG51bGxwdHIpOworICAgIGF1dG8gc2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVu
dFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5n
ZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlmIChzZXJ2aWNlQ2xpZW50KSB7CisgICAgICAgIGlm
IChDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpdHMg
Z3JhbmRjaGlsZCBzZXJ2aWNlCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBjaGlsZDsKKyAgICBp
ZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZpY2VTZXJ2aWNlLCBrSU9TZXJ2aWNl
UGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0
cnlFbnRyeUdldENoaWxkRW50cnkoY2hpbGQsIGtJT1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBL
RVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoaWxkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlF
bnRyeUlEKGNoaWxkLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVt
Q2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBy
ZWdpc3RyeUlEKSk7CisgICAgaWYgKCFzZXJ2aWNlQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50
LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKaW5kZXggMThmOGU3NWI3YjUuLmE4ZDUyYjA0YmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlclNQSS5oCkBAIC0yNiw5ICsyNiwyMyBAQAogI2lmIEVOQUJMRShHQU1F
UEFEKSAmJiBQTEFURk9STShDT0NPQSkKIAogI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NDb250
cm9sbGVyLmg+CisjaW1wb3J0IDxJT0tpdC9oaWQvSU9ISURTZXJ2aWNlQ2xpZW50Lmg+CiAKIEBp
bnRlcmZhY2UgR0NDb250cm9sbGVyICgpCiArICh2b2lkKV9fb3BlblhQQ19hbmRfQ0JBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKworV1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxp
dHkuaD4KK1dURl9FWFRFUk5fQ19FTkQKKworI2Vsc2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitD
bGFzcyBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2
aWNlKTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyU29mdExpbmsuaAppbmRleCAxMDE4M2JmYzE3NS4uNTRhYTYxYzgzMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zMyw2ICszMyw4IEBACiBTT0ZUX0xJTktfRlJB
TUVXT1JLX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiAKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NGb3JT
ZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2Up
KQorCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1l
Q29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVD
b250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmlu
ZyAqKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KaW5kZXggYzEwNzBjNDE5NmIuLmZm
YmZlM2Q2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCkBAIC0zMyw2ICszMyw4
IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xs
ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTChXZWJDb3JlLCBHYW1lQ29u
dHJvbGxlciwgR0NDb250cm9sbGVyKQogCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShX
ZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3Ms
IChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkKKwogU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdD
Q29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0ND
b250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4IGEy
NTIzNGZiODc1Li4xNjQxZjQwNTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMTIxLDYgKzEyMSw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXhpc1ZhbHVlczsgfQogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZhbHVlczsgfQogCisgICAgY29uc3QgY2hh
ciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkhJRCJfczsgfQorCiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdEVsZW1lbnRzKCk7CiAgICAgdm9pZCBpbml0RWxlbWVudHNGcm9tQXJyYXko
Q0ZBcnJheVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAwYjYzMjI1YzA3Yy4uNWFmNTk1
OThiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1HYW1lcGFkLmgiCkBAIC0xNzgsNiAr
MTc5LDEyIEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRl
cjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogeworICAgIGlmIChtX2lnbm9y
ZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoZGV2aWNlKSkgeworICAgICAgICBMT0coR2Ft
ZXBhZCwgIkdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZp
Y2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgaWdub3JpbmcgaXQiLCBkZXZpY2UpOworICAgICAg
ICBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLmFkZChkZXZpY2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRNYXAuZ2V0KGRldmljZSkpOwog
CiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwg
ZGV2aWNlKTsKQEAgLTIwMSwxNiArMjA4LDI4IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpk
ZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAgICAgICAgICBtX2luaXRpYWxH
YW1lcGFkc0Nvbm5lY3RlZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0KIAorICAgIGF1
dG8gZXZlbnRWaXNpYmlsaXR5ID0gbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgPyBFdmVudE1h
a2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpObzsK
ICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LT5wbGF0
Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIG1faW5pdGlhbEdh
bWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZlbnRN
YWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm8pOworICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBh
ZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsKKwor
ICAgIC8vIElmIHdlIGFyZSB3b3JraW5nIHRvZ2V0aGVyIHdpdGggdGhlIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLCBsZXQgaXQga25vdworICAgIC8vIHRoYXQgZ2FtZXBhZHMgc2hvdWxkIG5vdyBi
ZSB2aXNpYmxlLgorICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0Rldmlj
ZXMgJiYgZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykK
KyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJ
bnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CiB9CiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVy
OjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBMT0coR2FtZXBh
ZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7Ci0KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1l
cGFkRm9yRGV2aWNlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAg
IGlmICghcmVtb3ZlZEdhbWVwYWQpIHsKKyAgICAgICAgYXV0byB0YWtlbiA9IG1fZ2FtZUNvbnRy
b2xsZXJNYW5hZ2VkR2FtZXBhZHMudGFrZShkZXZpY2UpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHRha2VuLCB0YWtlbik7CisgICAgICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVy
IGluZm9ybWVkIG9mIHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdh
bWVDb250cm9sbGVyIGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2aWNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmlj
ZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKIAogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQogICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3Zl
ZEdhbWVwYWQpOwpAQCAtMjQ5LDcgKzI2OCw4IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+
IEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZShJT0hJRERldmljZVJl
ZiBkZXZpY2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IHJlc3VsdCA9IG1f
Z2FtZXBhZE1hcC50YWtlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpID0gbV9nYW1lcGFk
VmVjdG9yLmZpbmQocmVzdWx0LmdldCgpKTsKICAgICBpZiAoaSAhPSBub3RGb3VuZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmgKaW5kZXggMWJiNTRlZTU2MWIuLmZiNDQzOGFlMjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
aApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXZpY2VSZW1vdmVkKElPSElE
RGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5nZWQoSU9ISURWYWx1ZVJlZik7CiAKKyAg
ICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcygpIHsgbV9pZ25vcmVz
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAg
IEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSwxMCArNzMsMTIgQEAgcHJpdmF0ZToKIAog
ICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CiAgICAgSGFzaE1h
cDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRN
YXA7CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRH
YW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKIAog
ICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzIHsgZmFsc2UgfTsKIAogICAg
IFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXI7CiAgICAgVGltZXIgbV9pbnB1
dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJmY2VlNTJjYmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApA
QCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgi
CisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE11bHRpR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciwgcHVi
bGljIEdhbWVwYWRQcm92aWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TXVsdGlH
YW1lcGFkUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
TXVsdGlHYW1lcGFkUHJvdmlkZXImIHNpbmdsZXRvbigpOworCisgICAgLy8gR2FtZXBhZFByb3Zp
ZGVyCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGll
bnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3Zp
ZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBw
bGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyByZXR1cm4gbV9nYW1lcGFkVmVjdG9yOyB9CisgICAg
Ym9vbCBpc01vY2tHYW1lcGFkUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgLy8gR2FtZXBhZFByb3ZpZGVyQ2xpZW50CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRDb25u
ZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiwgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7
CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJikg
ZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNH
YW1lcGFkc1Zpc2libGUpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKKworcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBib29s
IG1fc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1faW5p
dGlhbEdhbWVwYWRzQ291bnQgeyAwIH07CisgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1f
Z2FtZXBhZFZlY3RvcjsKKworICAgIGNsYXNzIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIgOiBwdWJs
aWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBsYXRmb3JtR2FtZXBh
ZFdyYXBwZXIodW5zaWduZWQgaW5kZXgsIFBsYXRmb3JtR2FtZXBhZCogd3JhcHBlZCkKKyAgICAg
ICAgICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQorICAgICAgICAgICAgLCBtX3BsYXRmb3Jt
R2FtZXBhZCh3cmFwcGVkKQorICAgICAgICB7CisgICAgICAgICAgICBtX2lkID0gd3JhcHBlZC0+
aWQoKTsKKyAgICAgICAgICAgIG1fbWFwcGluZyA9IHdyYXBwZWQtPm1hcHBpbmcoKTsKKyAgICAg
ICAgICAgIG1fY29ubmVjdFRpbWUgPSB3cmFwcGVkLT5jb25uZWN0VGltZSgpOworICAgICAgICB9
CisKKyAgICAgICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5sYXN0VXBkYXRlVGltZSgpOyB9CisgICAgICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
bGF0Zm9ybUdhbWVwYWQtPmF4aXNWYWx1ZXMoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91
YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVw
YWQtPmJ1dHRvblZhbHVlcygpOyB9CisKKyAgICAgICAgY29uc3QgY2hhciogc291cmNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPnNvdXJjZSgpOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWQqIG1fcGxhdGZvcm1HYW1lcGFkOworICAg
IH07CisgICAgSGFzaE1hcDxQbGF0Zm9ybUdhbWVwYWQqLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1HYW1lcGFkV3JhcHBlcj4+IG1fZ2FtZXBhZE1hcDsKKyAgICBib29sIG1faGlkSW1wb3J0Q29t
cGxldGUgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmViMGViODUxZTA2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlH
YW1lcGFkUHJvdmlkZXIubW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVO
QUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJISURHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHNpemVf
dCBudW1iZXJPZkdhbWVwYWRQcm92aWRlcnMgPSAyOworCitNdWx0aUdhbWVwYWRQcm92aWRlciYg
TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE11bHRpR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4g
c2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9u
aXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJv
b2wgbW9uaXRvck90aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFT
U0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZj
bGllbnQpOworCisgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pZ25vcmVHYW1l
Q29udHJvbGxlckZyYW1ld29ya0RldmljZXMoKTsKKyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlcjo6c2luZ2xldG9uKCkucHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNz
YXJ5KCk7CisKKyAgICBpZiAobW9uaXRvck90aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdh
bWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMp
OworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rh
cnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBNdWx0aUdhbWVw
YWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKwor
ICAgIGJvb2wgc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5y
ZW1vdmUoJmNsaWVudCkgJiYgbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIGlmIChzaG91bGRT
dG9wTW9uaXRvcmluZ090aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dh
bWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIE11bHRpR2FtZXBhZFByb3ZpZGVy
OjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9
IDA7CisgICAgd2hpbGUgKGluZGV4IDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVw
YWRWZWN0b3JbaW5kZXhdKQorICAgICAgICArK2luZGV4OworCisgICAgQVNTRVJUKGluZGV4IDw9
IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworCisgICAgaWYgKGluZGV4ID09IG1fZ2FtZXBhZFZl
Y3Rvci5zaXplKCkpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsK
KworICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCwgRXZlbnRNYWtl
c0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgYXV0byBpbmRleCA9IGlu
ZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlH
YW1lcGFkUHJvdmlkZXIgYWRkaW5nIG5ldyBwbGF0Zm9ybSBnYW1lcGFkIHRvIGluZGV4ICVpIGZy
b20gYSAlcyBzb3VyY2UiLCBpbmRleCwgZ2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBBU1NFUlQo
bV9nYW1lcGFkVmVjdG9yLnNpemUoKSA+IGluZGV4KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9nYW1lcGFkTWFwLnNldCgmZ2FtZXBhZCwgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUdhbWVw
YWRXcmFwcGVyPihpbmRleCwgJmdhbWVwYWQpKTsKKyAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5k
ZXhdLCBldmVudFZpc2liaWxpdHkpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpw
bGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQorewor
ICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgZGlzY29ubmVjdGluZyBnYW1l
cGFkIGZyb20gYSAlcyBzb3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgpKTsKKworICAgIGF1dG8gZ2Ft
ZXBhZFdyYXBwZXIgPSBtX2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBhZCk7CisKKyAgICBBU1NFUlQo
Z2FtZXBhZFdyYXBwZXIpOworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlci0+aW5kZXgoKSA8IG1f
Z2FtZXBhZFZlY3Rvci5zaXplKCkpOworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3JbZ2FtZXBh
ZFdyYXBwZXItPmluZGV4KCldID09IGdhbWVwYWRXcmFwcGVyLmdldCgpKTsKKworICAgIG1fZ2Ft
ZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPSBudWxscHRyOworCisgICAgZm9y
IChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1l
cGFkRGlzY29ubmVjdGVkKCpnYW1lcGFkV3JhcHBlcik7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRNYWtlc0dhbWVwYWRz
VmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgaWYgKGV2ZW50VmlzaWJpbGl0eSA9PSBF
dmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgp
OworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShldmVudFZpc2liaWxpdHkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5OWE0MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE11bHRpcGxleCB0aGUgSElEIGFuZCBHYW1lQ29udHJvbGxlciBnYW1l
cGFkIHByb3ZpZGVycyBvbiBNYWMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzE5MjUzMj4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9H
YW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgor
CiAyMDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZ2dyZXNzaXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIGdhbWVwYWQgcHJv
dmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29h
L1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1l
cGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXggYWIyYzdmYjg4ZDMuLjE5
NGFhMzU2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2Nv
Y29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0zMSw2ICszMSw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9N
b2NrR2FtZXBhZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011bHRpR2FtZXBhZFByb3Zp
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC01Myw3ICs1NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVs
dEdhbWVwYWRQcm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQog
ICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQotICAgICAgICBHYW1lcGFk
UHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE11bHRpR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403870</attachid>
            <date>2020-07-09 08:45:20 -0700</date>
            <delta_ts>2020-07-09 08:48:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30516</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLmZiNjE0OGY5YzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAt
NTYsNiArNTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250
cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISURE
ZXZpY2UoSU9ISUREZXZpY2VSZWYpOworCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2liaWxl
R2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVf
cHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1l
cGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li4xNjIzY2UxOGExOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0zMyw4ICszMywxMiBAQAogI2lt
cG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0IDxHYW1lQ29udHJvbGxlci9HYW1lQ29udHJvbGxlci5oPgorI2ltcG9ydCA8SU9LaXQvaGlk
L0lPSElERXZlbnRTeXN0ZW1DbGllbnQuaD4KKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJRFNlcnZp
Y2VDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaW1wb3J0ICJH
YW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IFNlY29uZHMgaW5wdXROb3RpZmljYXRpb25EZWxheSB7IDE2X21zIH07CkBAIC0xOTUs
NiArMTk5LDUwIEBAIHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90
aWZpY2F0aW9uVGltZXJGaXJlZCgpCiAgICAgZGlzcGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1dEFj
dGl2aXR5KCk7CiB9CiAKK2Jvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxI
YW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQoreworICAgIGlmICghaXNHYW1l
Q29udHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIGRldmljZVNlcnZpY2UgPSBJT0hJRERldmljZUdldFNlcnZpY2UoZGV2aWNlKTsK
KyAgICBpZiAoIWRldmljZVNlcnZpY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IENoZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZpY2UKKyAgICB1aW50
NjRfdCByZWdpc3RyeUlEOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5
SUQoZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9I
SURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CisgICAgSU9ISURFdmVudFN5c3Rl
bUNsaWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBudWxscHRyKTsKKyAg
ICBhdXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5
U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQp
KTsKKyAgICBpZiAoc2VydmljZUNsaWVudCkgeworICAgICAgICBpZiAoQ29udHJvbGxlckNsYXNz
Rm9yU2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaXRzIGdyYW5kY2hpbGQgc2Vydmlj
ZQorICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgY2hpbGQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRy
eUdldENoaWxkRW50cnkoZGV2aWNlU2VydmljZSwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9
IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVu
dHJ5KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJl
Z2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
c2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNl
Rm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAg
IGlmICghc2VydmljZUNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlclNQSS5oCmluZGV4IDE4ZjhlNzViN2I1Li5jYmViM2MyODcyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJT
UEkuaApAQCAtMjYsOSArMjYsMjMgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0o
Q09DT0EpCiAKICNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dDQ29udHJvbGxlci5oPgorI2ltcG9y
dCA8SU9LaXQvaGlkc3lzdGVtL0lPSElEU2VydmljZUNsaWVudC5oPgogCiBAaW50ZXJmYWNlIEdD
Q29udHJvbGxlciAoKQogKyAodm9pZClfX29wZW5YUENfYW5kX0NCQXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmVfXzsKIEBlbmQKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKK1dURl9F
WFRFUk5fQ19CRUdJTgorI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NVdGlsaXR5Lmg+CitXVEZf
RVhURVJOX0NfRU5ECisKKyNlbHNlCisKK1dURl9FWFRFUk5fQ19CRUdJTgorQ2xhc3MgQ29udHJv
bGxlckNsYXNzRm9yU2VydmljZShJT0hJRFNlcnZpY2VDbGllbnRSZWYpOworV1RGX0VYVEVSTl9D
X0VORAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNlbmRpZiAvLyBFTkFC
TEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5o
CmluZGV4IDEwMTgzYmZjMTc1Li41NGFhNjFjODMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRM
aW5rLmgKQEAgLTMzLDYgKzMzLDggQEAKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihX
ZWJDb3JlLCBHYW1lQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYkNv
cmUsIEdDQ29udHJvbGxlcikKIAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29y
ZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9I
SURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2UpLCAoc2VydmljZSkpCisKIFNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRy
b2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJv
bGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0
TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJTb2Z0TGluay5tbQppbmRleCBjMTA3MGM0MTk2Yi4uZmZiZmUzZDY5ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJT
b2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dh
bWVDb250cm9sbGVyU29mdExpbmsubW0KQEAgLTMzLDYgKzMzLDggQEAKIFNPRlRfTElOS19GUkFN
RVdPUktfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX09QVElPTkFMKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xs
ZXIpCiAKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9s
bGVyLCBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVu
dFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2UpKQorCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVj
dE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9G
T1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25u
ZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggYTI1MjM0ZmI4NzUuLjE2NDFmNDA1
MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZC5oCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAg
ICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiSElEIl9zOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0RWxlbWVu
dHMoKTsKICAgICB2b2lkIGluaXRFbGVtZW50c0Zyb21BcnJheShDRkFycmF5UmVmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
UHJvdmlkZXIuY3BwCmluZGV4IDBiNjMyMjVjMDdjLi41YWY1OTU5OGJhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExB
VEZPUk0oTUFDKQogCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgog
I2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKQEAgLTE3OCw2ICsxNzksMTIgQEAgdm9pZCBISURH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiB7CisgICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrRGV2aWNlcyAmJiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRs
ZUhJRERldmljZShkZXZpY2UpKSB7CisgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xs
ZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIGF0dGFjaGVkIGRldmljZSAlcCAtIEhJREdhbWVwYWRQ
cm92aWRlciBpZ25vcmluZyBpdCIsIGRldmljZSk7CisgICAgICAgIG1fZ2FtZUNvbnRyb2xsZXJN
YW5hZ2VkR2FtZXBhZHMuYWRkKGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CiAKICAgICBMT0coR2FtZXBhZCwg
IkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2UpOwpAQCAtMjAxLDE2
ICsyMDgsMjggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2
aWNlUmVmIGRldmljZSkKICAgICAgICAgICAgIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfQogCisgICAgYXV0byBldmVudFZpc2liaWxpdHkg
PSBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6
OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vOwogICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3Rl
ZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgPyBF
dmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxl
OjpObyk7CisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworCisgICAgLy8gSWYgd2UgYXJlIHdv
cmtpbmcgdG9nZXRoZXIgd2l0aCB0aGUgR2FtZUNvbnRyb2xsZXIgcHJvdmlkZXIsIGxldCBpdCBr
bm93CisgICAgLy8gdGhhdCBnYW1lcGFkcyBzaG91bGQgbm93IGJlIHZpc2libGUuCisgICAgaWYg
KG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBldmVudFZpc2liaWxp
dHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzKQorICAgICAgICBHYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFrZUludmlzaWJpbGVHYW1lcGFkc1Zp
c2libGUoKTsKIH0KIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZVJlbW92ZWQoSU9I
SUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3Zp
ZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxI
SURHYW1lcGFkPiByZW1vdmVkR2FtZXBhZCA9IHJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoZGV2aWNl
KTsKLSAgICBBU1NFUlQocmVtb3ZlZEdhbWVwYWQpOworCisgICAgaWYgKCFyZW1vdmVkR2FtZXBh
ZCkgeworICAgICAgICBhdXRvIHRha2VuID0gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFk
cy50YWtlKGRldmljZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sIHRha2VuKTsKKyAg
ICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgaW5mb3JtZWQgb2YgcmVtb3Zh
bCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgR2FtZUNvbnRyb2xsZXIgZnJhbWV3
b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIHJlbW92ZWQiLCBkZXZp
Y2UpOwogCiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCiAgICAgICAgIGNsaWVu
dC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpyZW1vdmVkR2FtZXBhZCk7CkBAIC0yNDks
NyArMjY4LDggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGlt
ZXJGaXJlZCgpCiBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gSElER2FtZXBhZFByb3ZpZGVy
OjpyZW1vdmVHYW1lcGFkRm9yRGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2
aWNlKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGkgPSBtX2dhbWVwYWRWZWN0b3IuZmluZChyZXN1bHQu
Z2V0KCkpOwogICAgIGlmIChpICE9IG5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAppbmRleCAxYmI1
NGVlNTYxYi4uZmI0NDM4YWUyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBAIC01Niw2ICs1Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRldmljZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYpOwogICAgIHZv
aWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKIAorICAgIHZvaWQgaWdub3JlR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCkgeyBtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1l
d29ya0RldmljZXMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSElER2FtZXBhZFByb3ZpZGVy
KCk7CiAKQEAgLTcxLDEwICs3MywxMiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFBsYXRmb3Jt
R2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoTWFwPElPSElERGV2aWNlUmVmLCBz
dGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKKyAgICBIYXNoU2V0PElP
SElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzOwogCiAgICAgUmV0
YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9tYW5hZ2VyOwogCiAgICAgYm9vbCBtX2luaXRpYWxH
YW1lcGFkc0Nvbm5lY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lnbm9yZXNHYW1lQ29udHJv
bGxlckZyYW1ld29ya0RldmljZXMgeyBmYWxzZSB9OwogCiAgICAgVGltZXIgbV9pbml0aWFsR2Ft
ZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1lciBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdh
bWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVs
dGlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMmZjZWU1MmNiYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFk
UHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXVsdGlHYW1lcGFk
UHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyLCBwdWJsaWMgR2FtZXBhZFByb3ZpZGVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NdWx0aUdhbWVwYWRQcm92aWRlcigpID0g
ZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNdWx0aUdhbWVwYWRQcm92aWRl
ciYgc2luZ2xldG9uKCk7CisKKyAgICAvLyBHYW1lcGFkUHJvdmlkZXIKKyAgICB2b2lkIHN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZv
aWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsK
KyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBm
aW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7IH0KKyAgICBib29sIGlzTW9ja0dhbWVwYWRQ
cm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBHYW1lcGFkUHJvdmlk
ZXJDbGllbnQKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVw
YWQmLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3Jt
R2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBs
YXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmlu
YWw7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoUGxhdGZv
cm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIGluZGV4
Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIGJvb2wgbV9zaG91bGRNYWtlR2FtZXBh
ZHNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBzaXplX3QgbV9pbml0aWFsR2FtZXBhZHNDb3VudCB7
IDAgfTsKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworCisg
ICAgY2xhc3MgUGxhdGZvcm1HYW1lcGFkV3JhcHBlciA6IHB1YmxpYyBQbGF0Zm9ybUdhbWVwYWQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFkV3JhcHBlcih1bnNpZ25lZCBp
bmRleCwgUGxhdGZvcm1HYW1lcGFkKiB3cmFwcGVkKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUdh
bWVwYWQoaW5kZXgpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1HYW1lcGFkKHdyYXBwZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1faWQgPSB3cmFwcGVkLT5pZCgpOworICAgICAgICAgICAg
bV9tYXBwaW5nID0gd3JhcHBlZC0+bWFwcGluZygpOworICAgICAgICAgICAgbV9jb25uZWN0VGlt
ZSA9IHdyYXBwZWQtPmNvbm5lY3RUaW1lKCk7CisgICAgICAgIH0KKworICAgICAgICBNb25vdG9u
aWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdh
bWVwYWQtPmxhc3RVcGRhdGVUaW1lKCk7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4m
IGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+YXhp
c1ZhbHVlcygpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+YnV0dG9uVmFsdWVzKCk7
IH0KKworICAgICAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3BsYXRmb3JtR2FtZXBhZC0+c291cmNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFBs
YXRmb3JtR2FtZXBhZCogbV9wbGF0Zm9ybUdhbWVwYWQ7CisgICAgfTsKKyAgICBIYXNoTWFwPFBs
YXRmb3JtR2FtZXBhZCosIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPj4g
bV9nYW1lcGFkTWFwOworICAgIGJvb2wgbV9oaWRJbXBvcnRDb21wbGV0ZSB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkg
JiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMzBlMjFiMTVmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpA
QCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNdWx0aUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIK
KyNpbXBvcnQgIkhJREdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCAiUGxhdGZvcm1HYW1lcGFkLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgc2l6ZV90IG51bWJlck9mR2FtZXBhZFBy
b3ZpZGVycyA9IDI7CisKK011bHRpR2FtZXBhZFByb3ZpZGVyJiBNdWx0aUdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXVsdGlHYW1lcGFk
UHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92aWRlcjsKK30K
Kwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2Ft
ZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBtb25pdG9yT3RoZXJQcm92
aWRlcnMgPSBtX2NsaWVudHMuaXNFbXB0eSgpOworCisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29u
dGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAgICBISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3Jr
RGV2aWNlcygpOworICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5wcmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKKworICAgIGlmICht
b25pdG9yT3RoZXJQcm92aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFk
cygqdGhpcyk7CisgICAgfQorfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9u
aXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRTdG9w
TW9uaXRvcmluZ090aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAmJiBt
X2NsaWVudHMuaXNFbXB0eSgpOworCisgICAgaWYgKHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQ
cm92aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAg
IH0KK30KKwordW5zaWduZWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25u
ZWN0ZWREZXZpY2UoKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5k
ZXggPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisg
ICAgICAgICsraW5kZXg7CisKKyAgICBBU1NFUlQoaW5kZXggPD0gbV9nYW1lcGFkVmVjdG9yLnNp
emUoKSk7CisKKyAgICBpZiAoaW5kZXggPT0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSkKKyAgICAg
ICAgbV9nYW1lcGFkVmVjdG9yLnJlc2l6ZShpbmRleCArIDEpOworCisgICAgcmV0dXJuIGluZGV4
OworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0
ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2
ZW50VmlzaWJpbGl0eSkKK3sKKyAgICBhdXRvIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBhZGRp
bmcgbmV3IHBsYXRmb3JtIGdhbWVwYWQgdG8gaW5kZXggJWkgZnJvbSBhICVzIHNvdXJjZSIsIGlu
ZGV4LCBnYW1lcGFkLnNvdXJjZSgpKTsKKworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3Iuc2l6
ZSgpID4gaW5kZXgpOworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dhbWVwYWRNYXAuc2V0KCZn
YW1lcGFkLCBXVEY6Om1ha2VVbmlxdWU8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4oaW5kZXgsICZn
YW1lcGFkKSk7CisgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBtX2dhbWVw
YWRWZWN0b3JbaW5kZXhdID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3Jt
R2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5
KTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29u
bmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIk11
bHRpR2FtZXBhZFByb3ZpZGVyIGRpc2Nvbm5lY3RpbmcgZ2FtZXBhZCBmcm9tIGEgJXMgc291cmNl
IiwgZ2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBhdXRvIGdhbWVwYWRXcmFwcGVyID0gbV9nYW1l
cGFkTWFwLnRha2UoJmdhbWVwYWQpOworCisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyKTsKKyAg
ICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXItPmluZGV4KCkgPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgp
KTsKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9
PSBnYW1lcGFkV3JhcHBlci5nZXQoKSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbZ2FtZXBhZFdy
YXBwZXItPmluZGV4KCldID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqZ2Ft
ZXBhZFdyYXBwZXIpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdh
bWVwYWRJbnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmls
aXR5KQoreworICAgIGlmIChldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlz
aWJsZTo6WWVzKQorICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkubWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0
QWN0aXZpdHkoZXZlbnRWaXNpYmlsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MzM0ZGExNjViYmYuLmJmMGZhOTlhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIw
LTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0
aXBsZXggdGhlIEhJRCBhbmQgR2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBwcm92aWRlcnMgb24gTWFj
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVw
YWRQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKwogMjAyMC0wNy0wOCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2ZWx5IHByaW1l
IEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQ
cm92aWRlckNvY29hLm1tCmluZGV4IGFiMmM3ZmI4OGQzLi4xOTRhYTM1NjU4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlH
YW1lcGFkUHJvdmlkZXJDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ISURH
YW1lcGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9NdWx0aUdhbWVwYWRQcm92aWRlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNyArNTQsNyBAQCB2b2lk
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQog
ICAgIGlmICh1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKICAgICAgICAgR2FtZXBhZFByb3Zp
ZGVyOjpzZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2lu
Z2xldG9uKCkpOwogICAgIGVsc2UKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQ
cm92aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAgR2FtZXBh
ZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403871</attachid>
            <date>2020-07-09 08:48:10 -0700</date>
            <delta_ts>2020-07-09 09:05:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30611</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLmZiNjE0OGY5YzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAt
NTYsNiArNTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250
cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISURE
ZXZpY2UoSU9ISUREZXZpY2VSZWYpOworCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2liaWxl
R2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVf
cHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1l
cGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li41OWNlZTY0YWRhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0yOSwxMiArMjksMTUgQEAKICNp
ZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCi0j
aW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlk
ZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPEdhbWVDb250cm9sbGVy
L0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxJT0tpdC9oaWQvSU9ISURFdmVudFN5c3RlbUNs
aWVudC5oPgorI2ltcG9ydCA8SU9LaXQvaGlkL0lPSElEU2VydmljZUNsaWVudC5oPgogI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExp
bmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBpbnB1
dE5vdGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTgsNTAgQEAgdm9pZCBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVk
KCkKICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKIH0KIAorYm9v
bCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRsZUhJRERldmljZShJT0hJ
RERldmljZVJlZiBkZXZpY2UpCit7CisgICAgaWYgKCFpc0dhbWVDb250cm9sbGVyRnJhbWV3b3Jr
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGV2aWNlU2Vy
dmljZSA9IElPSElERGV2aWNlR2V0U2VydmljZShkZXZpY2UpOworICAgIGlmICghZGV2aWNlU2Vy
dmljZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHNlcnZpY2Ug
ZGlyZWN0bHkgYmFja2luZyB0aGlzIGRldmljZQorICAgIHVpbnQ2NF90IHJlZ2lzdHJ5SUQ7Cisg
ICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChkZXZpY2VTZXJ2aWNlLCAm
cmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGV2ZW50U3lzdGVtQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50
Q3JlYXRlKG51bGxwdHIpKTsKKyAgICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmco
ZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIG51bGxwdHIpOworICAgIGF1dG8gc2VydmljZUNsaWVu
dCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJ
RChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlmIChzZXJ2aWNl
Q2xpZW50KSB7CisgICAgICAgIGlmIChDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VD
bGllbnQuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8g
T3RoZXJ3aXNlLCBjaGVjayBpdHMgZ3JhbmRjaGlsZCBzZXJ2aWNlCisgICAgaW9fcmVnaXN0cnlf
ZW50cnlfdCBjaGlsZDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZp
Y2VTZXJ2aWNlLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldENoaWxkRW50cnkoY2hpbGQsIGtJT1NlcnZp
Y2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdp
c3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGNoaWxkLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9T
VUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzZXJ2aWNlQ2xpZW50ID0gYWRv
cHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50
U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlEKSk7CisgICAgaWYgKCFzZXJ2aWNlQ2xpZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9y
U2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKaW5kZXggMThm
OGU3NWI3YjUuLmNiZWIzYzI4NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCkBAIC0yNiw5ICsyNiwy
MyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKIAogI2ltcG9ydCA8
R2FtZUNvbnRyb2xsZXIvR0NDb250cm9sbGVyLmg+CisjaW1wb3J0IDxJT0tpdC9oaWRzeXN0ZW0v
SU9ISURTZXJ2aWNlQ2xpZW50Lmg+CiAKIEBpbnRlcmZhY2UgR0NDb250cm9sbGVyICgpCiArICh2
b2lkKV9fb3BlblhQQ19hbmRfQ0JBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAog
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworV1RGX0VYVEVSTl9DX0JFR0lOCisjaW1w
b3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxpdHkuaD4KK1dURl9FWFRFUk5fQ19FTkQKKworI2Vs
c2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitDbGFzcyBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNl
KElPSElEU2VydmljZUNsaWVudFJlZik7CitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKaW5kZXggMTAxODNiZmMxNzUu
LjU0YWE2MWM4MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaApAQCAtMzMsNiArMzMs
OCBAQAogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9s
bGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViQ29yZSwgR0NDb250cm9sbGVyKQog
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwg
Q29udHJvbGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYg
c2VydmljZSksIChzZXJ2aWNlKSkKKwogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9I
RUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3Rp
ZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hF
QURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5v
dGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCmlu
ZGV4IGMxMDcwYzQxOTZiLi5mZmJmZTNkNjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGlu
ay5tbQpAQCAtMzMsNiArMzMsOCBAQAogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFdl
YkNvcmUsIEdhbWVDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9O
QUwoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlcikKIAorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRyb2xsZXJDbGFz
c0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2UpLCAoc2Vy
dmljZSkpCisKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUs
IEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0
cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
R2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24sIE5T
U3RyaW5nICopCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWQuaAppbmRleCBhMjUyMzRmYjg3NS4uMTY0MWY0MDUyZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKQEAgLTEyMSw2ICsx
MjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBjb25zdCBWZWN0b3I8ZG91
YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7
IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJISUQi
X3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRFbGVtZW50cygpOwogICAgIHZvaWQgaW5p
dEVsZW1lbnRzRnJvbUFycmF5KENGQXJyYXlSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXgg
MGI2MzIyNWMwN2MuLjVhZjU5NTk4YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAKKyNpbXBv
cnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJv
dmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtR2Ft
ZXBhZC5oIgpAQCAtMTc4LDYgKzE3OSwxMiBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3Rv
cE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKIAogdm9p
ZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkK
IHsKKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElERGV2aWNlKGRldmljZSkp
IHsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsgd2lsbCBo
YW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVyIGlnbm9yaW5nIGl0
IiwgZGV2aWNlKTsKKyAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkcy5hZGQo
ZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVCghbV9nYW1lcGFk
TWFwLmdldChkZXZpY2UpKTsKIAogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVy
IGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CkBAIC0yMDEsMTYgKzIwOCwyOCBAQCB2b2lkIEhJ
REdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAg
ICAgICAgICAgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lci5zdGFydE9uZVNob3QoMF9z
KTsKICAgICB9CiAKKyAgICBhdXRvIGV2ZW50VmlzaWJpbGl0eSA9IG1faW5pdGlhbEdhbWVwYWRz
Q29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZlbnRNYWtlc0dh
bWVwYWRzVmlzaWJsZTo6Tm87CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0g
ICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3Jb
aW5kZXhdLCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1lcGFkc1Zp
c2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vKTsKKyAgICAgICAgY2xp
ZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIGV2
ZW50VmlzaWJpbGl0eSk7CisKKyAgICAvLyBJZiB3ZSBhcmUgd29ya2luZyB0b2dldGhlciB3aXRo
IHRoZSBHYW1lQ29udHJvbGxlciBwcm92aWRlciwgbGV0IGl0IGtub3cKKyAgICAvLyB0aGF0IGdh
bWVwYWRzIHNob3VsZCBub3cgYmUgdmlzaWJsZS4KKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRy
b2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIGV2ZW50VmlzaWJpbGl0eSA9PSBFdmVudE1ha2VzR2Ft
ZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwogfQogCiB2b2lk
IEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZiBkZXZpY2Up
CiB7Ci0gICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIHJlbW92
ZWQiLCBkZXZpY2UpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IHJlbW92ZWRH
YW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwotICAgIEFTU0VSVChyZW1v
dmVkR2FtZXBhZCk7CisKKyAgICBpZiAoIXJlbW92ZWRHYW1lcGFkKSB7CisgICAgICAgIGF1dG8g
dGFrZW4gPSBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLnRha2UoZGV2aWNlKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4pOworICAgICAgICBMT0coR2FtZXBhZCwg
IkhJREdhbWVwYWRQcm92aWRlciBpbmZvcm1lZCBvZiByZW1vdmFsIG9mIGRldmljZSAlcCwgd2hp
Y2ggaXMgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuIElnbm9yaW5nLiIsIGRl
dmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coR2FtZXBhZCwgIkhJREdh
bWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7CiAKICAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRE
aXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKQEAgLTI0OSw3ICsyNjgsOCBAQCB2b2lkIEhJ
REdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKIHN0ZDo6dW5p
cXVlX3B0cjxISURHYW1lcGFkPiBISURHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JE
ZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxISURH
YW1lcGFkPiByZXN1bHQgPSBtX2dhbWVwYWRNYXAudGFrZShkZXZpY2UpOwotICAgIEFTU0VSVChy
ZXN1bHQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQoKSk7CiAgICAgaWYgKGkg
IT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCmluZGV4IDFiYjU0ZWU1NjFiLi5mYjQ0MzhhZTI2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZvaWQg
ZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZik7CiAgICAgdm9pZCB2YWx1ZXNDaGFuZ2VkKElP
SElEVmFsdWVSZWYpOwogCisgICAgdm9pZCBpZ25vcmVHYW1lQ29udHJvbGxlckZyYW1ld29ya0Rl
dmljZXMoKSB7IG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyA9IHRydWU7
IH0KKwogcHJpdmF0ZToKICAgICBISURHYW1lcGFkUHJvdmlkZXIoKTsKIApAQCAtNzEsMTAgKzcz
LDEyIEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFk
VmVjdG9yOwogICAgIEhhc2hNYXA8SU9ISUREZXZpY2VSZWYsIHN0ZDo6dW5pcXVlX3B0cjxISURH
YW1lcGFkPj4gbV9nYW1lcGFkTWFwOworICAgIEhhc2hTZXQ8SU9ISUREZXZpY2VSZWY+IG1fZ2Ft
ZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHM7CiAKICAgICBSZXRhaW5QdHI8SU9ISURNYW5hZ2Vy
UmVmPiBtX21hbmFnZXI7CiAKICAgICBib29sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNl
cyB7IGZhbHNlIH07CiAKICAgICBUaW1lciBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVy
OwogICAgIFRpbWVyIG1faW5wdXROb3RpZmljYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZmNlZTUyY2JiMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRp
R2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUg
IkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdWx0aUdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBH
YW1lcGFkUHJvdmlkZXIsIHB1YmxpYyBHYW1lcGFkUHJvdmlkZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfk11bHRpR2FtZXBhZFByb3ZpZGVyKCkgPSBkZWZhdWx0OworCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIE11bHRpR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKwor
ICAgIC8vIEdhbWVwYWRQcm92aWRlcgorICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMo
R2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ0dh
bWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxQ
bGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFsIHsgcmV0dXJuIG1fZ2Ft
ZXBhZFZlY3RvcjsgfQorICAgIGJvb2wgaXNNb2NrR2FtZXBhZFByb3ZpZGVyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEdhbWVwYWRQcm92aWRlckNsaWVudAorICAgIHZvaWQg
cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYsIEV2ZW50TWFrZXNHYW1l
cGFkc1Zpc2libGUpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVk
KFBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRB
Y3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsKKworcHJvdGVjdGVkOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2
aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3RlZERl
dmljZSgpOworCisgICAgYm9vbCBtX3Nob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUgeyBmYWxzZSB9
OworICAgIHNpemVfdCBtX2luaXRpYWxHYW1lcGFkc0NvdW50IHsgMCB9OworICAgIFZlY3RvcjxQ
bGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CisKKyAgICBjbGFzcyBQbGF0Zm9ybUdh
bWVwYWRXcmFwcGVyIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CisgICAgcHVibGljOgorICAg
ICAgICBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyKHVuc2lnbmVkIGluZGV4LCBQbGF0Zm9ybUdhbWVw
YWQqIHdyYXBwZWQpCisgICAgICAgICAgICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAg
ICAgICAgICwgbV9wbGF0Zm9ybUdhbWVwYWQod3JhcHBlZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9pZCA9IHdyYXBwZWQtPmlkKCk7CisgICAgICAgICAgICBtX21hcHBpbmcgPSB3cmFwcGVk
LT5tYXBwaW5nKCk7CisgICAgICAgICAgICBtX2Nvbm5lY3RUaW1lID0gd3JhcHBlZC0+Y29ubmVj
dFRpbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRp
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+bGFzdFVwZGF0ZVRp
bWUoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5heGlzVmFsdWVzKCk7IH0KKyAgICAg
ICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5idXR0b25WYWx1ZXMoKTsgfQorCisgICAgICAgIGNvbnN0
IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5z
b3VyY2UoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFkKiBtX3Bs
YXRmb3JtR2FtZXBhZDsKKyAgICB9OworICAgIEhhc2hNYXA8UGxhdGZvcm1HYW1lcGFkKiwgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+PiBtX2dhbWVwYWRNYXA7CisgICAg
Ym9vbCBtX2hpZEltcG9ydENvbXBsZXRlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVw
YWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRp
R2FtZXBhZFByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li4zMGUyMWIxNWY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMTMyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11bHRpR2FtZXBhZFBy
b3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiSElER2FtZXBh
ZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUdhbWVw
YWQuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBzaXplX3QgbnVtYmVyT2ZHYW1lcGFkUHJvdmlkZXJzID0gMjsKKworTXVs
dGlHYW1lcGFkUHJvdmlkZXImIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdWx0aUdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJv
dmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCit2b2lkIE11bHRpR2FtZXBh
ZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBib29sIG1vbml0b3JPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5p
c0VtcHR5KCk7CisKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7Cisg
ICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2lu
Z2xldG9uKCkuaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCk7CisgICAgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnByZXdhcm1HYW1lQ29udHJv
bGxlckRldmljZXNJZk5lY2Vzc2FyeSgpOworCisgICAgaWYgKG1vbml0b3JPdGhlclByb3ZpZGVy
cykgeworICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRv
cmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9
CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2Ft
ZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250
YWlucygmY2xpZW50KSk7CisKKyAgICBib29sIHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92
aWRlcnMgPSBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7
CisKKyAgICBpZiAoc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycykgeworICAgICAg
ICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMo
KnRoaXMpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgfQorfQorCit1bnNpZ25lZCBN
dWx0aUdhbWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7Cisg
ICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkgJiYgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKwor
ICAgIEFTU0VSVChpbmRleCA8PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKworICAgIGlmIChp
bmRleCA9PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtX2dhbWVwYWRWZWN0b3Iu
cmVzaXplKGluZGV4ICsgMSk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgTXVsdGlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQm
IGdhbWVwYWQsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQorewor
ICAgIGF1dG8gaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBM
T0coR2FtZXBhZCwgIk11bHRpR2FtZXBhZFByb3ZpZGVyIGFkZGluZyBuZXcgcGxhdGZvcm0gZ2Ft
ZXBhZCB0byBpbmRleCAlaSBmcm9tIGEgJXMgc291cmNlIiwgaW5kZXgsIGdhbWVwYWQuc291cmNl
KCkpOworCisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPiBpbmRleCk7CisKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fZ2FtZXBhZE1hcC5zZXQoJmdhbWVwYWQsIFdURjo6bWFrZVVu
aXF1ZTxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPihpbmRleCwgJmdhbWVwYWQpKTsKKyAgICBBU1NF
UlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCpt
X2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworfQorCit2b2lkIE11bHRp
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1l
cGFkJiBnYW1lcGFkKQoreworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIg
ZGlzY29ubmVjdGluZyBnYW1lcGFkIGZyb20gYSAlcyBzb3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgp
KTsKKworICAgIGF1dG8gZ2FtZXBhZFdyYXBwZXIgPSBtX2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBh
ZCk7CisKKyAgICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXIpOworICAgIEFTU0VSVChnYW1lcGFkV3Jh
cHBlci0+aW5kZXgoKSA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworICAgIEFTU0VSVChtX2dh
bWVwYWRWZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4KCldID09IGdhbWVwYWRXcmFwcGVyLmdl
dCgpKTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPSBu
dWxscHRyOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNs
aWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpnYW1lcGFkV3JhcHBlcik7Cit9CisK
K3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
RXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgaWYgKGV2
ZW50VmlzaWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAg
IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmls
ZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShldmVudFZpc2li
aWxpdHkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5
OWE0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE11bHRpcGxleCB0aGUgSElEIGFuZCBH
YW1lQ29udHJvbGxlciBnYW1lcGFkIHByb3ZpZGVycyBvbiBNYWMuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MzE5MjUzMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQxMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRH
YW1lcGFkUHJvdmlkZXIpOgorCiAyMDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZ2dyZXNzaXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJh
bWV3b3JrIGdhbWVwYWQgcHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5k
ZXggYWIyYzdmYjg4ZDMuLjE5NGFhMzU2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L011bHRpR2FtZXBhZFByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC01Myw3ICs1NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250
cm9sbGVyRnJhbWV3b3JrKQogICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3Zp
ZGVyKEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxz
ZQotICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQ
cm92aWRlcjo6c2luZ2xldG9uKCkpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJl
ZFByb3ZpZGVyKE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403872</attachid>
            <date>2020-07-09 09:05:53 -0700</date>
            <delta_ts>2020-07-09 09:30:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30553</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLmZiNjE0OGY5YzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAt
NTYsNiArNTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250
cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISURE
ZXZpY2UoSU9ISUREZXZpY2VSZWYpOworCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2liaWxl
R2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVf
cHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1l
cGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li4yZmNlMDE2YzgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0yOSwxMiArMjksMTQgQEAKICNp
ZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCi0j
aW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlk
ZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPEdhbWVDb250cm9sbGVy
L0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxJT0tpdC9oaWQvSU9ISURTZXJ2aWNlQ2xpZW50
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2ltcG9ydCAiR2FtZUNvbnRy
b2xsZXJTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBT
ZWNvbmRzIGlucHV0Tm90aWZpY2F0aW9uRGVsYXkgeyAxNl9tcyB9OwpAQCAtMTk1LDYgKzE5Nyw1
MCBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlv
blRpbWVyRmlyZWQoKQogICAgIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgp
OwogfQogCitib29sIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElE
RGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKK3sKKyAgICBpZiAoIWlzR2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBkZXZpY2VTZXJ2aWNlID0gSU9ISUREZXZpY2VHZXRTZXJ2aWNlKGRldmljZSk7CisgICAgaWYg
KCFkZXZpY2VTZXJ2aWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0
aGUgc2VydmljZSBkaXJlY3RseSBiYWNraW5nIHRoaXMgZGV2aWNlCisgICAgdWludDY0X3QgcmVn
aXN0cnlJRDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGRldmlj
ZVNlcnZpY2UsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRT
eXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOworICAgIElPSElERXZlbnRTeXN0ZW1DbGllbnRT
ZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgbnVsbHB0cik7CisgICAgYXV0byBz
ZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VG
b3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlEKSk7CisgICAg
aWYgKHNlcnZpY2VDbGllbnQpIHsKKyAgICAgICAgaWYgKENvbnRyb2xsZXJDbGFzc0ZvclNlcnZp
Y2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0cyBncmFuZGNoaWxkIHNlcnZpY2UKKyAgICBp
b19yZWdpc3RyeV9lbnRyeV90IGNoaWxkOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGls
ZEVudHJ5KGRldmljZVNlcnZpY2UsIGtJT1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NV
Q0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoaWxkKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShjaGls
ZCwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQoY2hpbGQsICZyZWdpc3RyeUlE
KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNlcnZpY2VD
bGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lz
dHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsKKyAgICBpZiAoIXNl
cnZpY2VDbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBDb250cm9s
bGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEku
aAppbmRleCAxOGY4ZTc1YjdiNS4uZmU5ODBmN2IzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAg
LTI2LDkgKzI2LDIzIEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQog
CiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvSU9LaXRTUEkuaD4KIAogQGludGVyZmFjZSBHQ0NvbnRyb2xsZXIgKCkKICsgKHZv
aWQpX19vcGVuWFBDX2FuZF9DQkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlX187CiBAZW5kCiAK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCitXVEZfRVhURVJOX0NfQkVHSU4KKyNpbXBv
cnQgPEdhbWVDb250cm9sbGVyL0dDVXRpbGl0eS5oPgorV1RGX0VYVEVSTl9DX0VORAorCisjZWxz
ZQorCitXVEZfRVhURVJOX0NfQkVHSU4KK0NsYXNzIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uo
SU9ISURTZXJ2aWNlQ2xpZW50UmVmKTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaAppbmRleCAxMDE4M2JmYzE3NS4u
NTRhYTYxYzgzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zMyw2ICszMyw4
IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xs
ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiAK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBD
b250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBz
ZXJ2aWNlKSwgKHNlcnZpY2UpKQorCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hF
QURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVjdE5vdGlm
aWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVB
REVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25uZWN0Tm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KaW5k
ZXggYzEwNzBjNDE5NmIuLmZmYmZlM2Q2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5r
Lm1tCkBAIC0zMyw2ICszMyw4IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgR2FtZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05B
TChXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyKQogCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNsYXNz
Rm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChzZXJ2
aWNlKSkKKwogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
R2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3Ry
aW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBH
YW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZC5oCmluZGV4IGEyNTIzNGZiODc1Li4xNjQxZjQwNTJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMTIxLDYgKzEy
MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQogICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZhbHVlczsg
fQogCisgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkhJRCJf
czsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEVsZW1lbnRzKCk7CiAgICAgdm9pZCBpbml0
RWxlbWVudHNGcm9tQXJyYXkoQ0ZBcnJheVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAw
YjYzMjI1YzA3Yy4uNWFmNTk1OThiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9y
dCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIkdhbWVwYWRQcm92
aWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1HYW1l
cGFkLmgiCkBAIC0xNzgsNiArMTc5LDEyIEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogCiB2b2lk
IEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQog
eworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoZGV2aWNlKSkg
eworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3aWxsIGhh
bmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgaWdub3JpbmcgaXQi
LCBkZXZpY2UpOworICAgICAgICBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLmFkZChk
ZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRN
YXAuZ2V0KGRldmljZSkpOwogCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIg
ZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKQEAgLTIwMSwxNiArMjA4LDI4IEBAIHZvaWQgSElE
R2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAg
ICAgICAgICBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogICAgIH0KIAorICAgIGF1dG8gZXZlbnRWaXNpYmlsaXR5ID0gbV9pbml0aWFsR2FtZXBhZHND
b25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2Ft
ZXBhZHNWaXNpYmxlOjpObzsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3Rvcltp
bmRleF0sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlz
aWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm8pOworICAgICAgICBjbGll
bnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZl
bnRWaXNpYmlsaXR5KTsKKworICAgIC8vIElmIHdlIGFyZSB3b3JraW5nIHRvZ2V0aGVyIHdpdGgg
dGhlIEdhbWVDb250cm9sbGVyIHByb3ZpZGVyLCBsZXQgaXQga25vdworICAgIC8vIHRoYXQgZ2Ft
ZXBhZHMgc2hvdWxkIG5vdyBiZSB2aXNpYmxlLgorICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJv
bGxlckZyYW1ld29ya0RldmljZXMgJiYgZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1l
cGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CiB9CiAKIHZvaWQg
SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRldmljZSkK
IHsKLSAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3Zl
ZCIsIGRldmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVtb3ZlZEdh
bWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlbW92
ZWRHYW1lcGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdhbWVwYWQpIHsKKyAgICAgICAgYXV0byB0
YWtlbiA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMudGFrZShkZXZpY2UpOworICAg
ICAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7CisgICAgICAgIExPRyhHYW1lcGFkLCAi
SElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGlj
aCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2
aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhHYW1lcGFkLCAiSElER2Ft
ZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKIAogICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERp
c2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAtMjQ5LDcgKzI2OCw4IEBAIHZvaWQgSElE
R2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogc3RkOjp1bmlx
dWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRl
dmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJl
c3VsdCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBpID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQocmVzdWx0LmdldCgpKTsKICAgICBpZiAoaSAh
PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJiNTRlZTU2MWIuLmZiNDQzOGFlMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1l
cGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5nZWQoSU9I
SURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2
aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzID0gdHJ1ZTsg
fQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSwxMCArNzMs
MTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRW
ZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4gbV9nYW1l
Q29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJS
ZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2Vz
IHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXI7
CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJmY2VlNTJjYmIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAi
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11bHRpR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdh
bWVwYWRQcm92aWRlciwgcHVibGljIEdhbWVwYWRQcm92aWRlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+TXVsdGlHYW1lcGFkUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgTXVsdGlHYW1lcGFkUHJvdmlkZXImIHNpbmdsZXRvbigpOworCisg
ICAgLy8gR2FtZXBhZFByb3ZpZGVyCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhH
YW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29uc3QgVmVjdG9yPFBs
YXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyByZXR1cm4gbV9nYW1l
cGFkVmVjdG9yOyB9CisgICAgYm9vbCBpc01vY2tHYW1lcGFkUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyQ2xpZW50CisgICAgdm9pZCBw
bGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiwgRXZlbnRNYWtlc0dhbWVw
YWRzVmlzaWJsZSkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
UGxhdGZvcm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJbnB1dEFj
dGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworCitwcm90ZWN0ZWQ6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZp
dHkoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2
aWNlKCk7CisKKyAgICBib29sIG1fc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSB7IGZhbHNlIH07
CisgICAgc2l6ZV90IG1faW5pdGlhbEdhbWVwYWRzQ291bnQgeyAwIH07CisgICAgVmVjdG9yPFBs
YXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKKworICAgIGNsYXNzIFBsYXRmb3JtR2Ft
ZXBhZFdyYXBwZXIgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIodW5zaWduZWQgaW5kZXgsIFBsYXRmb3JtR2FtZXBh
ZCogd3JhcHBlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQorICAgICAg
ICAgICAgLCBtX3BsYXRmb3JtR2FtZXBhZCh3cmFwcGVkKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2lkID0gd3JhcHBlZC0+aWQoKTsKKyAgICAgICAgICAgIG1fbWFwcGluZyA9IHdyYXBwZWQt
Pm1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1fY29ubmVjdFRpbWUgPSB3cmFwcGVkLT5jb25uZWN0
VGltZSgpOworICAgICAgICB9CisKKyAgICAgICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGlt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5sYXN0VXBkYXRlVGlt
ZSgpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmF4aXNWYWx1ZXMoKTsgfQorICAgICAg
ICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmJ1dHRvblZhbHVlcygpOyB9CisKKyAgICAgICAgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPnNv
dXJjZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWQqIG1fcGxh
dGZvcm1HYW1lcGFkOworICAgIH07CisgICAgSGFzaE1hcDxQbGF0Zm9ybUdhbWVwYWQqLCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4+IG1fZ2FtZXBhZE1hcDsKKyAgICBi
b29sIG1faGlkSW1wb3J0Q29tcGxldGUgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBh
ZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlH
YW1lcGFkUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjMwZTIxYjE1ZjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTAsMCArMSwxMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBv
cnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJISURHYW1lcGFk
UHJvdmlkZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtR2FtZXBh
ZC5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIHNpemVfdCBudW1iZXJPZkdhbWVwYWRQcm92aWRlcnMgPSAyOworCitNdWx0
aUdhbWVwYWRQcm92aWRlciYgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE11bHRpR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92
aWRlcjsKKyAgICByZXR1cm4gc2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFk
UHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYg
Y2xpZW50KQoreworICAgIGJvb2wgbW9uaXRvck90aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLmlz
RW1wdHkoKTsKKworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAg
ICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworCisgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5pZ25vcmVHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMoKTsKKyAgICBHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkucHJld2FybUdhbWVDb250cm9s
bGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAobW9uaXRvck90aGVyUHJvdmlkZXJz
KSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9y
aW5nR2FtZXBhZHMoKnRoaXMpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30K
Kwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1l
cGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRh
aW5zKCZjbGllbnQpKTsKKworICAgIGJvb2wgc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3Zp
ZGVycyA9IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCkgJiYgbV9jbGllbnRzLmlzRW1wdHkoKTsK
KworICAgIGlmIChzaG91bGRTdG9wTW9uaXRvcmluZ090aGVyUHJvdmlkZXJzKSB7CisgICAgICAg
IEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygq
dGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIE11
bHRpR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKK3sKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgbV9nYW1lcGFkVmVjdG9y
LnNpemUoKSAmJiBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdKQorICAgICAgICArK2luZGV4OworCisg
ICAgQVNTRVJUKGluZGV4IDw9IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworCisgICAgaWYgKGlu
ZGV4ID09IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5y
ZXNpemUoaW5kZXggKyAxKTsKKworICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBNdWx0aUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYg
Z2FtZXBhZCwgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7Cisg
ICAgYXV0byBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIExP
RyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgYWRkaW5nIG5ldyBwbGF0Zm9ybSBnYW1l
cGFkIHRvIGluZGV4ICVpIGZyb20gYSAlcyBzb3VyY2UiLCBpbmRleCwgZ2FtZXBhZC5zb3VyY2Uo
KSk7CisKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA+IGluZGV4KTsKKworICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9nYW1lcGFkTWFwLnNldCgmZ2FtZXBhZCwgV1RGOjptYWtlVW5p
cXVlPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+KGluZGV4LCAmZ2FtZXBhZCkpOworICAgIEFTU0VS
VChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSA9IGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1f
Z2FtZXBhZFZlY3RvcltpbmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK3ZvaWQgTXVsdGlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVw
YWQmIGdhbWVwYWQpCit7CisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBk
aXNjb25uZWN0aW5nIGdhbWVwYWQgZnJvbSBhICVzIHNvdXJjZSIsIGdhbWVwYWQuc291cmNlKCkp
OworCisgICAgYXV0byBnYW1lcGFkV3JhcHBlciA9IG1fZ2FtZXBhZE1hcC50YWtlKCZnYW1lcGFk
KTsKKworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlcik7CisgICAgQVNTRVJUKGdhbWVwYWRXcmFw
cGVyLT5pbmRleCgpIDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSk7CisgICAgQVNTRVJUKG1fZ2Ft
ZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPT0gZ2FtZXBhZFdyYXBwZXIuZ2V0
KCkpOworCisgICAgbV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9IG51
bGxwdHI7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKmdhbWVwYWRXcmFwcGVyKTsKK30KKwor
dm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShF
dmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJpbGl0eSkKK3sKKyAgICBpZiAoZXZl
bnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykKKyAgICAgICAg
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxl
R2FtZXBhZHNWaXNpYmxlKCk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KGV2ZW50VmlzaWJp
bGl0eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShH
QU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzNGRhMTY1YmJmLi5iZjBmYTk5
YTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdh
bWVDb250cm9sbGVyIGdhbWVwYWQgcHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYzMTkyNTMyPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDEyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdh
bWVwYWRQcm92aWRlcik6CisKIDIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEFnZ3Jlc3NpdmVseSBwcmltZSBHYW1lQ29udHJvbGxlci5mcmFt
ZXdvcmsgZ2FtZXBhZCBwcm92aWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQppbmRl
eCBhYjJjN2ZiODhkMy4uMTk0YWEzNTY1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2Eu
bW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL01vY2tHYW1lcGFkUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
TXVsdGlHYW1lcGFkUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKCkKICAgICBpZiAodXNlR2FtZUNvbnRy
b2xsZXJGcmFtZXdvcmspCiAgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlk
ZXIoR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICAgICBlbHNl
Ci0gICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoSElER2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKSk7CisgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVk
UHJvdmlkZXIoTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403877</attachid>
            <date>2020-07-09 09:30:44 -0700</date>
            <delta_ts>2020-07-09 09:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30792</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLmZiNjE0OGY5YzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAt
NTYsNiArNTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250
cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISURE
ZXZpY2UoSU9ISUREZXZpY2VSZWYpOworCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2liaWxl
R2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVf
cHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1l
cGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li4xMzEwYjIwZTZlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0yOSwxMiArMjksMTQgQEAKICNp
ZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCi0j
aW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlk
ZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPEdhbWVDb250cm9sbGVy
L0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJT
b2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRz
IGlucHV0Tm90aWZpY2F0aW9uRGVsYXkgeyAxNl9tcyB9OwpAQCAtMTk1LDYgKzE5Nyw1MCBAQCB2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVy
RmlyZWQoKQogICAgIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOwogfQog
Citib29sIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElERGV2aWNl
KElPSElERGV2aWNlUmVmIGRldmljZSkKK3sKKyAgICBpZiAoIWlzR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBkZXZp
Y2VTZXJ2aWNlID0gSU9ISUREZXZpY2VHZXRTZXJ2aWNlKGRldmljZSk7CisgICAgaWYgKCFkZXZp
Y2VTZXJ2aWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUgc2Vy
dmljZSBkaXJlY3RseSBiYWNraW5nIHRoaXMgZGV2aWNlCisgICAgdWludDY0X3QgcmVnaXN0cnlJ
RDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGRldmljZVNlcnZp
Y2UsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1D
bGllbnRDcmVhdGUobnVsbHB0cikpOworICAgIElPSElERXZlbnRTeXN0ZW1DbGllbnRTZXRNYXRj
aGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgbnVsbHB0cik7CisgICAgYXV0byBzZXJ2aWNl
Q2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdp
c3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlEKSk7CisgICAgaWYgKHNl
cnZpY2VDbGllbnQpIHsKKyAgICAgICAgaWYgKENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2Vy
dmljZUNsaWVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0cyBncmFuZGNoaWxkIHNlcnZpY2UKKyAgICBpb19yZWdp
c3RyeV9lbnRyeV90IGNoaWxkOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5
KGRldmljZVNlcnZpY2UsIGtJT1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1Mp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShjaGlsZCwga0lP
U2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghY2hpbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJ
T1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQoY2hpbGQsICZyZWdpc3RyeUlEKSAhPSBL
RVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNlcnZpY2VDbGllbnQg
PSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQo
ZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsKKyAgICBpZiAoIXNlcnZpY2VD
bGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBDb250cm9sbGVyQ2xh
c3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRl
eCAxOGY4ZTc1YjdiNS4uY2JlYjNjMjg3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTI2LDkg
KzI2LDIzIEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQogCiAjaW1w
b3J0IDxHYW1lQ29udHJvbGxlci9HQ0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPElPS2l0L2hpZHN5
c3RlbS9JT0hJRFNlcnZpY2VDbGllbnQuaD4KIAogQGludGVyZmFjZSBHQ0NvbnRyb2xsZXIgKCkK
ICsgKHZvaWQpX19vcGVuWFBDX2FuZF9DQkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlX187CiBA
ZW5kCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCitXVEZfRVhURVJOX0NfQkVHSU4K
KyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dDVXRpbGl0eS5oPgorV1RGX0VYVEVSTl9DX0VORAor
CisjZWxzZQorCitXVEZfRVhURVJOX0NfQkVHSU4KK0NsYXNzIENvbnRyb2xsZXJDbGFzc0ZvclNl
cnZpY2UoSU9ISURTZXJ2aWNlQ2xpZW50UmVmKTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlm
IC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYm
IFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaAppbmRleCAxMDE4M2Jm
YzE3NS4uNTRhYTYxYzgzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zMyw2
ICszMyw4IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNv
bnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJDb3JlLCBHQ0NvbnRyb2xs
ZXIpCiAKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9s
bGVyLCBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVu
dFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2UpKQorCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVj
dE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9G
T1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25u
ZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsu
bW0KaW5kZXggYzEwNzBjNDE5NmIuLmZmYmZlM2Q2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLm1tCkBAIC0zMyw2ICszMyw4IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9P
UFRJT05BTChXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyKQogCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxl
ckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSks
IChzZXJ2aWNlKSkKKwogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24s
IE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJD
b3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZC5oCmluZGV4IGEyNTIzNGZiODc1Li4xNjQxZjQwNTJmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMTIx
LDYgKzEyMSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQogICAgIGNvbnN0IFZlY3Rv
cjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZh
bHVlczsgfQogCisgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkhJRCJfczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEVsZW1lbnRzKCk7CiAgICAgdm9p
ZCBpbml0RWxlbWVudHNGcm9tQXJyYXkoQ0ZBcnJheVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApp
bmRleCAwYjYzMjI1YzA3Yy4uNWFmNTk1OThiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAor
I2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIkdhbWVw
YWRQcm92aWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZv
cm1HYW1lcGFkLmgiCkBAIC0xNzgsNiArMTc5LDEyIEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVy
OjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQog
CiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogeworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMg
JiYgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoZGV2
aWNlKSkgeworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3
aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgaWdub3Jp
bmcgaXQiLCBkZXZpY2UpOworICAgICAgICBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRz
LmFkZChkZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2dh
bWVwYWRNYXAuZ2V0KGRldmljZSkpOwogCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJv
dmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKQEAgLTIwMSwxNiArMjA4LDI4IEBAIHZv
aWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2Up
CiAgICAgICAgICAgICBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOwogICAgIH0KIAorICAgIGF1dG8gZXZlbnRWaXNpYmlsaXR5ID0gbV9pbml0aWFsR2Ft
ZXBhZHNDb25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1h
a2VzR2FtZXBhZHNWaXNpYmxlOjpObzsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZl
Y3RvcltpbmRleF0sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVw
YWRzVmlzaWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm8pOworICAgICAg
ICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4
XSwgZXZlbnRWaXNpYmlsaXR5KTsKKworICAgIC8vIElmIHdlIGFyZSB3b3JraW5nIHRvZ2V0aGVy
IHdpdGggdGhlIEdhbWVDb250cm9sbGVyIHByb3ZpZGVyLCBsZXQgaXQga25vdworICAgIC8vIHRo
YXQgZ2FtZXBhZHMgc2hvdWxkIG5vdyBiZSB2aXNpYmxlLgorICAgIGlmIChtX2lnbm9yZXNHYW1l
Q29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CiB9CiAK
IHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRl
dmljZSkKIHsKLSAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAg
cmVtb3ZlZCIsIGRldmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVt
b3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7Ci0gICAgQVNTRVJU
KHJlbW92ZWRHYW1lcGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdhbWVwYWQpIHsKKyAgICAgICAg
YXV0byB0YWtlbiA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMudGFrZShkZXZpY2Up
OworICAgICAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7CisgICAgICAgIExPRyhHYW1l
cGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92YWwgb2YgZGV2aWNlICVw
LCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yay4gSWdub3Jpbmcu
IiwgZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhHYW1lcGFkLCAi
SElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKIAogICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2Ft
ZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAtMjQ5LDcgKzI2OCw4IEBAIHZv
aWQgSElER2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogc3Rk
Ojp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEhJREdhbWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7Ci0gICAgQVNT
RVJUKHJlc3VsdCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYXV0byBpID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQocmVzdWx0LmdldCgpKTsKICAgICBp
ZiAoaSAhPSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJiNTRlZTU2MWIuLmZiNDQz
OGFlMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5n
ZWQoSU9ISURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3
b3JrRGV2aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzID0g
dHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSwx
MCArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dh
bWVwYWRWZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRy
PEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4g
bV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1h
bmFnZXJSZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtE
ZXZpY2VzIHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVk
VGltZXI7CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3Zp
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiODEyYWIwNzVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
TXVsdGlHYW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW5j
bHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11bHRpR2FtZXBhZFByb3ZpZGVyIDogcHVi
bGljIEdhbWVwYWRQcm92aWRlciwgcHVibGljIEdhbWVwYWRQcm92aWRlckNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+TXVsdGlHYW1lcGFkUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTXVsdGlHYW1lcGFkUHJvdmlkZXImIHNpbmdsZXRvbigp
OworCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1l
cGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9y
aW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29uc3QgVmVj
dG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyByZXR1cm4g
bV9nYW1lcGFkVmVjdG9yOyB9CisgICAgYm9vbCBpc01vY2tHYW1lcGFkUHJvdmlkZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyQ2xpZW50CisgICAg
dm9pZCBwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiwgRXZlbnRNYWtl
c0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25u
ZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJ
bnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworCitwcm90ZWN0
ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0
QWN0aXZpdHkoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVj
dGVkRGV2aWNlKCk7CisKKyAgICBib29sIG1fc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSB7IGZh
bHNlIH07CisgICAgc2l6ZV90IG1faW5pdGlhbEdhbWVwYWRzQ291bnQgeyAwIH07CisgICAgVmVj
dG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKKworICAgIC8vIFdlIGNyZWF0
ZSBvdXIgb3duIEdhbWVwYWQgdHlwZSAtIHRvIHdyYXAgYm90aCBISUQgYW5kIEdhbWVDb250cm9s
ZXIgZ2FtZXBhZHMgLQorICAgIC8vIGJlY2F1c2UgTXVsdGlHYW1lcGFkUHJvdmlkZXIgbmVlZHMg
dG8gbWFuYWdlIHRoZSBpbmRleGVzIG9mIGl0cyBvd24gZ2FtZXBhZHMKKyAgICAvLyBubyBtYXR0
ZXIgd2hhdCB0aGUgSElEIG9yIEdhbWVDb250cm9sbGVyIGluZGV4IGlzLgorICAgIGNsYXNzIFBs
YXRmb3JtR2FtZXBhZFdyYXBwZXIgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIodW5zaWduZWQgaW5kZXgsIFBsYXRm
b3JtR2FtZXBhZCogd3JhcHBlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4
KQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtR2FtZXBhZCh3cmFwcGVkKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2lkID0gd3JhcHBlZC0+aWQoKTsKKyAgICAgICAgICAgIG1fbWFwcGluZyA9
IHdyYXBwZWQtPm1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1fY29ubmVjdFRpbWUgPSB3cmFwcGVk
LT5jb25uZWN0VGltZSgpOworICAgICAgICB9CisKKyAgICAgICAgTW9ub3RvbmljVGltZSBsYXN0
VXBkYXRlVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5sYXN0
VXBkYXRlVGltZSgpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmF4aXNWYWx1ZXMoKTsg
fQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmJ1dHRvblZhbHVlcygpOyB9CisKKyAgICAg
ICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdh
bWVwYWQtPnNvdXJjZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQbGF0Zm9ybUdhbWVw
YWQqIG1fcGxhdGZvcm1HYW1lcGFkOworICAgIH07CisKKyAgICBIYXNoTWFwPFBsYXRmb3JtR2Ft
ZXBhZCosIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPj4gbV9nYW1lcGFk
TWFwOworICAgIGJvb2wgbV9oaWRJbXBvcnRDb21wbGV0ZSB7IGZhbHNlIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
TXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMzBlMjFiMTVmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsx
LDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdWx0
aUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1B
QykKKworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQg
IkhJREdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUGxh
dGZvcm1HYW1lcGFkLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgc2l6ZV90IG51bWJlck9mR2FtZXBhZFByb3ZpZGVycyA9
IDI7CisKK011bHRpR2FtZXBhZFByb3ZpZGVyJiBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXVsdGlHYW1lcGFkUHJvdmlkZXI+
IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92aWRlcjsKK30KKwordm9pZCBN
dWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3Zp
ZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBtb25pdG9yT3RoZXJQcm92aWRlcnMgPSBt
X2NsaWVudHMuaXNFbXB0eSgpOworCisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAgICBISURHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpLmlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcygp
OworICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKKworICAgIGlmIChtb25pdG9yT3Ro
ZXJQcm92aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5z
dGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7
CisgICAgfQorfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dh
bWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRTdG9wTW9uaXRvcmlu
Z090aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAmJiBtX2NsaWVudHMu
aXNFbXB0eSgpOworCisgICAgaWYgKHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMp
IHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmlu
Z0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30KKwor
dW5zaWduZWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZp
Y2UoKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dh
bWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsr
aW5kZXg7CisKKyAgICBBU1NFUlQoaW5kZXggPD0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSk7CisK
KyAgICBpZiAoaW5kZXggPT0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSkKKyAgICAgICAgbV9nYW1l
cGFkVmVjdG9yLnJlc2l6ZShpbmRleCArIDEpOworCisgICAgcmV0dXJuIGluZGV4OworfQorCit2
b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZv
cm1HYW1lcGFkJiBnYW1lcGFkLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJp
bGl0eSkKK3sKKyAgICBhdXRvIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgp
OworCisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBhZGRpbmcgbmV3IHBs
YXRmb3JtIGdhbWVwYWQgdG8gaW5kZXggJWkgZnJvbSBhICVzIHNvdXJjZSIsIGluZGV4LCBnYW1l
cGFkLnNvdXJjZSgpKTsKKworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpID4gaW5k
ZXgpOworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dhbWVwYWRNYXAuc2V0KCZnYW1lcGFkLCBX
VEY6Om1ha2VVbmlxdWU8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4oaW5kZXgsICZnYW1lcGFkKSk7
CisgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBtX2dhbWVwYWRWZWN0b3Jb
aW5kZXhdID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKworICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENv
bm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsKK30KKwor
dm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBs
YXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIk11bHRpR2FtZXBh
ZFByb3ZpZGVyIGRpc2Nvbm5lY3RpbmcgZ2FtZXBhZCBmcm9tIGEgJXMgc291cmNlIiwgZ2FtZXBh
ZC5zb3VyY2UoKSk7CisKKyAgICBhdXRvIGdhbWVwYWRXcmFwcGVyID0gbV9nYW1lcGFkTWFwLnRh
a2UoJmdhbWVwYWQpOworCisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyKTsKKyAgICBBU1NFUlQo
Z2FtZXBhZFdyYXBwZXItPmluZGV4KCkgPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKyAgICBB
U1NFUlQobV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9PSBnYW1lcGFk
V3JhcHBlci5nZXQoKSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmlu
ZGV4KCldID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQor
ICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqZ2FtZXBhZFdyYXBw
ZXIpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1
dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQorewor
ICAgIGlmIChldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVz
KQorICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFr
ZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDog
bV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
ZXZlbnRWaXNpYmlsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzM0ZGExNjVi
YmYuLmJmMGZhOTlhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTA4ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZXggdGhl
IEhJRCBhbmQgR2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBwcm92aWRlcnMgb24gTWFjLgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0MTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRl
ckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1T
ZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250
cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNv
Y29hLm1tCmluZGV4IGFiMmM3ZmI4OGQzLi4xOTRhYTM1NjU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJv
dmlkZXJDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ISURHYW1lcGFkUHJv
dmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9NdWx0aUdhbWVwYWRQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNyArNTQsNyBAQCB2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogICAgIGlmICh1
c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKICAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRT
aGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkp
OwogICAgIGVsc2UKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihI
SURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAgR2FtZXBhZFByb3ZpZGVy
OjpzZXRTaGFyZWRQcm92aWRlcihNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwog
I2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403878</attachid>
            <date>2020-07-09 09:52:39 -0700</date>
            <delta_ts>2020-07-09 10:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30793</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLmU1MDM1NDkyMGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAg
LTU2LDYgKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdhbWVwYWRIYWRJbnB1dChHYW1lQ29u
dHJvbGxlckdhbWVwYWQmLCBib29sIGhhZEJ1dHRvblByZXNzZXMpOwogICAgIHZvaWQgcHJld2Fy
bUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7CiAKKyAgICB2b2lkIG1ha2VJbnZp
c2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyAgICBzdGF0aWMgYm9vbCB3aWxsSGFuZGxlSElE
RGV2aWNlKElPSElERGV2aWNlUmVmKTsKKwogcHJpdmF0ZToKICAgICBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcigpOwogCkBAIC03MSw4ICs3Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBtYWtlSW52aXNpYmls
ZUdhbWVwYWRzVmlzaWJsZSgpOwotCiAgICAgSGFzaE1hcDxDRlR5cGVSZWYsIHN0ZDo6dW5pcXVl
X3B0cjxHYW1lQ29udHJvbGxlckdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CiAgICAgVmVjdG9yPFBs
YXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoU2V0PFBsYXRmb3JtR2Ft
ZXBhZCo+IG1faW52aXNpYmxlR2FtZXBhZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQppbmRleCBiYjQxMmY5MTg5NS4uMTMxMGIyMGU2ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMjksMTIgKzI5LDE0IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgot
I2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3Zp
ZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxl
ci9HYW1lQ29udHJvbGxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgog
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVy
U29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25k
cyBpbnB1dE5vdGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTcsNTAgQEAg
dm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1l
ckZpcmVkKCkKICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKIH0K
IAorYm9vbCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRsZUhJRERldmlj
ZShJT0hJRERldmljZVJlZiBkZXZpY2UpCit7CisgICAgaWYgKCFpc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGV2
aWNlU2VydmljZSA9IElPSElERGV2aWNlR2V0U2VydmljZShkZXZpY2UpOworICAgIGlmICghZGV2
aWNlU2VydmljZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHNl
cnZpY2UgZGlyZWN0bHkgYmFja2luZyB0aGlzIGRldmljZQorICAgIHVpbnQ2NF90IHJlZ2lzdHJ5
SUQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChkZXZpY2VTZXJ2
aWNlLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGV2ZW50U3lzdGVtQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVt
Q2xpZW50Q3JlYXRlKG51bGxwdHIpKTsKKyAgICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0
Y2hpbmcoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIG51bGxwdHIpOworICAgIGF1dG8gc2Vydmlj
ZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVn
aXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlmIChz
ZXJ2aWNlQ2xpZW50KSB7CisgICAgICAgIGlmIChDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNl
cnZpY2VDbGllbnQuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpdHMgZ3JhbmRjaGlsZCBzZXJ2aWNlCisgICAgaW9fcmVn
aXN0cnlfZW50cnlfdCBjaGlsZDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRy
eShkZXZpY2VTZXJ2aWNlLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNT
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldENoaWxkRW50cnkoY2hpbGQsIGtJ
T1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
SU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGNoaWxkLCAmcmVnaXN0cnlJRCkgIT0g
S0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzZXJ2aWNlQ2xpZW50
ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlE
KGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlEKSk7CisgICAgaWYgKCFzZXJ2aWNl
Q2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQ29udHJvbGxlckNs
YXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKaW5k
ZXggMThmOGU3NWI3YjUuLmNiZWIzYzI4NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCkBAIC0yNiw5
ICsyNiwyMyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKIAogI2lt
cG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NDb250cm9sbGVyLmg+CisjaW1wb3J0IDxJT0tpdC9oaWRz
eXN0ZW0vSU9ISURTZXJ2aWNlQ2xpZW50Lmg+CiAKIEBpbnRlcmZhY2UgR0NDb250cm9sbGVyICgp
CiArICh2b2lkKV9fb3BlblhQQ19hbmRfQ0JBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV9fOwog
QGVuZAogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworV1RGX0VYVEVSTl9DX0JFR0lO
CisjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxpdHkuaD4KK1dURl9FWFRFUk5fQ19FTkQK
KworI2Vsc2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitDbGFzcyBDb250cm9sbGVyQ2xhc3NGb3JT
ZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZik7CitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRp
ZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAm
JiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKaW5kZXggMTAxODNi
ZmMxNzUuLjU0YWE2MWM4MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaApAQCAtMzMs
NiArMzMsOCBAQAogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVD
b250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViQ29yZSwgR0NDb250cm9s
bGVyKQogCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJv
bGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGll
bnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkKKwogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
X0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5l
Y3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29u
bmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5r
Lm1tCmluZGV4IGMxMDcwYzQxOTZiLi5mZmJmZTNkNjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJT
b2Z0TGluay5tbQpAQCAtMzMsNiArMzMsOCBAQAogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09V
UkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0Vf
T1BUSU9OQUwoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlcikKIAorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRyb2xs
ZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2Up
LCAoc2VydmljZSkpCisKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdl
YkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9u
LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWQuaAppbmRleCBhMjUyMzRmYjg3NS4uMTY0MWY0MDUyZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKQEAgLTEy
MSw2ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBjb25zdCBWZWN0
b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25W
YWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJISUQiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRFbGVtZW50cygpOwogICAgIHZv
aWQgaW5pdEVsZW1lbnRzRnJvbUFycmF5KENGQXJyYXlSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAK
aW5kZXggMGI2MzIyNWMwN2MuLjVhZjU5NTk4YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAK
KyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJHYW1l
cGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtR2FtZXBhZC5oIgpAQCAtMTc4LDYgKzE3OSwxMiBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRl
cjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkK
IAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRl
dmljZSkKIHsKKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2Vz
ICYmIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElERGV2aWNlKGRl
dmljZSkpIHsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsg
d2lsbCBoYW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVyIGlnbm9y
aW5nIGl0IiwgZGV2aWNlKTsKKyAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFk
cy5hZGQoZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVCghbV9n
YW1lcGFkTWFwLmdldChkZXZpY2UpKTsKIAogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFBy
b3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CkBAIC0yMDEsMTYgKzIwOCwyOCBAQCB2
b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNl
KQogICAgICAgICAgICAgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKICAgICB9CiAKKyAgICBhdXRvIGV2ZW50VmlzaWJpbGl0eSA9IG1faW5pdGlhbEdh
bWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZlbnRN
YWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm87CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRW
ZWN0b3JbaW5kZXhdLCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1l
cGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vKTsKKyAgICAg
ICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRl
eF0sIGV2ZW50VmlzaWJpbGl0eSk7CisKKyAgICAvLyBJZiB3ZSBhcmUgd29ya2luZyB0b2dldGhl
ciB3aXRoIHRoZSBHYW1lQ29udHJvbGxlciBwcm92aWRlciwgbGV0IGl0IGtub3cKKyAgICAvLyB0
aGF0IGdhbWVwYWRzIHNob3VsZCBub3cgYmUgdmlzaWJsZS4KKyAgICBpZiAobV9pZ25vcmVzR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIGV2ZW50VmlzaWJpbGl0eSA9PSBFdmVudE1h
a2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwogfQog
CiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZiBk
ZXZpY2UpCiB7Ci0gICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVw
IHJlbW92ZWQiLCBkZXZpY2UpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IHJl
bW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwotICAgIEFTU0VS
VChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICBpZiAoIXJlbW92ZWRHYW1lcGFkKSB7CisgICAgICAg
IGF1dG8gdGFrZW4gPSBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLnRha2UoZGV2aWNl
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4pOworICAgICAgICBMT0coR2Ft
ZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBpbmZvcm1lZCBvZiByZW1vdmFsIG9mIGRldmljZSAl
cCwgd2hpY2ggaXMgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuIElnbm9yaW5n
LiIsIGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coR2FtZXBhZCwg
IkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7CiAKICAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdh
bWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKQEAgLTI0OSw3ICsyNjgsOCBAQCB2
b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKIHN0
ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBISURHYW1lcGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVw
YWRGb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewogICAgIHN0ZDo6dW5pcXVlX3B0
cjxISURHYW1lcGFkPiByZXN1bHQgPSBtX2dhbWVwYWRNYXAudGFrZShkZXZpY2UpOwotICAgIEFT
U0VSVChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQoKSk7CiAgICAg
aWYgKGkgIT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCmluZGV4IDFiYjU0ZWU1NjFiLi5mYjQ0
MzhhZTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAg
IHZvaWQgZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZik7CiAgICAgdm9pZCB2YWx1ZXNDaGFu
Z2VkKElPSElEVmFsdWVSZWYpOwogCisgICAgdm9pZCBpZ25vcmVHYW1lQ29udHJvbGxlckZyYW1l
d29ya0RldmljZXMoKSB7IG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyA9
IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBISURHYW1lcGFkUHJvdmlkZXIoKTsKIApAQCAtNzEs
MTAgKzczLDEyIEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9n
YW1lcGFkVmVjdG9yOwogICAgIEhhc2hNYXA8SU9ISUREZXZpY2VSZWYsIHN0ZDo6dW5pcXVlX3B0
cjxISURHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOworICAgIEhhc2hTZXQ8SU9ISUREZXZpY2VSZWY+
IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHM7CiAKICAgICBSZXRhaW5QdHI8SU9ISURN
YW5hZ2VyUmVmPiBtX21hbmFnZXI7CiAKICAgICBib29sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVj
dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3Jr
RGV2aWNlcyB7IGZhbHNlIH07CiAKICAgICBUaW1lciBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3Rl
ZFRpbWVyOwogICAgIFRpbWVyIG1faW5wdXROb3RpZmljYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjgxMmFiMDc1
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L011bHRpR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKKworI2lu
Y2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdWx0aUdhbWVwYWRQcm92aWRlciA6IHB1
YmxpYyBHYW1lcGFkUHJvdmlkZXIsIHB1YmxpYyBHYW1lcGFkUHJvdmlkZXJDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfk11bHRpR2FtZXBhZFByb3ZpZGVyKCkgPSBkZWZhdWx0OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE11bHRpR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24o
KTsKKworICAgIC8vIEdhbWVwYWRQcm92aWRlcgorICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRv
cmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIGNvbnN0IFZl
Y3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFsIHsgcmV0dXJu
IG1fZ2FtZXBhZFZlY3RvcjsgfQorICAgIGJvb2wgaXNNb2NrR2FtZXBhZFByb3ZpZGVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEdhbWVwYWRQcm92aWRlckNsaWVudAorICAg
IHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYsIEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29u
bmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFk
SW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsKKworcHJvdGVj
dGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1
dEFjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5l
Y3RlZERldmljZSgpOworCisgICAgYm9vbCBtX3Nob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUgeyBm
YWxzZSB9OworICAgIHNpemVfdCBtX2luaXRpYWxHYW1lcGFkc0NvdW50IHsgMCB9OworICAgIFZl
Y3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CisKKyAgICAvLyBXZSBjcmVh
dGUgb3VyIG93biBHYW1lcGFkIHR5cGUgLSB0byB3cmFwIGJvdGggSElEIGFuZCBHYW1lQ29udHJv
bGVyIGdhbWVwYWRzIC0KKyAgICAvLyBiZWNhdXNlIE11bHRpR2FtZXBhZFByb3ZpZGVyIG5lZWRz
IHRvIG1hbmFnZSB0aGUgaW5kZXhlcyBvZiBpdHMgb3duIGdhbWVwYWRzCisgICAgLy8gbm8gbWF0
dGVyIHdoYXQgdGhlIEhJRCBvciBHYW1lQ29udHJvbGxlciBpbmRleCBpcy4KKyAgICBjbGFzcyBQ
bGF0Zm9ybUdhbWVwYWRXcmFwcGVyIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CisgICAgcHVi
bGljOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyKHVuc2lnbmVkIGluZGV4LCBQbGF0
Zm9ybUdhbWVwYWQqIHdyYXBwZWQpCisgICAgICAgICAgICA6IFBsYXRmb3JtR2FtZXBhZChpbmRl
eCkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybUdhbWVwYWQod3JhcHBlZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9pZCA9IHdyYXBwZWQtPmlkKCk7CisgICAgICAgICAgICBtX21hcHBpbmcg
PSB3cmFwcGVkLT5tYXBwaW5nKCk7CisgICAgICAgICAgICBtX2Nvbm5lY3RUaW1lID0gd3JhcHBl
ZC0+Y29ubmVjdFRpbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIE1vbm90b25pY1RpbWUgbGFz
dFVwZGF0ZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+bGFz
dFVwZGF0ZVRpbWUoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5heGlzVmFsdWVzKCk7
IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5idXR0b25WYWx1ZXMoKTsgfQorCisgICAg
ICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1H
YW1lcGFkLT5zb3VyY2UoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGxhdGZvcm1HYW1l
cGFkKiBtX3BsYXRmb3JtR2FtZXBhZDsKKyAgICB9OworCisgICAgSGFzaE1hcDxQbGF0Zm9ybUdh
bWVwYWQqLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4+IG1fZ2FtZXBh
ZE1hcDsKKyAgICBib29sIG1faGlkSW1wb3J0Q29tcGxldGUgeyBmYWxzZSB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L011bHRpR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjMwZTIxYjE1ZjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTAsMCAr
MSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXVs
dGlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShN
QUMpCisKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0
ICJISURHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBs
YXRmb3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHNpemVfdCBudW1iZXJPZkdhbWVwYWRQcm92aWRlcnMg
PSAyOworCitNdWx0aUdhbWVwYWRQcm92aWRlciYgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE11bHRpR2FtZXBhZFByb3ZpZGVy
PiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQg
TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92
aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wgbW9uaXRvck90aGVyUHJvdmlkZXJzID0g
bV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZj
bGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworCisgICAgSElER2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5pZ25vcmVHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMo
KTsKKyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkucHJld2Fy
bUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAobW9uaXRvck90
aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCku
c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgICAgICBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMp
OworICAgIH0KK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdH
YW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9j
bGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKworICAgIGJvb2wgc2hvdWxkU3RvcE1vbml0b3Jp
bmdPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCkgJiYgbV9jbGllbnRz
LmlzRW1wdHkoKTsKKworICAgIGlmIChzaG91bGRTdG9wTW9uaXRvcmluZ090aGVyUHJvdmlkZXJz
KSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3Jp
bmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisK
K3Vuc2lnbmVkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2
aWNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgbV9n
YW1lcGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdKQorICAgICAgICAr
K2luZGV4OworCisgICAgQVNTRVJUKGluZGV4IDw9IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOwor
CisgICAgaWYgKGluZGV4ID09IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpCisgICAgICAgIG1fZ2Ft
ZXBhZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKworICAgIHJldHVybiBpbmRleDsKK30KKwor
dm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRm
b3JtR2FtZXBhZCYgZ2FtZXBhZCwgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2li
aWxpdHkpCit7CisgICAgYXV0byBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2Uo
KTsKKworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgYWRkaW5nIG5ldyBw
bGF0Zm9ybSBnYW1lcGFkIHRvIGluZGV4ICVpIGZyb20gYSAlcyBzb3VyY2UiLCBpbmRleCwgZ2Ft
ZXBhZC5zb3VyY2UoKSk7CisKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA+IGlu
ZGV4KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9nYW1lcGFkTWFwLnNldCgmZ2FtZXBhZCwg
V1RGOjptYWtlVW5pcXVlPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+KGluZGV4LCAmZ2FtZXBhZCkp
OworICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgbV9nYW1lcGFkVmVjdG9y
W2luZGV4XSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRD
b25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7Cit9CisK
K3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQ
bGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVw
YWRQcm92aWRlciBkaXNjb25uZWN0aW5nIGdhbWVwYWQgZnJvbSBhICVzIHNvdXJjZSIsIGdhbWVw
YWQuc291cmNlKCkpOworCisgICAgYXV0byBnYW1lcGFkV3JhcHBlciA9IG1fZ2FtZXBhZE1hcC50
YWtlKCZnYW1lcGFkKTsKKworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlcik7CisgICAgQVNTRVJU
KGdhbWVwYWRXcmFwcGVyLT5pbmRleCgpIDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSk7CisgICAg
QVNTRVJUKG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPT0gZ2FtZXBh
ZFdyYXBwZXIuZ2V0KCkpOworCisgICAgbV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5p
bmRleCgpXSA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKmdhbWVwYWRXcmFw
cGVyKTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5w
dXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJpbGl0eSkKK3sK
KyAgICBpZiAoZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Olll
cykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1h
a2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5
KGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzNGRhMTY1
YmJmLi5iZjBmYTk5YTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNy0wOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTXVsdGlwbGV4IHRo
ZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQgcHJvdmlkZXJzIG9uIE1hYy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlk
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisKIDIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFnZ3Jlc3NpdmVseSBwcmltZSBHYW1lQ29u
dHJvbGxlci5mcmFtZXdvcmsgZ2FtZXBhZCBwcm92aWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJD
b2NvYS5tbQppbmRleCBhYjJjN2ZiODhkMy4uMTk0YWEzNTY1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFBy
b3ZpZGVyQ29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSElER2FtZXBhZFBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vY2tHYW1lcGFkUHJvdmlkZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgdm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKCkKICAgICBpZiAo
dXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCiAgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0
U2hhcmVkUHJvdmlkZXIoR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigp
KTsKICAgICBlbHNlCi0gICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIo
SElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisgICAgICAgIEdhbWVwYWRQcm92aWRl
cjo6c2V0U2hhcmVkUHJvdmlkZXIoTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsK
ICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403888</attachid>
            <date>2020-07-09 10:43:49 -0700</date>
            <delta_ts>2020-07-09 10:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32265</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLmQ1ZjMzY2EyODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTE0OSw2ICsxNDksOCBAQCB2b2lkIElPSElERXZlbnRT
ZXRJbnRlZ2VyVmFsdWUoSU9ISURFdmVudFJlZiwgSU9ISURFdmVudEZpZWxkLCBDRkluZGV4KTsK
IHZvaWQgSU9ISURFdmVudEFwcGVuZEV2ZW50KElPSElERXZlbnRSZWYsIElPSElERXZlbnRSZWYs
IElPT3B0aW9uQml0cyk7CiAKIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVudFN5
c3RlbUNsaWVudENyZWF0ZShDRkFsbG9jYXRvclJlZik7Cit2b2lkIElPSElERXZlbnRTeXN0ZW1D
bGllbnRTZXRNYXRjaGluZyhJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmLCBDRkRpY3Rpb25hcnlS
ZWYpOworSU9ISURTZXJ2aWNlQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vy
dmljZUZvclJlZ2lzdHJ5SUQoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgdWludDY0X3QpOwog
CiAjZGVmaW5lIGtHU0V2ZW50UGF0aEluZm9JblJhbmdlICgxIDw8IDApCiAjZGVmaW5lIGtHU0V2
ZW50UGF0aEluZm9JblRvdWNoICgxIDw8IDEpCkBAIC0yMzQsNiArMjM2LDcgQEAgdm9pZCBJT0hJ
RERldmljZVJlZ2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhJT0hJRERldmljZVJlZiwgdWludDhf
dCosIENGSW5kZXgsIEkKIHZvaWQgSU9ISUREZXZpY2VVbnNjaGVkdWxlRnJvbVJ1bkxvb3AoSU9I
SUREZXZpY2VSZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwogSU9SZXR1cm4gSU9ISURE
ZXZpY2VDbG9zZShJT0hJRERldmljZVJlZiwgSU9PcHRpb25CaXRzKTsKIElPUmV0dXJuIElPSElE
RGV2aWNlU2V0UmVwb3J0KElPSElERGV2aWNlUmVmLCBJT0hJRFJlcG9ydFR5cGUsIENGSW5kZXgs
IGNvbnN0IHVpbnQ4X3QqLCBDRkluZGV4KTsKK2lvX3NlcnZpY2VfdCBJT0hJRERldmljZUdldFNl
cnZpY2UoSU9ISUREZXZpY2VSZWYpOwogCiB0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUo
aWQpIF9fSU9ISURNYW5hZ2VyICogSU9ISURNYW5hZ2VyUmVmOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCA1MjIwNDc0OWRiYi4uYWU1MTcyYzM0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMjU4LDYgKzI1OCw3IEBAIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBAbm8tdW5pZnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBh
ZDAxNmU3NDc4Zi4uNzZjNTU0ODZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzIsNiArMTQ3Miw3IEBACiAJCTUxN0E2
M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8q
IEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1
QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0RFRUU4MURFOTRCMDgwMEI5
MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUU3MURFOTRCMDgwMEI5MTY0NCAv
KiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTdFMDNGNzI0QjZEOTg0MDA1NDg5NUEgLyog
TXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92
aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxODJDMjU2MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjUyMUYzMTQyNTAwMDU5
QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJNTE4MkMyNTgxRjMxNDNDRDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oICovOyB9OwogCQk1MTgyQzI1QTFGMzE0M0NEMDA1OUJBN0Mg
LyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjREMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwpAQCAtODM3MCw2ICs4MzcxLDggQEAKIAkJNTE3
Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERUVFMzFERTk0QURDMDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERUVFNzFERTk0QjA4MDBCOTE2
NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjUy
NEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01X
aW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNEIxRjMxM0FFMDAwNTlCQTdDIC8qIE5hdmlnYXRvclNl
cnZpY2VXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NzksNiArMTk1ODIsOCBAQAogCQkJCTUxNUJFMTk4
MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkLmggKi8sCiAJCQkJNTE1QkUxOTkxRDU0RjZC
RDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1QkUxOUExRDU0
RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y0MjRC
NkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y1
MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMjY5LDYgKzMz
Mjc0LDcgQEAKIAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5n
V2l0aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4
NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3RTAzRjcy
NEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFj
a2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKaW5kZXggNzVjYzllZmVmOWQuLjkyMThlYzgy
MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3Jt
R2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1H
YW1lcGFkLmgKQEAgLTQxLDExICs0MSwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcHBpbmcoKSBj
b25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0KICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXg7IH0KLSAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZTsgfQorICAgIHZpcnR1YWwgTW9ub3RvbmljVGlt
ZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0KICAg
ICBNb25vdG9uaWNUaW1lIGNvbm5lY3RUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0VGlt
ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkg
Y29uc3QgPSAwOwogCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiAiVW5rbm93biJfczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1H
YW1lcGFkKHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1faW5kZXgoaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWQuaAppbmRleCA3MmU1M2JhMTA2Ni4uNjFjYTBkNDQ2ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWQuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNW
YWx1ZXM7IH0KICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJHYW1lQ29udHJvbGxlciJfczsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgc2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgpOwogICAgIHZvaWQgc2V0dXBBc0dh
bWVwYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBi
ZGRlZDE3NzBmMS4uZTUwMzU0OTIwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2lu
Y2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9LaXRT
UEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTYsNiArNTcsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFk
QnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZO
ZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsK
KworICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYpOwor
CiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcx
LDggKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5wdXROb3RpZmljYXRpb25UaW1lckZp
cmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAg
ICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVfcHRyPEdhbWVDb250cm9sbGVyR2FtZXBh
ZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFk
VmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1lcGFkKj4gbV9pbnZpc2libGVHYW1lcGFk
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEy
ZjkxODk1Li4xMzEwYjIwZTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLm1tCkBAIC0yOSwxMiArMjksMTQgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2lt
cG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgiCi0jaW1wb3J0ICJHYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAorI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGlucHV0Tm90aWZpY2F0aW9uRGVsYXkg
eyAxNl9tcyB9OwpAQCAtMTk1LDYgKzE5Nyw1MCBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogICAgIGRpc3BhdGNoUGxh
dGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOwogfQogCitib29sIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkK
K3sKKyAgICBpZiAoIWlzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBkZXZpY2VTZXJ2aWNlID0gSU9ISUREZXZpY2VH
ZXRTZXJ2aWNlKGRldmljZSk7CisgICAgaWYgKCFkZXZpY2VTZXJ2aWNlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUgc2VydmljZSBkaXJlY3RseSBiYWNraW5nIHRo
aXMgZGV2aWNlCisgICAgdWludDY0X3QgcmVnaXN0cnlJRDsKKyAgICBpZiAoSU9SZWdpc3RyeUVu
dHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGRldmljZVNlcnZpY2UsICZyZWdpc3RyeUlEKSAhPSBLRVJO
X1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZXZlbnRTeXN0ZW1D
bGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOwor
ICAgIElPSElERXZlbnRTeXN0ZW1DbGllbnRTZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5n
ZXQoKSwgbnVsbHB0cik7CisgICAgYXV0byBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2
ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50
LmdldCgpLCByZWdpc3RyeUlEKSk7CisgICAgaWYgKHNlcnZpY2VDbGllbnQpIHsKKyAgICAgICAg
aWYgKENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0
cyBncmFuZGNoaWxkIHNlcnZpY2UKKyAgICBpb19yZWdpc3RyeV9lbnRyeV90IGNoaWxkOworICAg
IGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5KGRldmljZVNlcnZpY2UsIGtJT1NlcnZp
Y2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdp
c3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShjaGlsZCwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9
IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3Ry
eUVudHJ5SUQoY2hpbGQsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0
ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCks
IHJlZ2lzdHJ5SUQpKTsKKyAgICBpZiAoIXNlcnZpY2VDbGllbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGll
bnQuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4ZTc1YjdiNS4uY2JlYjNjMjg3
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTI2LDkgKzI2LDIzIEBACiAjaWYgRU5BQkxFKEdB
TUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQogCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ0Nv
bnRyb2xsZXIuaD4KKyNpbXBvcnQgPElPS2l0L2hpZHN5c3RlbS9JT0hJRFNlcnZpY2VDbGllbnQu
aD4KIAogQGludGVyZmFjZSBHQ0NvbnRyb2xsZXIgKCkKICsgKHZvaWQpX19vcGVuWFBDX2FuZF9D
QkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlX187CiBAZW5kCiAKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCitXVEZfRVhURVJOX0NfQkVHSU4KKyNpbXBvcnQgPEdhbWVDb250cm9sbGVy
L0dDVXRpbGl0eS5oPgorV1RGX0VYVEVSTl9DX0VORAorCisjZWxzZQorCitXVEZfRVhURVJOX0Nf
QkVHSU4KK0NsYXNzIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UoSU9ISURTZXJ2aWNlQ2xpZW50
UmVmKTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyU29mdExpbmsuaAppbmRleCAxMDE4M2JmYzE3NS4uNTRhYTYxYzgzMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zMyw2ICszMyw4IEBACiBTT0ZUX0xJTktfRlJB
TUVXT1JLX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiAKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NGb3JT
ZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2Up
KQorCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1l
Q29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVD
b250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmlu
ZyAqKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KaW5kZXggYzEwNzBjNDE5NmIuLmZm
YmZlM2Q2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCkBAIC0zMyw2ICszMyw4
IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xs
ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTChXZWJDb3JlLCBHYW1lQ29u
dHJvbGxlciwgR0NDb250cm9sbGVyKQogCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShX
ZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3Ms
IChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkKKwogU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdD
Q29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0ND
b250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4IGEy
NTIzNGZiODc1Li5hNTUwYWYwYTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShH
QU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQuaCIK
LSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2Nv
Y29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAtMTIxLDYgKzEyMSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+
JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZhbHVlczsgfQog
CisgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkhJRCJfczsg
fQorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEVsZW1lbnRzKCk7CiAgICAgdm9pZCBpbml0RWxl
bWVudHNGcm9tQXJyYXkoQ0ZBcnJheVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAwYjYz
MjI1YzA3Yy4uNWFmNTk1OThiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAi
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIkdhbWVwYWRQcm92aWRl
ckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1HYW1lcGFk
LmgiCkBAIC0xNzgsNiArMTc5LDEyIEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9u
aXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogCiB2b2lkIEhJ
REdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewor
ICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoZGV2aWNlKSkgewor
ICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3aWxsIGhhbmRs
ZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgaWdub3JpbmcgaXQiLCBk
ZXZpY2UpOworICAgICAgICBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLmFkZChkZXZp
Y2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRNYXAu
Z2V0KGRldmljZSkpOwogCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2
aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKQEAgLTIwMSwxNiArMjA4LDI4IEBAIHZvaWQgSElER2Ft
ZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAgICAg
ICAgICBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwog
ICAgIH0KIAorICAgIGF1dG8gZXZlbnRWaXNpYmlsaXR5ID0gbV9pbml0aWFsR2FtZXBhZHNDb25u
ZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2FtZXBh
ZHNWaXNpYmxlOjpObzsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAg
ICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRl
eF0sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJs
ZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm8pOworICAgICAgICBjbGllbnQt
PnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRW
aXNpYmlsaXR5KTsKKworICAgIC8vIElmIHdlIGFyZSB3b3JraW5nIHRvZ2V0aGVyIHdpdGggdGhl
IEdhbWVDb250cm9sbGVyIHByb3ZpZGVyLCBsZXQgaXQga25vdworICAgIC8vIHRoYXQgZ2FtZXBh
ZHMgc2hvdWxkIG5vdyBiZSB2aXNpYmxlLgorICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxl
ckZyYW1ld29ya0RldmljZXMgJiYgZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFk
c1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CiB9CiAKIHZvaWQgSElE
R2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsK
LSAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIs
IGRldmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVtb3ZlZEdhbWVw
YWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlbW92ZWRH
YW1lcGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdhbWVwYWQpIHsKKyAgICAgICAgYXV0byB0YWtl
biA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMudGFrZShkZXZpY2UpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7CisgICAgICAgIExPRyhHYW1lcGFkLCAiSElE
R2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGljaCBp
cyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2aWNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBh
ZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKIAogICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nv
bm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAtMjQ5LDcgKzI2OCw4IEBAIHZvaWQgSElER2Ft
ZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogc3RkOjp1bmlxdWVf
cHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRldmlj
ZShJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVw
YWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlc3Vs
dCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0
byBpID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQocmVzdWx0LmdldCgpKTsKICAgICBpZiAoaSAhPSBu
b3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJiNTRlZTU2MWIuLmZiNDQzOGFlMjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXZp
Y2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5nZWQoSU9ISURW
YWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNl
cygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzID0gdHJ1ZTsgfQor
CiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSwxMCArNzMsMTIg
QEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0
b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVw
YWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4gbV9nYW1lQ29u
dHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+
IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzIHsg
ZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXI7CiAg
ICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiODEyYWIwNzVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1l
cGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiR2Ft
ZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE11bHRpR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVw
YWRQcm92aWRlciwgcHVibGljIEdhbWVwYWRQcm92aWRlckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TXVsdGlHYW1lcGFkUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgTXVsdGlHYW1lcGFkUHJvdmlkZXImIHNpbmdsZXRvbigpOworCisgICAg
Ly8gR2FtZXBhZFByb3ZpZGVyCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1l
cGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nR2FtZXBh
ZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29uc3QgVmVjdG9yPFBsYXRm
b3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyByZXR1cm4gbV9nYW1lcGFk
VmVjdG9yOyB9CisgICAgYm9vbCBpc01vY2tHYW1lcGFkUHJvdmlkZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyQ2xpZW50CisgICAgdm9pZCBwbGF0
Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiwgRXZlbnRNYWtlc0dhbWVwYWRz
VmlzaWJsZSkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxh
dGZvcm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2
aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
KTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KCk7CisKKyAgICBib29sIG1fc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSB7IGZhbHNlIH07Cisg
ICAgc2l6ZV90IG1faW5pdGlhbEdhbWVwYWRzQ291bnQgeyAwIH07CisgICAgVmVjdG9yPFBsYXRm
b3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKKworICAgIC8vIFdlIGNyZWF0ZSBvdXIgb3du
IEdhbWVwYWQgdHlwZSAtIHRvIHdyYXAgYm90aCBISUQgYW5kIEdhbWVDb250cm9sZXIgZ2FtZXBh
ZHMgLQorICAgIC8vIGJlY2F1c2UgTXVsdGlHYW1lcGFkUHJvdmlkZXIgbmVlZHMgdG8gbWFuYWdl
IHRoZSBpbmRleGVzIG9mIGl0cyBvd24gZ2FtZXBhZHMKKyAgICAvLyBubyBtYXR0ZXIgd2hhdCB0
aGUgSElEIG9yIEdhbWVDb250cm9sbGVyIGluZGV4IGlzLgorICAgIGNsYXNzIFBsYXRmb3JtR2Ft
ZXBhZFdyYXBwZXIgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIodW5zaWduZWQgaW5kZXgsIFBsYXRmb3JtR2FtZXBh
ZCogd3JhcHBlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQorICAgICAg
ICAgICAgLCBtX3BsYXRmb3JtR2FtZXBhZCh3cmFwcGVkKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2lkID0gd3JhcHBlZC0+aWQoKTsKKyAgICAgICAgICAgIG1fbWFwcGluZyA9IHdyYXBwZWQt
Pm1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1fY29ubmVjdFRpbWUgPSB3cmFwcGVkLT5jb25uZWN0
VGltZSgpOworICAgICAgICB9CisKKyAgICAgICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGlt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5sYXN0VXBkYXRlVGlt
ZSgpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmF4aXNWYWx1ZXMoKTsgfQorICAgICAg
ICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmJ1dHRvblZhbHVlcygpOyB9CisKKyAgICAgICAgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPnNv
dXJjZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWQqIG1fcGxh
dGZvcm1HYW1lcGFkOworICAgIH07CisKKyAgICBIYXNoTWFwPFBsYXRmb3JtR2FtZXBhZCosIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPj4gbV9nYW1lcGFkTWFwOworICAg
IGJvb2wgbV9oaWRJbXBvcnRDb21wbGV0ZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1l
cGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0
aUdhbWVwYWRQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMzBlMjFiMTVmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDEzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIkhJREdhbWVw
YWRQcm92aWRlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1HYW1l
cGFkLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgc2l6ZV90IG51bWJlck9mR2FtZXBhZFByb3ZpZGVycyA9IDI7CisKK011
bHRpR2FtZXBhZFByb3ZpZGVyJiBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXVsdGlHYW1lcGFkUHJvdmlkZXI+IHNoYXJlZFBy
b3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92aWRlcjsKK30KKwordm9pZCBNdWx0aUdhbWVw
YWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50
JiBjbGllbnQpCit7CisgICAgYm9vbCBtb25pdG9yT3RoZXJQcm92aWRlcnMgPSBtX2NsaWVudHMu
aXNFbXB0eSgpOworCisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOwor
ICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcygpOworICAgIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcmV3YXJtR2FtZUNvbnRy
b2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKKworICAgIGlmIChtb25pdG9yT3RoZXJQcm92aWRl
cnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0
b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgfQor
fQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdh
bWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29u
dGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRTdG9wTW9uaXRvcmluZ090aGVyUHJv
dmlkZXJzID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAmJiBtX2NsaWVudHMuaXNFbXB0eSgp
OworCisgICAgaWYgKHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMpIHsKKyAgICAg
ICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRv
bigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30KKwordW5zaWduZWQg
TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQorewor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRWZWN0
b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7CisK
KyAgICBBU1NFUlQoaW5kZXggPD0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSk7CisKKyAgICBpZiAo
aW5kZXggPT0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSkKKyAgICAgICAgbV9nYW1lcGFkVmVjdG9y
LnJlc2l6ZShpbmRleCArIDEpOworCisgICAgcmV0dXJuIGluZGV4OworfQorCit2b2lkIE11bHRp
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFk
JiBnYW1lcGFkLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJpbGl0eSkKK3sK
KyAgICBhdXRvIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworCisgICAg
TE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBhZGRpbmcgbmV3IHBsYXRmb3JtIGdh
bWVwYWQgdG8gaW5kZXggJWkgZnJvbSBhICVzIHNvdXJjZSIsIGluZGV4LCBnYW1lcGFkLnNvdXJj
ZSgpKTsKKworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpID4gaW5kZXgpOworCisg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2dhbWVwYWRNYXAuc2V0KCZnYW1lcGFkLCBXVEY6Om1ha2VV
bmlxdWU8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4oaW5kZXgsICZnYW1lcGFkKSk7CisgICAgQVNT
RVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgq
bV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsKK30KKwordm9pZCBNdWx0
aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBsYXRmb3JtR2Ft
ZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIk11bHRpR2FtZXBhZFByb3ZpZGVy
IGRpc2Nvbm5lY3RpbmcgZ2FtZXBhZCBmcm9tIGEgJXMgc291cmNlIiwgZ2FtZXBhZC5zb3VyY2Uo
KSk7CisKKyAgICBhdXRvIGdhbWVwYWRXcmFwcGVyID0gbV9nYW1lcGFkTWFwLnRha2UoJmdhbWVw
YWQpOworCisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyKTsKKyAgICBBU1NFUlQoZ2FtZXBhZFdy
YXBwZXItPmluZGV4KCkgPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9n
YW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9PSBnYW1lcGFkV3JhcHBlci5n
ZXQoKSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4KCldID0g
bnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBj
bGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqZ2FtZXBhZFdyYXBwZXIpOworfQor
Cit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5
KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAgIGlmIChl
dmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzKQorICAgICAg
ICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFrZUludmlzaWJp
bGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoZXZlbnRWaXNp
YmlsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzM0ZGExNjViYmYuLmJmMGZh
OTlhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTA4ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZXggdGhlIEhJRCBhbmQg
R2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBwcm92aWRlcnMgb24gTWFjLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0MTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0
R2FtZXBhZFByb3ZpZGVyKToKKwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZy
YW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCmlu
ZGV4IGFiMmM3ZmI4OGQzLi4xOTRhYTM1NjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2Nv
YS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9NdWx0aUdhbWVwYWRQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNyArNTQsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogICAgIGlmICh1c2VHYW1lQ29u
dHJvbGxlckZyYW1ld29yaykKICAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92
aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogICAgIGVs
c2UKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFy
ZWRQcm92aWRlcihNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogI2VuZGlmCiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403889</attachid>
            <date>2020-07-09 10:50:27 -0700</date>
            <delta_ts>2020-07-09 11:54:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32325</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLmQ1ZjMzY2EyODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTE0OSw2ICsxNDksOCBAQCB2b2lkIElPSElERXZlbnRT
ZXRJbnRlZ2VyVmFsdWUoSU9ISURFdmVudFJlZiwgSU9ISURFdmVudEZpZWxkLCBDRkluZGV4KTsK
IHZvaWQgSU9ISURFdmVudEFwcGVuZEV2ZW50KElPSElERXZlbnRSZWYsIElPSElERXZlbnRSZWYs
IElPT3B0aW9uQml0cyk7CiAKIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVudFN5
c3RlbUNsaWVudENyZWF0ZShDRkFsbG9jYXRvclJlZik7Cit2b2lkIElPSElERXZlbnRTeXN0ZW1D
bGllbnRTZXRNYXRjaGluZyhJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmLCBDRkRpY3Rpb25hcnlS
ZWYpOworSU9ISURTZXJ2aWNlQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vy
dmljZUZvclJlZ2lzdHJ5SUQoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgdWludDY0X3QpOwog
CiAjZGVmaW5lIGtHU0V2ZW50UGF0aEluZm9JblJhbmdlICgxIDw8IDApCiAjZGVmaW5lIGtHU0V2
ZW50UGF0aEluZm9JblRvdWNoICgxIDw8IDEpCkBAIC0yMzQsNiArMjM2LDcgQEAgdm9pZCBJT0hJ
RERldmljZVJlZ2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhJT0hJRERldmljZVJlZiwgdWludDhf
dCosIENGSW5kZXgsIEkKIHZvaWQgSU9ISUREZXZpY2VVbnNjaGVkdWxlRnJvbVJ1bkxvb3AoSU9I
SUREZXZpY2VSZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwogSU9SZXR1cm4gSU9ISURE
ZXZpY2VDbG9zZShJT0hJRERldmljZVJlZiwgSU9PcHRpb25CaXRzKTsKIElPUmV0dXJuIElPSElE
RGV2aWNlU2V0UmVwb3J0KElPSElERGV2aWNlUmVmLCBJT0hJRFJlcG9ydFR5cGUsIENGSW5kZXgs
IGNvbnN0IHVpbnQ4X3QqLCBDRkluZGV4KTsKK2lvX3NlcnZpY2VfdCBJT0hJRERldmljZUdldFNl
cnZpY2UoSU9ISUREZXZpY2VSZWYpOwogCiB0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUo
aWQpIF9fSU9ISURNYW5hZ2VyICogSU9ISURNYW5hZ2VyUmVmOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCA1MjIwNDc0OWRiYi4uYWU1MTcyYzM0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMjU4LDYgKzI1OCw3IEBAIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBAbm8tdW5pZnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBh
ZDAxNmU3NDc4Zi4uNzZjNTU0ODZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzIsNiArMTQ3Miw3IEBACiAJCTUxN0E2
M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8q
IEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1
QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0RFRUU4MURFOTRCMDgwMEI5
MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUU3MURFOTRCMDgwMEI5MTY0NCAv
KiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTdFMDNGNzI0QjZEOTg0MDA1NDg5NUEgLyog
TXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92
aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxODJDMjU2MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjUyMUYzMTQyNTAwMDU5
QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJNTE4MkMyNTgxRjMxNDNDRDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oICovOyB9OwogCQk1MTgyQzI1QTFGMzE0M0NEMDA1OUJBN0Mg
LyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjREMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwpAQCAtODM3MCw2ICs4MzcxLDggQEAKIAkJNTE3
Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERUVFMzFERTk0QURDMDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERUVFNzFERTk0QjA4MDBCOTE2
NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjUy
NEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01X
aW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNEIxRjMxM0FFMDAwNTlCQTdDIC8qIE5hdmlnYXRvclNl
cnZpY2VXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NzksNiArMTk1ODIsOCBAQAogCQkJCTUxNUJFMTk4
MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkLmggKi8sCiAJCQkJNTE1QkUxOTkxRDU0RjZC
RDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1QkUxOUExRDU0
RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y0MjRC
NkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y1
MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMjY5LDYgKzMz
Mjc0LDcgQEAKIAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5n
V2l0aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4
NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3RTAzRjcy
NEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFj
a2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKaW5kZXggNzVjYzllZmVmOWQuLjkyMThlYzgy
MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3Jt
R2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1H
YW1lcGFkLmgKQEAgLTQxLDExICs0MSwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcHBpbmcoKSBj
b25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0KICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXg7IH0KLSAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZTsgfQorICAgIHZpcnR1YWwgTW9ub3RvbmljVGlt
ZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0KICAg
ICBNb25vdG9uaWNUaW1lIGNvbm5lY3RUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0VGlt
ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkg
Y29uc3QgPSAwOwogCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiAiVW5rbm93biJfczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1H
YW1lcGFkKHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1faW5kZXgoaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWQuaAppbmRleCA3MmU1M2JhMTA2Ni4uNjFjYTBkNDQ2ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWQuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNW
YWx1ZXM7IH0KICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJHYW1lQ29udHJvbGxlciJfczsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgc2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgpOwogICAgIHZvaWQgc2V0dXBBc0dh
bWVwYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBi
ZGRlZDE3NzBmMS4uMmUzZmQ0MWE1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2lu
Y2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9LaXRT
UEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTYsNiArNTcsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFk
QnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZO
ZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9vbCB3aWxsSGFuZGxlSElERGV2aWNl
KElPSElERGV2aWNlUmVmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc4LDYgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgaW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZpc2li
aWxlR2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlx
dWVfcHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0b3I8
UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZvcm1H
YW1lcGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li40ZTAwYmU2MTJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0yOSwxMiArMjksMTQgQEAK
ICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgi
Ci0jaW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJv
dmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPEdhbWVDb250cm9s
bGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2ltcG9ydCAiR2FtZUNvbnRyb2xs
ZXJTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNv
bmRzIGlucHV0Tm90aWZpY2F0aW9uRGVsYXkgeyAxNl9tcyB9OwpAQCAtMTk1LDYgKzE5Nyw1MiBA
QCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRp
bWVyRmlyZWQoKQogICAgIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOwog
fQogCisjaWYgUExBVEZPUk0oTUFDKQorYm9vbCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6d2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCit7CisgICAgaWYg
KCFpc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gZGV2aWNlU2VydmljZSA9IElPSElERGV2aWNlR2V0U2VydmljZShk
ZXZpY2UpOworICAgIGlmICghZGV2aWNlU2VydmljZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gQ2hlY2sgdGhlIHNlcnZpY2UgZGlyZWN0bHkgYmFja2luZyB0aGlzIGRldmljZQor
ICAgIHVpbnQ2NF90IHJlZ2lzdHJ5SUQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lz
dHJ5RW50cnlJRChkZXZpY2VTZXJ2aWNlLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGV2ZW50U3lzdGVtQ2xpZW50ID0gYWRv
cHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKG51bGxwdHIpKTsKKyAgICBJT0hJREV2
ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIG51bGxw
dHIpOworICAgIGF1dG8gc2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNs
aWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVn
aXN0cnlJRCkpOworICAgIGlmIChzZXJ2aWNlQ2xpZW50KSB7CisgICAgICAgIGlmIChDb250cm9s
bGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpdHMgZ3JhbmRjaGls
ZCBzZXJ2aWNlCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBjaGlsZDsKKyAgICBpZiAoSU9SZWdp
c3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZpY2VTZXJ2aWNlLCBrSU9TZXJ2aWNlUGxhbmUsICZj
aGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
aGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdl
dENoaWxkRW50cnkoY2hpbGQsIGtJT1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NF
U1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRyeUlEKGNo
aWxkLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29w
eVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlE
KSk7CisgICAgaWYgKCFzZXJ2aWNlQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKTsK
K30KKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCmluZGV4IDE4ZjhlNzVi
N2I1Li4yNzIzYWZjZjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaApAQCAtMjcsOCArMjcsMjUgQEAK
IAogI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NDb250cm9sbGVyLmg+CiAKKyNpZiBQTEFURk9S
TShNQUMpCisjaW1wb3J0IDxJT0tpdC9oaWRzeXN0ZW0vSU9ISURTZXJ2aWNlQ2xpZW50Lmg+Cisj
ZW5kaWYKKwogQGludGVyZmFjZSBHQ0NvbnRyb2xsZXIgKCkKICsgKHZvaWQpX19vcGVuWFBDX2Fu
ZF9DQkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlX187CiBAZW5kCiAKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCitXVEZfRVhURVJOX0NfQkVHSU4KKyNpbXBvcnQgPEdhbWVDb250cm9s
bGVyL0dDVXRpbGl0eS5oPgorV1RGX0VYVEVSTl9DX0VORAorCisjZWxzZQorCitXVEZfRVhURVJO
X0NfQkVHSU4KK0NsYXNzIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UoSU9ISURTZXJ2aWNlQ2xp
ZW50UmVmKTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlclNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dh
bWVDb250cm9sbGVyU29mdExpbmsuaAppbmRleCAxMDE4M2JmYzE3NS4uNTRhYTYxYzgzMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zMyw2ICszMyw4IEBACiBTT0ZUX0xJTktf
RlJBTUVXT1JLX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiAKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NG
b3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZp
Y2UpKQorCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBH
YW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIEdh
bWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0
cmluZyAqKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KaW5kZXggYzEwNzBjNDE5NmIu
LmZmYmZlM2Q2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCkBAIC0zMyw2ICsz
Myw4IEBACiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRy
b2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTChXZWJDb3JlLCBHYW1l
Q29udHJvbGxlciwgR0NDb250cm9sbGVyKQogCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZSwgQ2xh
c3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkKKwogU09GVF9M
SU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIs
IEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwg
R0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4
IGEyNTIzNGZiODc1Li5hNTUwYWYwYTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJM
RShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybUdhbWVwYWQu
aCIKLSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4KKyNpbmNsdWRlIDxwYWwvc3Bp
L2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAtMTIxLDYgKzEy
MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQogICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZhbHVlczsg
fQogCisgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkhJRCJf
czsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEVsZW1lbnRzKCk7CiAgICAgdm9pZCBpbml0
RWxlbWVudHNGcm9tQXJyYXkoQ0ZBcnJheVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCAw
YjYzMjI1YzA3Yy4uNWFmNTk1OThiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9y
dCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbXBvcnQgIkdhbWVwYWRQcm92
aWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1HYW1l
cGFkLmgiCkBAIC0xNzgsNiArMTc5LDEyIEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogCiB2b2lk
IEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQog
eworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoZGV2aWNlKSkg
eworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyIGZyYW1ld29yayB3aWxsIGhh
bmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJvdmlkZXIgaWdub3JpbmcgaXQi
LCBkZXZpY2UpOworICAgICAgICBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLmFkZChk
ZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRN
YXAuZ2V0KGRldmljZSkpOwogCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIg
ZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKQEAgLTIwMSwxNiArMjA4LDI4IEBAIHZvaWQgSElE
R2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAg
ICAgICAgICBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogICAgIH0KIAorICAgIGF1dG8gZXZlbnRWaXNpYmlsaXR5ID0gbV9pbml0aWFsR2FtZXBhZHND
b25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2Ft
ZXBhZHNWaXNpYmxlOjpObzsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3Rvcltp
bmRleF0sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlz
aWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm8pOworICAgICAgICBjbGll
bnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZl
bnRWaXNpYmlsaXR5KTsKKworICAgIC8vIElmIHdlIGFyZSB3b3JraW5nIHRvZ2V0aGVyIHdpdGgg
dGhlIEdhbWVDb250cm9sbGVyIHByb3ZpZGVyLCBsZXQgaXQga25vdworICAgIC8vIHRoYXQgZ2Ft
ZXBhZHMgc2hvdWxkIG5vdyBiZSB2aXNpYmxlLgorICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJv
bGxlckZyYW1ld29ya0RldmljZXMgJiYgZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1l
cGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CiB9CiAKIHZvaWQg
SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRldmljZSkK
IHsKLSAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3Zl
ZCIsIGRldmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVtb3ZlZEdh
bWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlbW92
ZWRHYW1lcGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdhbWVwYWQpIHsKKyAgICAgICAgYXV0byB0
YWtlbiA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMudGFrZShkZXZpY2UpOworICAg
ICAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7CisgICAgICAgIExPRyhHYW1lcGFkLCAi
SElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGlj
aCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2
aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhHYW1lcGFkLCAiSElER2Ft
ZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKIAogICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERp
c2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAtMjQ5LDcgKzI2OCw4IEBAIHZvaWQgSElE
R2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogc3RkOjp1bmlx
dWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRl
dmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJl
c3VsdCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBpID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQocmVzdWx0LmdldCgpKTsKICAgICBpZiAoaSAh
PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJiNTRlZTU2MWIuLmZiNDQzOGFlMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1l
cGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5nZWQoSU9I
SURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2
aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzID0gdHJ1ZTsg
fQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSwxMCArNzMs
MTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRW
ZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4gbV9nYW1l
Q29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJS
ZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2Vz
IHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXI7
CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiODEyYWIwNzVjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAi
R2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11bHRpR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdh
bWVwYWRQcm92aWRlciwgcHVibGljIEdhbWVwYWRQcm92aWRlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+TXVsdGlHYW1lcGFkUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgTXVsdGlHYW1lcGFkUHJvdmlkZXImIHNpbmdsZXRvbigpOworCisg
ICAgLy8gR2FtZXBhZFByb3ZpZGVyCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhH
YW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nR2Ft
ZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29uc3QgVmVjdG9yPFBs
YXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyByZXR1cm4gbV9nYW1l
cGFkVmVjdG9yOyB9CisgICAgYm9vbCBpc01vY2tHYW1lcGFkUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyQ2xpZW50CisgICAgdm9pZCBw
bGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiwgRXZlbnRNYWtlc0dhbWVw
YWRzVmlzaWJsZSkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQo
UGxhdGZvcm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJbnB1dEFj
dGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworCitwcm90ZWN0ZWQ6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZp
dHkoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2
aWNlKCk7CisKKyAgICBib29sIG1fc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSB7IGZhbHNlIH07
CisgICAgc2l6ZV90IG1faW5pdGlhbEdhbWVwYWRzQ291bnQgeyAwIH07CisgICAgVmVjdG9yPFBs
YXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKKworICAgIC8vIFdlIGNyZWF0ZSBvdXIg
b3duIEdhbWVwYWQgdHlwZSAtIHRvIHdyYXAgYm90aCBISUQgYW5kIEdhbWVDb250cm9sZXIgZ2Ft
ZXBhZHMgLQorICAgIC8vIGJlY2F1c2UgTXVsdGlHYW1lcGFkUHJvdmlkZXIgbmVlZHMgdG8gbWFu
YWdlIHRoZSBpbmRleGVzIG9mIGl0cyBvd24gZ2FtZXBhZHMKKyAgICAvLyBubyBtYXR0ZXIgd2hh
dCB0aGUgSElEIG9yIEdhbWVDb250cm9sbGVyIGluZGV4IGlzLgorICAgIGNsYXNzIFBsYXRmb3Jt
R2FtZXBhZFdyYXBwZXIgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIodW5zaWduZWQgaW5kZXgsIFBsYXRmb3JtR2Ft
ZXBhZCogd3JhcHBlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1HYW1lcGFkKGluZGV4KQorICAg
ICAgICAgICAgLCBtX3BsYXRmb3JtR2FtZXBhZCh3cmFwcGVkKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2lkID0gd3JhcHBlZC0+aWQoKTsKKyAgICAgICAgICAgIG1fbWFwcGluZyA9IHdyYXBw
ZWQtPm1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1fY29ubmVjdFRpbWUgPSB3cmFwcGVkLT5jb25u
ZWN0VGltZSgpOworICAgICAgICB9CisKKyAgICAgICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRl
VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5sYXN0VXBkYXRl
VGltZSgpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmF4aXNWYWx1ZXMoKTsgfQorICAg
ICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmJ1dHRvblZhbHVlcygpOyB9CisKKyAgICAgICAgY29u
c3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQt
PnNvdXJjZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWQqIG1f
cGxhdGZvcm1HYW1lcGFkOworICAgIH07CisKKyAgICBIYXNoTWFwPFBsYXRmb3JtR2FtZXBhZCos
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPj4gbV9nYW1lcGFkTWFwOwor
ICAgIGJvb2wgbV9oaWRJbXBvcnRDb21wbGV0ZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlH
YW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9N
dWx0aUdhbWVwYWRQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uMzBlMjFiMTVmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpAQCAtMCwwICsxLDEzMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdWx0aUdhbWVw
YWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKKwor
I2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIkhJREdh
bWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1H
YW1lcGFkLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgc2l6ZV90IG51bWJlck9mR2FtZXBhZFByb3ZpZGVycyA9IDI7CisK
K011bHRpR2FtZXBhZFByb3ZpZGVyJiBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXVsdGlHYW1lcGFkUHJvdmlkZXI+IHNoYXJl
ZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92aWRlcjsKK30KKwordm9pZCBNdWx0aUdh
bWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBtb25pdG9yT3RoZXJQcm92aWRlcnMgPSBtX2NsaWVu
dHMuaXNFbXB0eSgpOworCisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkp
OworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAgICBISURHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcygpOworICAg
IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcmV3YXJtR2FtZUNv
bnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKKworICAgIGlmIChtb25pdG9yT3RoZXJQcm92
aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1v
bml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAg
fQorfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMu
Y29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRTdG9wTW9uaXRvcmluZ090aGVy
UHJvdmlkZXJzID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAmJiBtX2NsaWVudHMuaXNFbXB0
eSgpOworCisgICAgaWYgKHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMpIHsKKyAg
ICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVw
YWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30KKwordW5zaWdu
ZWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQor
eworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBtX2dhbWVwYWRW
ZWN0b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAgICAgICsraW5kZXg7
CisKKyAgICBBU1NFUlQoaW5kZXggPD0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSk7CisKKyAgICBp
ZiAoaW5kZXggPT0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSkKKyAgICAgICAgbV9nYW1lcGFkVmVj
dG9yLnJlc2l6ZShpbmRleCArIDEpOworCisgICAgcmV0dXJuIGluZGV4OworfQorCit2b2lkIE11
bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1l
cGFkJiBnYW1lcGFkLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJpbGl0eSkK
K3sKKyAgICBhdXRvIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworCisg
ICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBhZGRpbmcgbmV3IHBsYXRmb3Jt
IGdhbWVwYWQgdG8gaW5kZXggJWkgZnJvbSBhICVzIHNvdXJjZSIsIGluZGV4LCBnYW1lcGFkLnNv
dXJjZSgpKTsKKworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpID4gaW5kZXgpOwor
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dhbWVwYWRNYXAuc2V0KCZnYW1lcGFkLCBXVEY6Om1h
a2VVbmlxdWU8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4oaW5kZXgsICZnYW1lcGFkKSk7CisgICAg
QVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBtX2dhbWVwYWRWZWN0b3JbaW5kZXhd
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3Rl
ZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsKK30KKwordm9pZCBN
dWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBsYXRmb3Jt
R2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIk11bHRpR2FtZXBhZFByb3Zp
ZGVyIGRpc2Nvbm5lY3RpbmcgZ2FtZXBhZCBmcm9tIGEgJXMgc291cmNlIiwgZ2FtZXBhZC5zb3Vy
Y2UoKSk7CisKKyAgICBhdXRvIGdhbWVwYWRXcmFwcGVyID0gbV9nYW1lcGFkTWFwLnRha2UoJmdh
bWVwYWQpOworCisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyKTsKKyAgICBBU1NFUlQoZ2FtZXBh
ZFdyYXBwZXItPmluZGV4KCkgPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKyAgICBBU1NFUlQo
bV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9PSBnYW1lcGFkV3JhcHBl
ci5nZXQoKSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4KCld
ID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqZ2FtZXBhZFdyYXBwZXIpOwor
fQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2
aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAgIGlm
IChldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzKQorICAg
ICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoZXZlbnRW
aXNpYmlsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzM0ZGExNjViYmYuLmJm
MGZhOTlhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTA4ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZXggdGhlIEhJRCBh
bmQgR2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBwcm92aWRlcnMgb24gTWFjLgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0MTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZh
dWx0R2FtZXBhZFByb3ZpZGVyKToKKwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVy
LmZyYW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1t
CmluZGV4IGFiMmM3ZmI4OGQzLi4xOTRhYTM1NjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJD
b2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9NdWx0aUdhbWVwYWRQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNyArNTQsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogICAgIGlmICh1c2VHYW1l
Q29udHJvbGxlckZyYW1ld29yaykKICAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQ
cm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogICAg
IGVsc2UKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihISURHYW1l
cGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRT
aGFyZWRQcm92aWRlcihNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOwogI2VuZGlm
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403896</attachid>
            <date>2020-07-09 11:54:43 -0700</date>
            <delta_ts>2020-07-09 12:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33398</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjljYTY5ODkyMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERWxlbWVudC5oPgorI2luY2x1ZGUgPElPS2l0L2hp
ZC9JT0hJRFVzYWdlVGFibGVzLmg+CisjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElEVmFsdWUuaD4K
KwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPElPS2l0L2hpZC9JT0hJ
RERldmljZS5oPgpAQCAtNTAsNiArNTQsNyBAQCB0eXBlZGVmIHVpbnQzMl90IElPSElERXZlbnRG
aWVsZDsKIAogdHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fSU9ISURFdmVudCAqIElPSElE
RXZlbnRSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0lPSElEU2VydmljZUNsaWVudCAqIElPSElEU2Vy
dmljZUNsaWVudFJlZjsKIAogI2RlZmluZSBJT0hJREV2ZW50RmllbGRCYXNlKHR5cGUpICh0eXBl
IDw8IDE2KQogCkBAIC0xNDksNiArMTU0LDggQEAgdm9pZCBJT0hJREV2ZW50U2V0SW50ZWdlclZh
bHVlKElPSElERXZlbnRSZWYsIElPSElERXZlbnRGaWVsZCwgQ0ZJbmRleCk7CiB2b2lkIElPSElE
RXZlbnRBcHBlbmRFdmVudChJT0hJREV2ZW50UmVmLCBJT0hJREV2ZW50UmVmLCBJT09wdGlvbkJp
dHMpOwogCiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYpOwordm9pZCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0
Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKK0lPSElE
U2VydmljZUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdp
c3RyeUlEKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIHVpbnQ2NF90KTsKIAogI2RlZmluZSBr
R1NFdmVudFBhdGhJbmZvSW5SYW5nZSAoMSA8PCAwKQogI2RlZmluZSBrR1NFdmVudFBhdGhJbmZv
SW5Ub3VjaCAoMSA8PCAxKQpAQCAtMjM0LDYgKzI0MSw3IEBAIHZvaWQgSU9ISUREZXZpY2VSZWdp
c3RlcklucHV0UmVwb3J0Q2FsbGJhY2soSU9ISUREZXZpY2VSZWYsIHVpbnQ4X3QqLCBDRkluZGV4
LCBJCiB2b2lkIElPSElERGV2aWNlVW5zY2hlZHVsZUZyb21SdW5Mb29wKElPSElERGV2aWNlUmVm
LCBDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKIElPUmV0dXJuIElPSElERGV2aWNlQ2xvc2Uo
SU9ISUREZXZpY2VSZWYsIElPT3B0aW9uQml0cyk7CiBJT1JldHVybiBJT0hJRERldmljZVNldFJl
cG9ydChJT0hJRERldmljZVJlZiwgSU9ISURSZXBvcnRUeXBlLCBDRkluZGV4LCBjb25zdCB1aW50
OF90KiwgQ0ZJbmRleCk7Citpb19zZXJ2aWNlX3QgSU9ISUREZXZpY2VHZXRTZXJ2aWNlKElPSElE
RGV2aWNlUmVmKTsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBfX0lPSElE
TWFuYWdlciAqIElPSElETWFuYWdlclJlZjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NTIyMDQ3NDlkYmIuLmFlNTE3MmMzNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1
OCw2ICsyNTgsNyBAQCBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZC5tbQogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5tbQogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRp
R2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGwubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYu
Ljc2YzU1NDg2YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTky
MDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29k
ZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIw
MDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFG
MzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaCAqLzsgfTsKQEAgLTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0
RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0
ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5z
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4
dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3
MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2Vy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5NTc5LDYgKzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBE
RDdDNjggLyogSElER2FtZXBhZC5oICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAv
KiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2
OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5
NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJ
CQkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJv
a2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0
ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0Qjgy
MDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ1QkE2QjYyMzc2MjJBMzAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRh
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvUGxhdGZvcm1HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L1BsYXRmb3JtR2FtZXBhZC5oCmluZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBA
IC00MSwxMSArNDEsMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9tYXBwaW5nOyB9CiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9Ci0gICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFVwZGF0ZVRpbWU7IH0KKyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0
ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3Rvbmlj
VGltZSBjb25uZWN0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsK
IAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25v
d24iX3M7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNp
Z25lZCBpbmRleCkKICAgICAgICAgOiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLmgKaW5kZXggNzJlNTNiYTEwNjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAg
ICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiR2FtZUNvbnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lk
IHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEu
LjJlM2ZkNDFhNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU2LDYgKzU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGdh
bWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmLCBib29sIGhhZEJ1dHRvblByZXNz
ZXMpOwogICAgIHZvaWQgcHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7
CiAKKyAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgc3RhdGljIGJvb2wgd2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmlj
ZVJlZik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlcigpOwogCkBAIC03MSw4ICs3OCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlucHV0Tm90
aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRz
VmlzaWJsZSgpOwotCiAgICAgSGFzaE1hcDxDRlR5cGVSZWYsIHN0ZDo6dW5pcXVlX3B0cjxHYW1l
Q29udHJvbGxlckdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CiAgICAgVmVjdG9yPFBsYXRmb3JtR2Ft
ZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoU2V0PFBsYXRmb3JtR2FtZXBhZCo+IG1f
aW52aXNpYmxlR2FtZXBhZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5tbQppbmRleCBiYjQxMmY5MTg5NS4uNGUwMGJlNjEyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMjksMTIgKzI5LDE0IEBACiAjaWYgRU5BQkxF
KEdBTUVQQUQpCiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgotI2ltcG9ydCAi
R2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HYW1lQ29u
dHJvbGxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExpbmsu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBpbnB1dE5v
dGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTcsNTIgQEAgdm9pZCBHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkK
ICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKIH0KIAorI2lmIFBM
QVRGT1JNKE1BQykKK2Jvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5k
bGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQoreworICAgIGlmICghaXNHYW1lQ29u
dHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGRldmljZVNlcnZpY2UgPSBJT0hJRERldmljZUdldFNlcnZpY2UoZGV2aWNlKTsKKyAg
ICBpZiAoIWRldmljZVNlcnZpY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENo
ZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZpY2UKKyAgICB1aW50NjRf
dCByZWdpc3RyeUlEOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQo
ZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURF
dmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CisgICAgSU9ISURFdmVudFN5c3RlbUNs
aWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBh
dXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vy
dmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsK
KyAgICBpZiAoc2VydmljZUNsaWVudCkgeworICAgICAgICBpZiAoQ29udHJvbGxlckNsYXNzRm9y
U2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaXRzIGdyYW5kY2hpbGQgc2VydmljZQor
ICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgY2hpbGQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdl
dENoaWxkRW50cnkoZGV2aWNlU2VydmljZSwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtF
Uk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5
KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJlZ2lz
dHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2Vy
dmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9y
UmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlm
ICghc2VydmljZUNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENv
bnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSk7Cit9CisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4ZTc1YjdiNS4uMjcyM2Fm
Y2Y2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTI3LDggKzI3LDI1IEBACiAKICNpbXBvcnQg
PEdhbWVDb250cm9sbGVyL0dDQ29udHJvbGxlci5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2lt
cG9ydCA8SU9LaXQvaGlkc3lzdGVtL0lPSElEU2VydmljZUNsaWVudC5oPgorI2VuZGlmCisKIEBp
bnRlcmZhY2UgR0NDb250cm9sbGVyICgpCiArICh2b2lkKV9fb3BlblhQQ19hbmRfQ0JBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKworV1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxp
dHkuaD4KK1dURl9FWFRFUk5fQ19FTkQKKworI2Vsc2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitD
bGFzcyBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZik7CitX
VEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2Vu
ZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGlu
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLmgKaW5kZXggMTAxODNiZmMxNzUuLjU0YWE2MWM4MzBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExp
bmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyU29mdExpbmsuaApAQCAtMzMsNiArMzMsOCBAQAogU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoV2ViQ29yZSwgR0NDb250cm9sbGVyKQogCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZSwg
Q2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkKKwogU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xs
ZXIsIEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxl
ciwgR0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlclNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCmluZGV4IGMxMDcwYzQxOTZiLi5mZmJmZTNkNjll
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlclNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQpAQCAtMzMsNiArMzMsOCBAQAogU09G
VF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyKQogU09G
VF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUwoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIs
IEdDQ29udHJvbGxlcikKIAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
R2FtZUNvbnRyb2xsZXIsIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURT
ZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2UpLCAoc2VydmljZSkpCisKIFNPRlRfTElOS19DT05TVEFO
VF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xs
ZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxl
ckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKaW5kZXggNGY1ZDkw
ZTU2NmUuLmU5MjczYzQzM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcApAQCAtMjgsOSArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVs
ZW1lbnQuaD4KLSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURVc2FnZVRhYmxlcy5oPgotI2luY2x1
ZGUgPElPS2l0L2hpZC9JT0hJRFZhbHVlLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tp
dFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlw
ZUNhc3RzQ0YuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggYTI1MjM0ZmI4
NzUuLmE1NTBhZjBhMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQp
ICYmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgotI2luY2x1
ZGUgPElPS2l0L2hpZC9JT0hJRERldmljZS5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC0xMjEsNiArMTIxLDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRv
blZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBj
b25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSElEIl9zOyB9CisKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0RWxlbWVudHMoKTsKICAgICB2b2lkIGluaXRFbGVtZW50c0Zy
b21BcnJheShDRkFycmF5UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDBiNjMyMjVjMDdj
Li41YWY1OTU5OGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJHYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKQEAg
LTE3OCw2ICsxNzksMTIgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5n
R2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgSElER2FtZXBh
ZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CisgICAgaWYg
KG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRsZUhJRERldmljZShkZXZpY2UpKSB7CisgICAgICAg
IExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIGF0dGFj
aGVkIGRldmljZSAlcCAtIEhJREdhbWVwYWRQcm92aWRlciBpZ25vcmluZyBpdCIsIGRldmljZSk7
CisgICAgICAgIG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMuYWRkKGRldmljZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2
aWNlKSk7CiAKICAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAg
YWRkZWQiLCBkZXZpY2UpOwpAQCAtMjAxLDE2ICsyMDgsMjggQEAgdm9pZCBISURHYW1lcGFkUHJv
dmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICAgICAgICAgIG1f
aW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfQog
CisgICAgYXV0byBldmVudFZpc2liaWxpdHkgPSBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/
IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2li
bGU6Ok5vOwogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGll
bnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgbV9p
bml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMg
OiBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpObyk7CisgICAgICAgIGNsaWVudC0+cGxhdGZv
cm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxp
dHkpOworCisgICAgLy8gSWYgd2UgYXJlIHdvcmtpbmcgdG9nZXRoZXIgd2l0aCB0aGUgR2FtZUNv
bnRyb2xsZXIgcHJvdmlkZXIsIGxldCBpdCBrbm93CisgICAgLy8gdGhhdCBnYW1lcGFkcyBzaG91
bGQgbm93IGJlIHZpc2libGUuCisgICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3
b3JrRGV2aWNlcyAmJiBldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJs
ZTo6WWVzKQorICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkubWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKIH0KIAogdm9pZCBISURHYW1lcGFk
UHJvdmlkZXI6OmRldmljZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIExP
RyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNl
KTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZW1vdmVkR2FtZXBhZCA9IHJl
bW92ZUdhbWVwYWRGb3JEZXZpY2UoZGV2aWNlKTsKLSAgICBBU1NFUlQocmVtb3ZlZEdhbWVwYWQp
OworCisgICAgaWYgKCFyZW1vdmVkR2FtZXBhZCkgeworICAgICAgICBhdXRvIHRha2VuID0gbV9n
YW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkcy50YWtlKGRldmljZSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQodGFrZW4sIHRha2VuKTsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFk
UHJvdmlkZXIgaW5mb3JtZWQgb2YgcmVtb3ZhbCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFn
ZWQgYnkgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlk
ZXIgZGV2aWNlICVwIHJlbW92ZWQiLCBkZXZpY2UpOwogCiAgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCiAgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVk
KCpyZW1vdmVkR2FtZXBhZCk7CkBAIC0yNDksNyArMjY4LDggQEAgdm9pZCBISURHYW1lcGFkUHJv
dmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpCiBzdGQ6OnVuaXF1ZV9wdHI8SElE
R2FtZXBhZD4gSElER2FtZXBhZFByb3ZpZGVyOjpyZW1vdmVHYW1lcGFkRm9yRGV2aWNlKElPSElE
RGV2aWNlUmVmIGRldmljZSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVz
dWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2aWNlKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKKyAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGkgPSBt
X2dhbWVwYWRWZWN0b3IuZmluZChyZXN1bHQuZ2V0KCkpOwogICAgIGlmIChpICE9IG5vdEZvdW5k
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuaAppbmRleCAxYmI1NGVlNTYxYi4uZmI0NDM4YWUyNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQ
cm92aWRlci5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldmljZVJlbW92
ZWQoSU9ISUREZXZpY2VSZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVm
KTsKIAorICAgIHZvaWQgaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCkgeyBt
X2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgPSB0cnVlOyB9CisKIHByaXZh
dGU6CiAgICAgSElER2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDEwICs3MywxMiBAQCBwcml2
YXRlOgogCiAgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAg
ICBIYXNoTWFwPElPSElERGV2aWNlUmVmLCBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4+IG1f
Z2FtZXBhZE1hcDsKKyAgICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9sbGVy
TWFuYWdlZEdhbWVwYWRzOwogCiAgICAgUmV0YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9tYW5h
Z2VyOwogCiAgICAgYm9vbCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgeyBmYWxzZSB9
OwogCiAgICAgVGltZXIgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1l
ciBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWI4MTJhYjA3NWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92
aWRlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJHYW1lcGFkUHJv
dmlkZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTXVsdGlHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFByb3Zp
ZGVyLCBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5NdWx0aUdhbWVwYWRQcm92aWRlcigpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBNdWx0aUdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICAvLyBHYW1l
cGFkUHJvdmlkZXIKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92
aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1l
cGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1l
cGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7
IH0KKyAgICBib29sIGlzTW9ja0dhbWVwYWRQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICAvLyBHYW1lcGFkUHJvdmlkZXJDbGllbnQKKyAgICB2b2lkIHBsYXRmb3JtR2Ft
ZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxl
KSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdh
bWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZl
bnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKwor
ICAgIGJvb2wgbV9zaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBzaXpl
X3QgbV9pbml0aWFsR2FtZXBhZHNDb3VudCB7IDAgfTsKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1l
cGFkKj4gbV9nYW1lcGFkVmVjdG9yOworCisgICAgLy8gV2UgY3JlYXRlIG91ciBvd24gR2FtZXBh
ZCB0eXBlIC0gdG8gd3JhcCBib3RoIEhJRCBhbmQgR2FtZUNvbnRyb2xlciBnYW1lcGFkcyAtCisg
ICAgLy8gYmVjYXVzZSBNdWx0aUdhbWVwYWRQcm92aWRlciBuZWVkcyB0byBtYW5hZ2UgdGhlIGlu
ZGV4ZXMgb2YgaXRzIG93biBnYW1lcGFkcworICAgIC8vIG5vIG1hdHRlciB3aGF0IHRoZSBISUQg
b3IgR2FtZUNvbnRyb2xsZXIgaW5kZXggaXMuCisgICAgY2xhc3MgUGxhdGZvcm1HYW1lcGFkV3Jh
cHBlciA6IHB1YmxpYyBQbGF0Zm9ybUdhbWVwYWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGxh
dGZvcm1HYW1lcGFkV3JhcHBlcih1bnNpZ25lZCBpbmRleCwgUGxhdGZvcm1HYW1lcGFkKiB3cmFw
cGVkKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUdhbWVwYWQoaW5kZXgpCisgICAgICAgICAgICAs
IG1fcGxhdGZvcm1HYW1lcGFkKHdyYXBwZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faWQg
PSB3cmFwcGVkLT5pZCgpOworICAgICAgICAgICAgbV9tYXBwaW5nID0gd3JhcHBlZC0+bWFwcGlu
ZygpOworICAgICAgICAgICAgbV9jb25uZWN0VGltZSA9IHdyYXBwZWQtPmNvbm5lY3RUaW1lKCk7
CisgICAgICAgIH0KKworICAgICAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmxhc3RVcGRhdGVUaW1lKCk7IH0K
KyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+YXhpc1ZhbHVlcygpOyB9CisgICAgICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bs
YXRmb3JtR2FtZXBhZC0+YnV0dG9uVmFsdWVzKCk7IH0KKworICAgICAgICBjb25zdCBjaGFyKiBz
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+c291cmNlKCk7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZCogbV9wbGF0Zm9ybUdh
bWVwYWQ7CisgICAgfTsKKworICAgIEhhc2hNYXA8UGxhdGZvcm1HYW1lcGFkKiwgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+PiBtX2dhbWVwYWRNYXA7CisgICAgYm9vbCBt
X2hpZEltcG9ydENvbXBsZXRlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92
aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBh
ZFByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMGUy
MWIxNWY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11bHRpR2FtZXBhZFByb3ZpZGVy
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiSElER2FtZXBhZFByb3Zp
ZGVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIK
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBzaXplX3QgbnVtYmVyT2ZHYW1lcGFkUHJvdmlkZXJzID0gMjsKKworTXVsdGlHYW1l
cGFkUHJvdmlkZXImIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxNdWx0aUdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7
CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3Zp
ZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBib29sIG1vbml0b3JPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5pc0VtcHR5
KCk7CisKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9j
bGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCk7CisgICAgR2FtZUNvbnRy
b2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnByZXdhcm1HYW1lQ29udHJvbGxlckRl
dmljZXNJZk5lY2Vzc2FyeSgpOworCisgICAgaWYgKG1vbml0b3JPdGhlclByb3ZpZGVycykgewor
ICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dh
bWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Zv
aWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFBy
b3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygm
Y2xpZW50KSk7CisKKyAgICBib29sIHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMg
PSBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAg
ICBpZiAoc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycykgeworICAgICAgICBISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMp
OworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rv
cE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgfQorfQorCit1bnNpZ25lZCBNdWx0aUdh
bWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXpl
KCkgJiYgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIEFT
U0VSVChpbmRleCA8PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKworICAgIGlmIChpbmRleCA9
PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtX2dhbWVwYWRWZWN0b3IucmVzaXpl
KGluZGV4ICsgMSk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVw
YWQsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAgIGF1
dG8gaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBMT0coR2Ft
ZXBhZCwgIk11bHRpR2FtZXBhZFByb3ZpZGVyIGFkZGluZyBuZXcgcGxhdGZvcm0gZ2FtZXBhZCB0
byBpbmRleCAlaSBmcm9tIGEgJXMgc291cmNlIiwgaW5kZXgsIGdhbWVwYWQuc291cmNlKCkpOwor
CisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPiBpbmRleCk7CisKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fZ2FtZXBhZE1hcC5zZXQoJmdhbWVwYWQsIFdURjo6bWFrZVVuaXF1ZTxQ
bGF0Zm9ybUdhbWVwYWRXcmFwcGVyPihpbmRleCwgJmdhbWVwYWQpKTsKKyAgICBBU1NFUlQoYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworfQorCit2b2lkIE11bHRpR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBn
YW1lcGFkKQoreworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgZGlzY29u
bmVjdGluZyBnYW1lcGFkIGZyb20gYSAlcyBzb3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgpKTsKKwor
ICAgIGF1dG8gZ2FtZXBhZFdyYXBwZXIgPSBtX2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBhZCk7CisK
KyAgICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXIpOworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlci0+
aW5kZXgoKSA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworICAgIEFTU0VSVChtX2dhbWVwYWRW
ZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4KCldID09IGdhbWVwYWRXcmFwcGVyLmdldCgpKTsK
KworICAgIG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPSBudWxscHRy
OworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpnYW1lcGFkV3JhcHBlcik7Cit9CisKK3ZvaWQg
TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRN
YWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgaWYgKGV2ZW50Vmlz
aWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVw
YWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShldmVudFZpc2liaWxpdHkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5OWE0MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE11bHRpcGxleCB0aGUgSElEIGFuZCBHYW1lQ29u
dHJvbGxlciBnYW1lcGFkIHByb3ZpZGVycyBvbiBNYWMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MzE5MjUzMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQxMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFk
UHJvdmlkZXIpOgorCiAyMDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZ2dyZXNzaXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3Jr
IGdhbWVwYWQgcHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXggYWIy
YzdmYjg4ZDMuLjE5NGFhMzU2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBA
IC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011bHRp
R2FtZXBhZFByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC01Myw3ICs1NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9sbGVy
RnJhbWV3b3JrKQogICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQotICAg
ICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3Zp
ZGVyKE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403901</attachid>
            <date>2020-07-09 12:05:00 -0700</date>
            <delta_ts>2020-07-09 12:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33424</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjljYTY5ODkyMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERWxlbWVudC5oPgorI2luY2x1ZGUgPElPS2l0L2hp
ZC9JT0hJRFVzYWdlVGFibGVzLmg+CisjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElEVmFsdWUuaD4K
KwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPElPS2l0L2hpZC9JT0hJ
RERldmljZS5oPgpAQCAtNTAsNiArNTQsNyBAQCB0eXBlZGVmIHVpbnQzMl90IElPSElERXZlbnRG
aWVsZDsKIAogdHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fSU9ISURFdmVudCAqIElPSElE
RXZlbnRSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0lPSElEU2VydmljZUNsaWVudCAqIElPSElEU2Vy
dmljZUNsaWVudFJlZjsKIAogI2RlZmluZSBJT0hJREV2ZW50RmllbGRCYXNlKHR5cGUpICh0eXBl
IDw8IDE2KQogCkBAIC0xNDksNiArMTU0LDggQEAgdm9pZCBJT0hJREV2ZW50U2V0SW50ZWdlclZh
bHVlKElPSElERXZlbnRSZWYsIElPSElERXZlbnRGaWVsZCwgQ0ZJbmRleCk7CiB2b2lkIElPSElE
RXZlbnRBcHBlbmRFdmVudChJT0hJREV2ZW50UmVmLCBJT0hJREV2ZW50UmVmLCBJT09wdGlvbkJp
dHMpOwogCiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYpOwordm9pZCBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0
Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKK0lPSElE
U2VydmljZUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdp
c3RyeUlEKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIHVpbnQ2NF90KTsKIAogI2RlZmluZSBr
R1NFdmVudFBhdGhJbmZvSW5SYW5nZSAoMSA8PCAwKQogI2RlZmluZSBrR1NFdmVudFBhdGhJbmZv
SW5Ub3VjaCAoMSA8PCAxKQpAQCAtMjM0LDYgKzI0MSw3IEBAIHZvaWQgSU9ISUREZXZpY2VSZWdp
c3RlcklucHV0UmVwb3J0Q2FsbGJhY2soSU9ISUREZXZpY2VSZWYsIHVpbnQ4X3QqLCBDRkluZGV4
LCBJCiB2b2lkIElPSElERGV2aWNlVW5zY2hlZHVsZUZyb21SdW5Mb29wKElPSElERGV2aWNlUmVm
LCBDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKIElPUmV0dXJuIElPSElERGV2aWNlQ2xvc2Uo
SU9ISUREZXZpY2VSZWYsIElPT3B0aW9uQml0cyk7CiBJT1JldHVybiBJT0hJRERldmljZVNldFJl
cG9ydChJT0hJRERldmljZVJlZiwgSU9ISURSZXBvcnRUeXBlLCBDRkluZGV4LCBjb25zdCB1aW50
OF90KiwgQ0ZJbmRleCk7Citpb19zZXJ2aWNlX3QgSU9ISUREZXZpY2VHZXRTZXJ2aWNlKElPSElE
RGV2aWNlUmVmKTsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBfX0lPSElE
TWFuYWdlciAqIElPSElETWFuYWdlclJlZjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NTIyMDQ3NDlkYmIuLmFlNTE3MmMzNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1
OCw2ICsyNTgsNyBAQCBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBh
ZC5tbQogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5tbQogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRp
R2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGwubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYu
Ljc2YzU1NDg2YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTky
MDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29k
ZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIw
MDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFG
MzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaCAqLzsgfTsKQEAgLTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0
RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0
ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5z
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4
dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3
MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2Vy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5NTc5LDYgKzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBE
RDdDNjggLyogSElER2FtZXBhZC5oICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAv
KiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2
OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5
NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJ
CQkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJv
a2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0
ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0Qjgy
MDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ1QkE2QjYyMzc2MjJBMzAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRh
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvUGxhdGZvcm1HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L1BsYXRmb3JtR2FtZXBhZC5oCmluZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBA
IC00MSwxMSArNDEsMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9tYXBwaW5nOyB9CiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9Ci0gICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFVwZGF0ZVRpbWU7IH0KKyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0
ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3Rvbmlj
VGltZSBjb25uZWN0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsK
IAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25v
d24iX3M7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNp
Z25lZCBpbmRleCkKICAgICAgICAgOiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLmgKaW5kZXggNzJlNTNiYTEwNjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAg
ICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiR2FtZUNvbnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lk
IHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEu
LjJlM2ZkNDFhNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU2LDYgKzU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGdh
bWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmLCBib29sIGhhZEJ1dHRvblByZXNz
ZXMpOwogICAgIHZvaWQgcHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7
CiAKKyAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgc3RhdGljIGJvb2wgd2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmlj
ZVJlZik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlcigpOwogCkBAIC03MSw4ICs3OCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlucHV0Tm90
aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRz
VmlzaWJsZSgpOwotCiAgICAgSGFzaE1hcDxDRlR5cGVSZWYsIHN0ZDo6dW5pcXVlX3B0cjxHYW1l
Q29udHJvbGxlckdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CiAgICAgVmVjdG9yPFBsYXRmb3JtR2Ft
ZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoU2V0PFBsYXRmb3JtR2FtZXBhZCo+IG1f
aW52aXNpYmxlR2FtZXBhZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5tbQppbmRleCBiYjQxMmY5MTg5NS4uNGUwMGJlNjEyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMjksMTIgKzI5LDE0IEBACiAjaWYgRU5BQkxF
KEdBTUVQQUQpCiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgotI2ltcG9ydCAi
R2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HYW1lQ29u
dHJvbGxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExpbmsu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBpbnB1dE5v
dGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTcsNTIgQEAgdm9pZCBHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkK
ICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKIH0KIAorI2lmIFBM
QVRGT1JNKE1BQykKK2Jvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5k
bGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQoreworICAgIGlmICghaXNHYW1lQ29u
dHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGRldmljZVNlcnZpY2UgPSBJT0hJRERldmljZUdldFNlcnZpY2UoZGV2aWNlKTsKKyAg
ICBpZiAoIWRldmljZVNlcnZpY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENo
ZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZpY2UKKyAgICB1aW50NjRf
dCByZWdpc3RyeUlEOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQo
ZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURF
dmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CisgICAgSU9ISURFdmVudFN5c3RlbUNs
aWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBh
dXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vy
dmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsK
KyAgICBpZiAoc2VydmljZUNsaWVudCkgeworICAgICAgICBpZiAoQ29udHJvbGxlckNsYXNzRm9y
U2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaXRzIGdyYW5kY2hpbGQgc2VydmljZQor
ICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgY2hpbGQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdl
dENoaWxkRW50cnkoZGV2aWNlU2VydmljZSwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtF
Uk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5
KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJlZ2lz
dHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2Vy
dmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9y
UmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlm
ICghc2VydmljZUNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENv
bnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSk7Cit9CisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4ZTc1YjdiNS4uMjcyM2Fm
Y2Y2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTI3LDggKzI3LDI1IEBACiAKICNpbXBvcnQg
PEdhbWVDb250cm9sbGVyL0dDQ29udHJvbGxlci5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2lt
cG9ydCA8SU9LaXQvaGlkc3lzdGVtL0lPSElEU2VydmljZUNsaWVudC5oPgorI2VuZGlmCisKIEBp
bnRlcmZhY2UgR0NDb250cm9sbGVyICgpCiArICh2b2lkKV9fb3BlblhQQ19hbmRfQ0JBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKworV1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxp
dHkuaD4KK1dURl9FWFRFUk5fQ19FTkQKKworI2Vsc2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitD
bGFzcyBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZik7CitX
VEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2Vu
ZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGlu
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLmgKaW5kZXggMTAxODNiZmMxNzUuLjEzOWUyYjkzNTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExp
bmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyU29mdExpbmsuaApAQCAtMzYsNCArMzYsOCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVj
dE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9G
T1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25u
ZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRyb2xs
ZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2Up
LCAoc2VydmljZSkpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQppbmRleCBjMTA3MGM0MTk2
Yi4uMTc2NjJhMzljMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KQEAgLTM2LDQg
KzM2LDggQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUwoV2ViQ29yZSwgR2Ft
ZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlcikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9G
T1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25uZWN0
Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nvbm5l
Y3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxl
ckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSks
IChzZXJ2aWNlKSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmNwcAppbmRleCA0ZjVkOTBlNTY2ZS4uZTkyNzNjNDMzZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCkBAIC0y
OCw5ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCi0j
aW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERWxlbWVudC5oPgotI2luY2x1ZGUgPElPS2l0L2hpZC9J
T0hJRFVzYWdlVGFibGVzLmg+Ci0jaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElEVmFsdWUuaD4KKyNp
bmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJl
ci5oPgogI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWQuaAppbmRleCBhMjUyMzRmYjg3NS4uYTU1MGFmMGEzMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKQEAgLTI4LDcgKzI4
LDcgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAi
UGxhdGZvcm1HYW1lcGFkLmgiCi0jaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERGV2aWNlLmg+Cisj
aW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KQEAgLTEyMSw2ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4m
IGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBj
b25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJISUQiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRFbGVtZW50cygp
OwogICAgIHZvaWQgaW5pdEVsZW1lbnRzRnJvbUFycmF5KENGQXJyYXlSZWYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKaW5kZXggMGI2MzIyNWMwN2MuLjVhZjU5NTk4YmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9S
TShNQUMpCiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW1w
b3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlBsYXRmb3JtR2FtZXBhZC5oIgpAQCAtMTc4LDYgKzE3OSwxMiBAQCB2b2lkIEhJREdhbWVw
YWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQm
IGNsaWVudCkKIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2
aWNlUmVmIGRldmljZSkKIHsKKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmtEZXZpY2VzICYmIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElE
RGV2aWNlKGRldmljZSkpIHsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBm
cmFtZXdvcmsgd2lsbCBoYW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3Zp
ZGVyIGlnbm9yaW5nIGl0IiwgZGV2aWNlKTsKKyAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFn
ZWRHYW1lcGFkcy5hZGQoZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFT
U0VSVCghbV9nYW1lcGFkTWFwLmdldChkZXZpY2UpKTsKIAogICAgIExPRyhHYW1lcGFkLCAiSElE
R2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CkBAIC0yMDEsMTYgKzIw
OCwyOCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VS
ZWYgZGV2aWNlKQogICAgICAgICAgICAgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lci5z
dGFydE9uZVNob3QoMF9zKTsKICAgICB9CiAKKyAgICBhdXRvIGV2ZW50VmlzaWJpbGl0eSA9IG1f
aW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVz
IDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm87CiAgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCpt
X2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50
TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5v
KTsKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZl
Y3RvcltpbmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7CisKKyAgICAvLyBJZiB3ZSBhcmUgd29ya2lu
ZyB0b2dldGhlciB3aXRoIHRoZSBHYW1lQ29udHJvbGxlciBwcm92aWRlciwgbGV0IGl0IGtub3cK
KyAgICAvLyB0aGF0IGdhbWVwYWRzIHNob3VsZCBub3cgYmUgdmlzaWJsZS4KKyAgICBpZiAobV9p
Z25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIGV2ZW50VmlzaWJpbGl0eSA9
PSBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJs
ZSgpOwogfQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERl
dmljZVJlZiBkZXZpY2UpCiB7Ci0gICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIg
ZGV2aWNlICVwIHJlbW92ZWQiLCBkZXZpY2UpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwot
ICAgIEFTU0VSVChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICBpZiAoIXJlbW92ZWRHYW1lcGFkKSB7
CisgICAgICAgIGF1dG8gdGFrZW4gPSBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLnRh
a2UoZGV2aWNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4pOworICAgICAg
ICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBpbmZvcm1lZCBvZiByZW1vdmFsIG9m
IGRldmljZSAlcCwgd2hpY2ggaXMgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsu
IElnbm9yaW5nLiIsIGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0co
R2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7
CiAKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5w
bGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKQEAgLTI0OSw3ICsy
NjgsOCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZp
cmVkKCkKIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBISURHYW1lcGFkUHJvdmlkZXI6OnJl
bW92ZUdhbWVwYWRGb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZXN1bHQgPSBtX2dhbWVwYWRNYXAudGFrZShkZXZpY2Up
OwotICAgIEFTU0VSVChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CiAgICAgaWYgKGkgIT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCmluZGV4IDFiYjU0ZWU1
NjFiLi5mYjQ0MzhhZTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZik7CiAgICAgdm9pZCB2
YWx1ZXNDaGFuZ2VkKElPSElEVmFsdWVSZWYpOwogCisgICAgdm9pZCBpZ25vcmVHYW1lQ29udHJv
bGxlckZyYW1ld29ya0RldmljZXMoKSB7IG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3Jr
RGV2aWNlcyA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBISURHYW1lcGFkUHJvdmlkZXIoKTsK
IApAQCAtNzEsMTAgKzczLDEyIEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UGxhdGZvcm1HYW1l
cGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hNYXA8SU9ISUREZXZpY2VSZWYsIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOworICAgIEhhc2hTZXQ8SU9ISURE
ZXZpY2VSZWY+IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHM7CiAKICAgICBSZXRhaW5Q
dHI8SU9ISURNYW5hZ2VyUmVmPiBtX21hbmFnZXI7CiAKICAgICBib29sIG1faW5pdGlhbEdhbWVw
YWRzQ29ubmVjdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faWdub3Jlc0dhbWVDb250cm9sbGVy
RnJhbWV3b3JrRGV2aWNlcyB7IGZhbHNlIH07CiAKICAgICBUaW1lciBtX2luaXRpYWxHYW1lcGFk
c0Nvbm5lY3RlZFRpbWVyOwogICAgIFRpbWVyIG1faW5wdXROb3RpZmljYXRpb25UaW1lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBh
ZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdh
bWVwYWRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x
YjgxMmFiMDc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1B
QykKKworI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgIkdhbWVwYWRQcm92
aWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdWx0aUdhbWVwYWRQcm92
aWRlciA6IHB1YmxpYyBHYW1lcGFkUHJvdmlkZXIsIHB1YmxpYyBHYW1lcGFkUHJvdmlkZXJDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk11bHRpR2FtZXBhZFByb3ZpZGVyKCkgPSBkZWZh
dWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE11bHRpR2FtZXBhZFByb3ZpZGVyJiBz
aW5nbGV0b24oKTsKKworICAgIC8vIEdhbWVwYWRQcm92aWRlcgorICAgIHZvaWQgc3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgdm9pZCBz
dG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAg
IGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFs
IHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorICAgIGJvb2wgaXNNb2NrR2FtZXBhZFByb3Zp
ZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEdhbWVwYWRQcm92aWRlckNs
aWVudAorICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYs
IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1l
cGFkRGlzY29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZv
cm1HYW1lcGFkSW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsK
KworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hQbGF0Zm9ybUdh
bWVwYWRJbnB1dEFjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgaW5kZXhGb3JO
ZXdseUNvbm5lY3RlZERldmljZSgpOworCisgICAgYm9vbCBtX3Nob3VsZE1ha2VHYW1lcGFkc1Zp
c2libGUgeyBmYWxzZSB9OworICAgIHNpemVfdCBtX2luaXRpYWxHYW1lcGFkc0NvdW50IHsgMCB9
OworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CisKKyAgICAv
LyBXZSBjcmVhdGUgb3VyIG93biBHYW1lcGFkIHR5cGUgLSB0byB3cmFwIGJvdGggSElEIGFuZCBH
YW1lQ29udHJvbGVyIGdhbWVwYWRzIC0KKyAgICAvLyBiZWNhdXNlIE11bHRpR2FtZXBhZFByb3Zp
ZGVyIG5lZWRzIHRvIG1hbmFnZSB0aGUgaW5kZXhlcyBvZiBpdHMgb3duIGdhbWVwYWRzCisgICAg
Ly8gbm8gbWF0dGVyIHdoYXQgdGhlIEhJRCBvciBHYW1lQ29udHJvbGxlciBpbmRleCBpcy4KKyAg
ICBjbGFzcyBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7
CisgICAgcHVibGljOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyKHVuc2lnbmVkIGlu
ZGV4LCBQbGF0Zm9ybUdhbWVwYWQqIHdyYXBwZWQpCisgICAgICAgICAgICA6IFBsYXRmb3JtR2Ft
ZXBhZChpbmRleCkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybUdhbWVwYWQod3JhcHBlZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9pZCA9IHdyYXBwZWQtPmlkKCk7CisgICAgICAgICAgICBt
X21hcHBpbmcgPSB3cmFwcGVkLT5tYXBwaW5nKCk7CisgICAgICAgICAgICBtX2Nvbm5lY3RUaW1l
ID0gd3JhcHBlZC0+Y29ubmVjdFRpbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIE1vbm90b25p
Y1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2Ft
ZXBhZC0+bGFzdFVwZGF0ZVRpbWUoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYg
YXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5heGlz
VmFsdWVzKCk7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5idXR0b25WYWx1ZXMoKTsg
fQorCisgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cGxhdGZvcm1HYW1lcGFkLT5zb3VyY2UoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGxh
dGZvcm1HYW1lcGFkKiBtX3BsYXRmb3JtR2FtZXBhZDsKKyAgICB9OworCisgICAgSGFzaE1hcDxQ
bGF0Zm9ybUdhbWVwYWQqLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4+
IG1fZ2FtZXBhZE1hcDsKKyAgICBib29sIG1faGlkSW1wb3J0Q29tcGxldGUgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQp
ICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwZTIxYjE1ZjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0K
QEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQ
TEFURk9STShNQUMpCisKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgi
CisjaW1wb3J0ICJISURHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHNpemVfdCBudW1iZXJPZkdhbWVwYWRQ
cm92aWRlcnMgPSAyOworCitNdWx0aUdhbWVwYWRQcm92aWRlciYgTXVsdGlHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE11bHRpR2FtZXBh
ZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hhcmVkUHJvdmlkZXI7Cit9
CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdh
bWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wgbW9uaXRvck90aGVyUHJv
dmlkZXJzID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCghbV9jbGllbnRzLmNv
bnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworCisgICAgSElE
R2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pZ25vcmVHYW1lQ29udHJvbGxlckZyYW1ld29y
a0RldmljZXMoKTsKKyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkucHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAo
bW9uaXRvck90aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2lu
Z2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgICAgICBHYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBh
ZHMoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RvcE1v
bml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBB
U1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKworICAgIGJvb2wgc2hvdWxkU3Rv
cE1vbml0b3JpbmdPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCkgJiYg
bV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIGlmIChzaG91bGRTdG9wTW9uaXRvcmluZ090aGVy
UHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rv
cE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAg
ICB9Cit9CisKK3Vuc2lnbmVkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29u
bmVjdGVkRGV2aWNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGlu
ZGV4IDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdKQor
ICAgICAgICArK2luZGV4OworCisgICAgQVNTRVJUKGluZGV4IDw9IG1fZ2FtZXBhZFZlY3Rvci5z
aXplKCkpOworCisgICAgaWYgKGluZGV4ID09IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpCisgICAg
ICAgIG1fZ2FtZXBhZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKworICAgIHJldHVybiBpbmRl
eDsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVj
dGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCwgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBl
dmVudFZpc2liaWxpdHkpCit7CisgICAgYXV0byBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0
ZWREZXZpY2UoKTsKKworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgYWRk
aW5nIG5ldyBwbGF0Zm9ybSBnYW1lcGFkIHRvIGluZGV4ICVpIGZyb20gYSAlcyBzb3VyY2UiLCBp
bmRleCwgZ2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yLnNp
emUoKSA+IGluZGV4KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9nYW1lcGFkTWFwLnNldCgm
Z2FtZXBhZCwgV1RGOjptYWtlVW5pcXVlPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+KGluZGV4LCAm
Z2FtZXBhZCkpOworICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgbV9nYW1l
cGFkVmVjdG9yW2luZGV4XSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9y
bUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIGV2ZW50VmlzaWJpbGl0
eSk7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nv
bm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAgTE9HKEdhbWVwYWQsICJN
dWx0aUdhbWVwYWRQcm92aWRlciBkaXNjb25uZWN0aW5nIGdhbWVwYWQgZnJvbSBhICVzIHNvdXJj
ZSIsIGdhbWVwYWQuc291cmNlKCkpOworCisgICAgYXV0byBnYW1lcGFkV3JhcHBlciA9IG1fZ2Ft
ZXBhZE1hcC50YWtlKCZnYW1lcGFkKTsKKworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlcik7Cisg
ICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyLT5pbmRleCgpIDwgbV9nYW1lcGFkVmVjdG9yLnNpemUo
KSk7CisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0g
PT0gZ2FtZXBhZFdyYXBwZXIuZ2V0KCkpOworCisgICAgbV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRX
cmFwcGVyLT5pbmRleCgpXSA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKmdh
bWVwYWRXcmFwcGVyKTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1H
YW1lcGFkSW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJp
bGl0eSkKK3sKKyAgICBpZiAoZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zp
c2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyAgICBmb3IgKGF1dG8m
IGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRJbnB1
dEFjdGl2aXR5KGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDMzNGRhMTY1YmJmLi5iZjBmYTk5YTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTXVs
dGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQgcHJvdmlkZXJzIG9uIE1h
Yy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1l
cGFkUHJvdmlkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisKIDIwMjAtMDctMDggIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFnZ3Jlc3NpdmVseSBwcmlt
ZSBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgZ2FtZXBhZCBwcm92aWRlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFk
UHJvdmlkZXJDb2NvYS5tbQppbmRleCBhYjJjN2ZiODhkMy4uMTk0YWEzNTY1ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlk
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJ
R2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSElE
R2FtZXBhZFByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vY2tHYW1lcGFkUHJvdmlkZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgdm9p
ZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKCkK
ICAgICBpZiAodXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCiAgICAgICAgIEdhbWVwYWRQcm92
aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpKTsKICAgICBlbHNlCi0gICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVk
UHJvdmlkZXIoSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisgICAgICAgIEdhbWVw
YWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403903</attachid>
            <date>2020-07-09 12:26:14 -0700</date>
            <delta_ts>2020-07-09 12:30:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33382</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjYzMGRjM2RlOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURFbGVtZW50Lmg+CisjaW5jbHVkZSA8SU9LaXQvaGlk
L0lPSElEVmFsdWUuaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQg
PElPS2l0L2hpZC9JT0hJRERldmljZS5oPgpAQCAtNTAsNiArNTMsNyBAQCB0eXBlZGVmIHVpbnQz
Ml90IElPSElERXZlbnRGaWVsZDsKIAogdHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50U3lzdGVt
Q2xpZW50ICogSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fSU9I
SURFdmVudCAqIElPSElERXZlbnRSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0lPSElEU2VydmljZUNs
aWVudCAqIElPSElEU2VydmljZUNsaWVudFJlZjsKIAogI2RlZmluZSBJT0hJREV2ZW50RmllbGRC
YXNlKHR5cGUpICh0eXBlIDw8IDE2KQogCkBAIC0xNDksNiArMTUzLDggQEAgdm9pZCBJT0hJREV2
ZW50U2V0SW50ZWdlclZhbHVlKElPSElERXZlbnRSZWYsIElPSElERXZlbnRGaWVsZCwgQ0ZJbmRl
eCk7CiB2b2lkIElPSElERXZlbnRBcHBlbmRFdmVudChJT0hJREV2ZW50UmVmLCBJT0hJREV2ZW50
UmVmLCBJT09wdGlvbkJpdHMpOwogCiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmIElPSElERXZl
bnRTeXN0ZW1DbGllbnRDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYpOwordm9pZCBJT0hJREV2ZW50U3lz
dGVtQ2xpZW50U2V0TWF0Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgQ0ZEaWN0aW9u
YXJ5UmVmKTsKK0lPSElEU2VydmljZUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29w
eVNlcnZpY2VGb3JSZWdpc3RyeUlEKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIHVpbnQ2NF90
KTsKIAogI2RlZmluZSBrR1NFdmVudFBhdGhJbmZvSW5SYW5nZSAoMSA8PCAwKQogI2RlZmluZSBr
R1NFdmVudFBhdGhJbmZvSW5Ub3VjaCAoMSA8PCAxKQpAQCAtMjM0LDYgKzI0MCw3IEBAIHZvaWQg
SU9ISUREZXZpY2VSZWdpc3RlcklucHV0UmVwb3J0Q2FsbGJhY2soSU9ISUREZXZpY2VSZWYsIHVp
bnQ4X3QqLCBDRkluZGV4LCBJCiB2b2lkIElPSElERGV2aWNlVW5zY2hlZHVsZUZyb21SdW5Mb29w
KElPSElERGV2aWNlUmVmLCBDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKIElPUmV0dXJuIElP
SElERGV2aWNlQ2xvc2UoSU9ISUREZXZpY2VSZWYsIElPT3B0aW9uQml0cyk7CiBJT1JldHVybiBJ
T0hJRERldmljZVNldFJlcG9ydChJT0hJRERldmljZVJlZiwgSU9ISURSZXBvcnRUeXBlLCBDRklu
ZGV4LCBjb25zdCB1aW50OF90KiwgQ0ZJbmRleCk7Citpb19zZXJ2aWNlX3QgSU9ISUREZXZpY2VH
ZXRTZXJ2aWNlKElPSElERGV2aWNlUmVmKTsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9U
WVBFKGlkKSBfX0lPSElETWFuYWdlciAqIElPSElETWFuYWdlclJlZjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMzNGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAK
IHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKK3BsYXRmb3JtL2dh
bWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gQG5vLXVuaWZ5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsNyBAQAogCQk1
MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENE
QyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9u
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdERUVFODFERTk0QjA4
MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2
NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVB
IC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFGMzE0MjUw
MDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYzMTQzQ0Qw
MDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBK
U1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAgLTgzNzAsNiArODM3MSw4IEBACiAJ
CTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTMxREU5NEFE
QzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcxREU5NEIwODAw
QjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11
bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11
bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0Uw
M0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyog
RE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAvKiBOYXZpZ2F0
b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYgKzE5NTgyLDggQEAKIAkJCQk1MTVC
RTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5oICovLAogCQkJCTUxNUJFMTk5MUQ1
NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovLAogCQkJCTUxNUJFMTlB
MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNG
NDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdF
MDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzI2OSw2
ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0
cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAw
MDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0Uw
M0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAwNERGQzA3IC8qIFN0eWxlQWRqdXN0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHls
ZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmluZGV4IDc1Y2M5ZWZlZjlkLi45MjE4
ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0
Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRm
b3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtYXBwaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0KKyAgICB2aXJ0dWFsIE1vbm90b25p
Y1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9
CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVj
dFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVl
cygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsYXRm
b3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgOiBtX2luZGV4KGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEwNjYuLjYxY2EwZDQ0NmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9h
eGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBz
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNvbnRyb2xsZXIiX3M7IH0KKwogcHJp
dmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsKICAgICB2b2lkIHNldHVw
QXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKaW5k
ZXggYmRkZWQxNzcwZjEuLjJlM2ZkNDFhNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAK
ICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lP
S2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU2LDYgKzU3LDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmLCBib29s
IGhhZEJ1dHRvblByZXNzZXMpOwogICAgIHZvaWQgcHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNl
c0lmTmVjZXNzYXJ5KCk7CiAKKyAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxl
KCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGJvb2wgd2lsbEhhbmRsZUhJRERl
dmljZShJT0hJRERldmljZVJlZik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSw4ICs3OCw2IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBtYWtlSW52
aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwotCiAgICAgSGFzaE1hcDxDRlR5cGVSZWYsIHN0ZDo6
dW5pcXVlX3B0cjxHYW1lQ29udHJvbGxlckdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CiAgICAgVmVj
dG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoU2V0PFBsYXRm
b3JtR2FtZXBhZCo+IG1faW52aXNpYmxlR2FtZXBhZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBiYjQxMmY5MTg5NS4uNGUwMGJlNjEyYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMjksMTIgKzI5LDE0
IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBh
ZC5oIgotI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogI2ltcG9ydCAiR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxHYW1lQ29u
dHJvbGxlci9HYW1lQ29udHJvbGxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250
cm9sbGVyU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBpbnB1dE5vdGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTcs
NTIgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRp
b25UaW1lckZpcmVkKCkKICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
KTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKK2Jvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQoreworICAg
IGlmICghaXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIGRldmljZVNlcnZpY2UgPSBJT0hJRERldmljZUdldFNlcnZp
Y2UoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZVNlcnZpY2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIENoZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZp
Y2UKKyAgICB1aW50NjRfdCByZWdpc3RyeUlEOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRS
ZWdpc3RyeUVudHJ5SUQoZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VT
UykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9
IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CisgICAgSU9I
SURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBu
dWxscHRyKTsKKyAgICBhdXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0
ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCks
IHJlZ2lzdHJ5SUQpKTsKKyAgICBpZiAoc2VydmljZUNsaWVudCkgeworICAgICAgICBpZiAoQ29u
dHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaXRzIGdyYW5k
Y2hpbGQgc2VydmljZQorICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgY2hpbGQ7CisgICAgaWYgKElP
UmVnaXN0cnlFbnRyeUdldENoaWxkRW50cnkoZGV2aWNlU2VydmljZSwga0lPU2VydmljZVBsYW5l
LCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghY2hpbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50
cnlHZXRDaGlsZEVudHJ5KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9T
VUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJ
RChjaGlsZCwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVu
dENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0
cnlJRCkpOworICAgIGlmICghc2VydmljZUNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQo
KSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4
ZTc1YjdiNS4uMjcyM2FmY2Y2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTI3LDggKzI3LDI1
IEBACiAKICNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dDQ29udHJvbGxlci5oPgogCisjaWYgUExB
VEZPUk0oTUFDKQorI2ltcG9ydCA8SU9LaXQvaGlkc3lzdGVtL0lPSElEU2VydmljZUNsaWVudC5o
PgorI2VuZGlmCisKIEBpbnRlcmZhY2UgR0NDb250cm9sbGVyICgpCiArICh2b2lkKV9fb3BlblhQ
Q19hbmRfQ0JBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKworV1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxHYW1lQ29u
dHJvbGxlci9HQ1V0aWxpdHkuaD4KK1dURl9FWFRFUk5fQ19FTkQKKworI2Vsc2UKKworV1RGX0VY
VEVSTl9DX0JFR0lOCitDbGFzcyBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2Vydmlj
ZUNsaWVudFJlZik7CitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKaW5kZXggMTAxODNiZmMxNzUuLjEzOWUyYjkzNTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaApAQCAtMzYsNCArMzYsOCBAQCBTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250
cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRy
b2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCisjaWYgUExBVEZP
Uk0oTUFDKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRy
b2xsZXIsIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xp
ZW50UmVmIHNlcnZpY2UpLCAoc2VydmljZSkpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShH
QU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQpp
bmRleCBjMTA3MGM0MTk2Yi4uMTc2NjJhMzljMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExp
bmsubW0KQEAgLTM2LDQgKzM2LDggQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9O
QUwoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlcikKIFNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRy
b2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJv
bGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKKyNpZiBQTEFURk9S
TShNQUMpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJv
bGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGll
bnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdB
TUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAppbmRleCA0ZjVkOTBlNTY2ZS4uZTkyNzNjNDMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuY3BwCkBAIC0yOCw5ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExB
VEZPUk0oTUFDKQogCi0jaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERWxlbWVudC5oPgotI2luY2x1
ZGUgPElPS2l0L2hpZC9JT0hJRFVzYWdlVGFibGVzLmg+Ci0jaW5jbHVkZSA8SU9LaXQvaGlkL0lP
SElEVmFsdWUuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCBhMjUyMzRmYjg3NS4uYTU1MGFmMGEzMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFD
KQogCiAjaW5jbHVkZSAiUGxhdGZvcm1HYW1lcGFkLmgiCi0jaW5jbHVkZSA8SU9LaXQvaGlkL0lP
SElERGV2aWNlLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KQEAgLTEyMSw2ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNW
YWx1ZXM7IH0KICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJISUQiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lk
IGluaXRFbGVtZW50cygpOwogICAgIHZvaWQgaW5pdEVsZW1lbnRzRnJvbUFycmF5KENGQXJyYXlS
ZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggMGI2MzIyNWMwN2MuLjVhZjU5NTk4YmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHQU1F
UEFEKSAmJiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLmgiCiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgpAQCAtMTc4LDYgKzE3OSwxMiBA
QCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFk
UHJvdmlkZXJDbGllbnQmIGNsaWVudCkKIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmlj
ZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKKyAgICBpZiAobV9pZ25vcmVzR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
Ojp3aWxsSGFuZGxlSElERGV2aWNlKGRldmljZSkpIHsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJH
YW1lQ29udHJvbGxlciBmcmFtZXdvcmsgd2lsbCBoYW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0g
SElER2FtZXBhZFByb3ZpZGVyIGlnbm9yaW5nIGl0IiwgZGV2aWNlKTsKKyAgICAgICAgbV9nYW1l
Q29udHJvbGxlck1hbmFnZWRHYW1lcGFkcy5hZGQoZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIEFTU0VSVCghbV9nYW1lcGFkTWFwLmdldChkZXZpY2UpKTsKIAogICAgIExP
RyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7
CkBAIC0yMDEsMTYgKzIwOCwyOCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRk
ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgICAgICAgICAgbV9pbml0aWFsR2FtZXBhZHND
b25uZWN0ZWRUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAgICB9CiAKKyAgICBhdXRvIGV2ZW50
VmlzaWJpbGl0eSA9IG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVw
YWRzVmlzaWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm87CiAgICAgZm9y
IChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1l
cGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBtX2luaXRpYWxHYW1lcGFkc0Nv
bm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1l
cGFkc1Zpc2libGU6Ok5vKTsKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0
ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7CisKKyAgICAvLyBJ
ZiB3ZSBhcmUgd29ya2luZyB0b2dldGhlciB3aXRoIHRoZSBHYW1lQ29udHJvbGxlciBwcm92aWRl
ciwgbGV0IGl0IGtub3cKKyAgICAvLyB0aGF0IGdhbWVwYWRzIHNob3VsZCBub3cgYmUgdmlzaWJs
ZS4KKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIGV2
ZW50VmlzaWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAg
IEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmls
ZUdhbWVwYWRzVmlzaWJsZSgpOwogfQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
UmVtb3ZlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7Ci0gICAgTE9HKEdhbWVwYWQsICJISURH
YW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIHJlbW92ZWQiLCBkZXZpY2UpOwotCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEhJREdhbWVwYWQ+IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRl
dmljZShkZXZpY2UpOwotICAgIEFTU0VSVChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICBpZiAoIXJl
bW92ZWRHYW1lcGFkKSB7CisgICAgICAgIGF1dG8gdGFrZW4gPSBtX2dhbWVDb250cm9sbGVyTWFu
YWdlZEdhbWVwYWRzLnRha2UoZGV2aWNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwg
dGFrZW4pOworICAgICAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBpbmZvcm1l
ZCBvZiByZW1vdmFsIG9mIGRldmljZSAlcCwgd2hpY2ggaXMgbWFuYWdlZCBieSBHYW1lQ29udHJv
bGxlciBmcmFtZXdvcmsuIElnbm9yaW5nLiIsIGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVt
b3ZlZCIsIGRldmljZSk7CiAKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAg
ICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFk
KTsKQEAgLTI0OSw3ICsyNjgsOCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3Rp
ZmljYXRpb25UaW1lckZpcmVkKCkKIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBISURHYW1l
cGFkUHJvdmlkZXI6OnJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNl
KQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZXN1bHQgPSBtX2dhbWVwYWRN
YXAudGFrZShkZXZpY2UpOwotICAgIEFTU0VSVChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5m
aW5kKHJlc3VsdC5nZXQoKSk7CiAgICAgaWYgKGkgIT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5o
CmluZGV4IDFiYjU0ZWU1NjFiLi5mYjQ0MzhhZTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTU2
LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJl
Zik7CiAgICAgdm9pZCB2YWx1ZXNDaGFuZ2VkKElPSElEVmFsdWVSZWYpOwogCisgICAgdm9pZCBp
Z25vcmVHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMoKSB7IG1faWdub3Jlc0dhbWVDb250
cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBISURHYW1l
cGFkUHJvdmlkZXIoKTsKIApAQCAtNzEsMTAgKzczLDEyIEBAIHByaXZhdGU6CiAKICAgICBWZWN0
b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hNYXA8SU9ISURE
ZXZpY2VSZWYsIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOworICAg
IEhhc2hTZXQ8SU9ISUREZXZpY2VSZWY+IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHM7
CiAKICAgICBSZXRhaW5QdHI8SU9ISURNYW5hZ2VyUmVmPiBtX21hbmFnZXI7CiAKICAgICBib29s
IG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faWdub3Jl
c0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyB7IGZhbHNlIH07CiAKICAgICBUaW1lciBt
X2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVyOwogICAgIFRpbWVyIG1faW5wdXROb3RpZmlj
YXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi4xYjgxMmFiMDc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCAr
MSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQp
ICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1
ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
dWx0aUdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBHYW1lcGFkUHJvdmlkZXIsIHB1YmxpYyBHYW1l
cGFkUHJvdmlkZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk11bHRpR2FtZXBhZFBy
b3ZpZGVyKCkgPSBkZWZhdWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE11bHRpR2Ft
ZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworICAgIC8vIEdhbWVwYWRQcm92aWRlcgorICAg
IHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmlu
YWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYpIGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1H
YW1lcGFkcygpIGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorICAgIGJvb2wgaXNN
b2NrR2FtZXBhZFByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEdh
bWVwYWRQcm92aWRlckNsaWVudAorICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBs
YXRmb3JtR2FtZXBhZCYsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworICAgIHZv
aWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOwor
ICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNW
aXNpYmxlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlz
cGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworCisgICAgYm9vbCBtX3Nob3Vs
ZE1ha2VHYW1lcGFkc1Zpc2libGUgeyBmYWxzZSB9OworICAgIHNpemVfdCBtX2luaXRpYWxHYW1l
cGFkc0NvdW50IHsgMCB9OworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRW
ZWN0b3I7CisKKyAgICAvLyBXZSBjcmVhdGUgb3VyIG93biBHYW1lcGFkIHR5cGUgLSB0byB3cmFw
IGJvdGggSElEIGFuZCBHYW1lQ29udHJvbGVyIGdhbWVwYWRzIC0KKyAgICAvLyBiZWNhdXNlIE11
bHRpR2FtZXBhZFByb3ZpZGVyIG5lZWRzIHRvIG1hbmFnZSB0aGUgaW5kZXhlcyBvZiBpdHMgb3du
IGdhbWVwYWRzCisgICAgLy8gbm8gbWF0dGVyIHdoYXQgdGhlIEhJRCBvciBHYW1lQ29udHJvbGxl
ciBpbmRleCBpcy4KKyAgICBjbGFzcyBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyIDogcHVibGljIFBs
YXRmb3JtR2FtZXBhZCB7CisgICAgcHVibGljOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWRXcmFw
cGVyKHVuc2lnbmVkIGluZGV4LCBQbGF0Zm9ybUdhbWVwYWQqIHdyYXBwZWQpCisgICAgICAgICAg
ICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybUdhbWVw
YWQod3JhcHBlZCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pZCA9IHdyYXBwZWQtPmlkKCk7
CisgICAgICAgICAgICBtX21hcHBpbmcgPSB3cmFwcGVkLT5tYXBwaW5nKCk7CisgICAgICAgICAg
ICBtX2Nvbm5lY3RUaW1lID0gd3JhcHBlZC0+Y29ubmVjdFRpbWUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3BsYXRmb3JtR2FtZXBhZC0+bGFzdFVwZGF0ZVRpbWUoKTsgfQorICAgICAgICBjb25zdCBW
ZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZv
cm1HYW1lcGFkLT5heGlzVmFsdWVzKCk7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4m
IGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5i
dXR0b25WYWx1ZXMoKTsgfQorCisgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5zb3VyY2UoKTsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFkKiBtX3BsYXRmb3JtR2FtZXBhZDsKKyAgICB9Owor
CisgICAgSGFzaE1hcDxQbGF0Zm9ybUdhbWVwYWQqLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1H
YW1lcGFkV3JhcHBlcj4+IG1fZ2FtZXBhZE1hcDsKKyAgICBib29sIG1faGlkSW1wb3J0Q29tcGxl
dGUgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwZTIxYjE1ZjhlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1l
cGFkUHJvdmlkZXIubW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJM
RShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJISURHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQg
IkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHNpemVfdCBu
dW1iZXJPZkdhbWVwYWRQcm92aWRlcnMgPSAyOworCitNdWx0aUdhbWVwYWRQcm92aWRlciYgTXVs
dGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE11bHRpR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hh
cmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRv
cmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wg
bW9uaXRvck90aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VS
VCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGll
bnQpOworCisgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pZ25vcmVHYW1lQ29u
dHJvbGxlckZyYW1ld29ya0RldmljZXMoKTsKKyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkucHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5
KCk7CisKKyAgICBpZiAobW9uaXRvck90aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOwor
ICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRN
b25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBNdWx0aUdhbWVwYWRQ
cm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNs
aWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKworICAg
IGJvb2wgc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5yZW1v
dmUoJmNsaWVudCkgJiYgbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIGlmIChzaG91bGRTdG9w
TW9uaXRvcmluZ090aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVw
YWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpp
bmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgd2hpbGUgKGluZGV4IDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVwYWRW
ZWN0b3JbaW5kZXhdKQorICAgICAgICArK2luZGV4OworCisgICAgQVNTRVJUKGluZGV4IDw9IG1f
Z2FtZXBhZFZlY3Rvci5zaXplKCkpOworCisgICAgaWYgKGluZGV4ID09IG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKwor
ICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCwgRXZlbnRNYWtlc0dh
bWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgYXV0byBpbmRleCA9IGluZGV4
Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1l
cGFkUHJvdmlkZXIgYWRkaW5nIG5ldyBwbGF0Zm9ybSBnYW1lcGFkIHRvIGluZGV4ICVpIGZyb20g
YSAlcyBzb3VyY2UiLCBpbmRleCwgZ2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBBU1NFUlQobV9n
YW1lcGFkVmVjdG9yLnNpemUoKSA+IGluZGV4KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9n
YW1lcGFkTWFwLnNldCgmZ2FtZXBhZCwgV1RGOjptYWtlVW5pcXVlPFBsYXRmb3JtR2FtZXBhZFdy
YXBwZXI+KGluZGV4LCAmZ2FtZXBhZCkpOworICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0s
IGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAg
TE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBkaXNjb25uZWN0aW5nIGdhbWVwYWQg
ZnJvbSBhICVzIHNvdXJjZSIsIGdhbWVwYWQuc291cmNlKCkpOworCisgICAgYXV0byBnYW1lcGFk
V3JhcHBlciA9IG1fZ2FtZXBhZE1hcC50YWtlKCZnYW1lcGFkKTsKKworICAgIEFTU0VSVChnYW1l
cGFkV3JhcHBlcik7CisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyLT5pbmRleCgpIDwgbV9nYW1l
cGFkVmVjdG9yLnNpemUoKSk7CisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3Jh
cHBlci0+aW5kZXgoKV0gPT0gZ2FtZXBhZFdyYXBwZXIuZ2V0KCkpOworCisgICAgbV9nYW1lcGFk
VmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRE
aXNjb25uZWN0ZWQoKmdhbWVwYWRXcmFwcGVyKTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNp
YmxlIGV2ZW50VmlzaWJpbGl0eSkKK3sKKyAgICBpZiAoZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50
TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0
Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDMzNGRhMTY1YmJmLi5iZjBmYTk5YTQwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVw
YWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisKIDIw
MjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFn
Z3Jlc3NpdmVseSBwcmltZSBHYW1lQ29udHJvbGxlci5mcmFtZXdvcmsgZ2FtZXBhZCBwcm92aWRl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlH
YW1lcGFkUHJvdmlkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQv
Y29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQppbmRleCBhYjJjN2ZiODhkMy4uMTk0YWEz
NTY1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2Ev
VUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vY2tH
YW1lcGFkUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTXVsdGlHYW1lcGFkUHJvdmlkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUz
LDcgKzU0LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2Ft
ZXBhZFByb3ZpZGVyKCkKICAgICBpZiAodXNlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCiAgICAg
ICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICAgICBlbHNlCi0gICAgICAgIEdhbWVwYWRQcm92
aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7
CisgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoTXVsdGlHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403904</attachid>
            <date>2020-07-09 12:30:30 -0700</date>
            <delta_ts>2020-07-09 12:45:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33426</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjYzMGRjM2RlOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURFbGVtZW50Lmg+CisjaW5jbHVkZSA8SU9LaXQvaGlk
L0lPSElEVmFsdWUuaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQg
PElPS2l0L2hpZC9JT0hJRERldmljZS5oPgpAQCAtNTAsNiArNTMsNyBAQCB0eXBlZGVmIHVpbnQz
Ml90IElPSElERXZlbnRGaWVsZDsKIAogdHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50U3lzdGVt
Q2xpZW50ICogSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fSU9I
SURFdmVudCAqIElPSElERXZlbnRSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0lPSElEU2VydmljZUNs
aWVudCAqIElPSElEU2VydmljZUNsaWVudFJlZjsKIAogI2RlZmluZSBJT0hJREV2ZW50RmllbGRC
YXNlKHR5cGUpICh0eXBlIDw8IDE2KQogCkBAIC0xNDksNiArMTUzLDggQEAgdm9pZCBJT0hJREV2
ZW50U2V0SW50ZWdlclZhbHVlKElPSElERXZlbnRSZWYsIElPSElERXZlbnRGaWVsZCwgQ0ZJbmRl
eCk7CiB2b2lkIElPSElERXZlbnRBcHBlbmRFdmVudChJT0hJREV2ZW50UmVmLCBJT0hJREV2ZW50
UmVmLCBJT09wdGlvbkJpdHMpOwogCiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmIElPSElERXZl
bnRTeXN0ZW1DbGllbnRDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYpOwordm9pZCBJT0hJREV2ZW50U3lz
dGVtQ2xpZW50U2V0TWF0Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgQ0ZEaWN0aW9u
YXJ5UmVmKTsKK0lPSElEU2VydmljZUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29w
eVNlcnZpY2VGb3JSZWdpc3RyeUlEKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIHVpbnQ2NF90
KTsKIAogI2RlZmluZSBrR1NFdmVudFBhdGhJbmZvSW5SYW5nZSAoMSA8PCAwKQogI2RlZmluZSBr
R1NFdmVudFBhdGhJbmZvSW5Ub3VjaCAoMSA8PCAxKQpAQCAtMjM0LDYgKzI0MCw3IEBAIHZvaWQg
SU9ISUREZXZpY2VSZWdpc3RlcklucHV0UmVwb3J0Q2FsbGJhY2soSU9ISUREZXZpY2VSZWYsIHVp
bnQ4X3QqLCBDRkluZGV4LCBJCiB2b2lkIElPSElERGV2aWNlVW5zY2hlZHVsZUZyb21SdW5Mb29w
KElPSElERGV2aWNlUmVmLCBDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKIElPUmV0dXJuIElP
SElERGV2aWNlQ2xvc2UoSU9ISUREZXZpY2VSZWYsIElPT3B0aW9uQml0cyk7CiBJT1JldHVybiBJ
T0hJRERldmljZVNldFJlcG9ydChJT0hJRERldmljZVJlZiwgSU9ISURSZXBvcnRUeXBlLCBDRklu
ZGV4LCBjb25zdCB1aW50OF90KiwgQ0ZJbmRleCk7Citpb19zZXJ2aWNlX3QgSU9ISUREZXZpY2VH
ZXRTZXJ2aWNlKElPSElERGV2aWNlUmVmKTsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9U
WVBFKGlkKSBfX0lPSElETWFuYWdlciAqIElPSElETWFuYWdlclJlZjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMzNGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAK
IHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKK3BsYXRmb3JtL2dh
bWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gQG5vLXVuaWZ5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsNyBAQAogCQk1
MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENE
QyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9u
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdERUVFODFERTk0QjA4
MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2
NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVB
IC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFGMzE0MjUw
MDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYzMTQzQ0Qw
MDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBK
U1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAgLTgzNzAsNiArODM3MSw4IEBACiAJ
CTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTMxREU5NEFE
QzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcxREU5NEIwODAw
QjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11
bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11
bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0Uw
M0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyog
RE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAvKiBOYXZpZ2F0
b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYgKzE5NTgyLDggQEAKIAkJCQk1MTVC
RTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5oICovLAogCQkJCTUxNUJFMTk5MUQ1
NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovLAogCQkJCTUxNUJFMTlB
MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNG
NDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCQk1MTdF
MDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzI2OSw2
ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0
cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAw
MDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0Uw
M0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAwNERGQzA3IC8qIFN0eWxlQWRqdXN0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHls
ZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmluZGV4IDc1Y2M5ZWZlZjlkLi45MjE4
ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0
Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRm
b3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtYXBwaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0KKyAgICB2aXJ0dWFsIE1vbm90b25p
Y1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9
CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVj
dFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVl
cygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3QgY2hhciogc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsYXRm
b3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgOiBtX2luZGV4KGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEwNjYuLjYxY2EwZDQ0NmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9h
eGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBz
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNvbnRyb2xsZXIiX3M7IH0KKwogcHJp
dmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVwYWQoKTsKICAgICB2b2lkIHNldHVw
QXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKaW5k
ZXggYmRkZWQxNzcwZjEuLjJlM2ZkNDFhNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAK
ICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lP
S2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTU2LDYgKzU3LDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQmLCBib29s
IGhhZEJ1dHRvblByZXNzZXMpOwogICAgIHZvaWQgcHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNl
c0lmTmVjZXNzYXJ5KCk7CiAKKyAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxl
KCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGJvb2wgd2lsbEhhbmRsZUhJRERl
dmljZShJT0hJRERldmljZVJlZik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSw4ICs3OCw2IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBtYWtlSW52
aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwotCiAgICAgSGFzaE1hcDxDRlR5cGVSZWYsIHN0ZDo6
dW5pcXVlX3B0cjxHYW1lQ29udHJvbGxlckdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CiAgICAgVmVj
dG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoU2V0PFBsYXRm
b3JtR2FtZXBhZCo+IG1faW52aXNpYmxlR2FtZXBhZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBiYjQxMmY5MTg5NS4uNGUwMGJlNjEyYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMjksMTIgKzI5LDE0
IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBh
ZC5oIgotI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogI2ltcG9ydCAiR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxHYW1lQ29u
dHJvbGxlci9HYW1lQ29udHJvbGxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250
cm9sbGVyU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBpbnB1dE5vdGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTcs
NTIgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRp
b25UaW1lckZpcmVkKCkKICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
KTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKK2Jvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQoreworICAg
IGlmICghaXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIGRldmljZVNlcnZpY2UgPSBJT0hJRERldmljZUdldFNlcnZp
Y2UoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZVNlcnZpY2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIENoZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZp
Y2UKKyAgICB1aW50NjRfdCByZWdpc3RyeUlEOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRS
ZWdpc3RyeUVudHJ5SUQoZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VT
UykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9
IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CisgICAgSU9I
SURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBu
dWxscHRyKTsKKyAgICBhdXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0
ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCks
IHJlZ2lzdHJ5SUQpKTsKKyAgICBpZiAoc2VydmljZUNsaWVudCkgeworICAgICAgICBpZiAoQ29u
dHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaXRzIGdyYW5k
Y2hpbGQgc2VydmljZQorICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgY2hpbGQ7CisgICAgaWYgKElP
UmVnaXN0cnlFbnRyeUdldENoaWxkRW50cnkoZGV2aWNlU2VydmljZSwga0lPU2VydmljZVBsYW5l
LCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghY2hpbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50
cnlHZXRDaGlsZEVudHJ5KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9T
VUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJ
RChjaGlsZCwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVu
dENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0
cnlJRCkpOworICAgIGlmICghc2VydmljZUNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQo
KSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4
ZTc1YjdiNS4uNDU0MzA0M2RkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTI3LDggKzI3LDI3
IEBACiAKICNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dDQ29udHJvbGxlci5oPgogCisjaWYgUExB
VEZPUk0oTUFDKQorI2ltcG9ydCA8SU9LaXQvaGlkc3lzdGVtL0lPSElEU2VydmljZUNsaWVudC5o
PgorI2VuZGlmCisKIEBpbnRlcmZhY2UgR0NDb250cm9sbGVyICgpCiArICh2b2lkKV9fb3BlblhQ
Q19hbmRfQ0JBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKK1dURl9FWFRFUk5fQ19CRUdJ
TgorI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NVdGlsaXR5Lmg+CitXVEZfRVhURVJOX0NfRU5E
CisKKyNlbHNlCisKK1dURl9FWFRFUk5fQ19CRUdJTgorQ2xhc3MgQ29udHJvbGxlckNsYXNzRm9y
U2VydmljZShJT0hJRFNlcnZpY2VDbGllbnRSZWYpOworV1RGX0VYVEVSTl9DX0VORAorCisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAj
ZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRM
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyU29mdExpbmsuaAppbmRleCAxMDE4M2JmYzE3NS4uMTM5ZTJiOTM1MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0
TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zNiw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFdlYkNvcmUsIEdDQ29udHJvbGxlcikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJ
TF9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25u
ZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
X0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nv
bm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKKyNpZiBQTEFURk9STShNQUMpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJv
bGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2Vydmlj
ZSksIChzZXJ2aWNlKSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCmluZGV4IGMxMDcwYzQx
OTZiLi4xNzY2MmEzOWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQpAQCAtMzYs
NCArMzYsOCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTChXZWJDb3JlLCBH
YW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5l
Y3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29u
bmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIAorI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9s
bGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNl
KSwgKHNlcnZpY2UpKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWQuY3BwCmluZGV4IDRmNWQ5MGU1NjZlLi5lOTI3M2M0MzNmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKQEAg
LTI4LDkgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAK
LSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURFbGVtZW50Lmg+Ci0jaW5jbHVkZSA8SU9LaXQvaGlk
L0lPSElEVXNhZ2VUYWJsZXMuaD4KLSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURWYWx1ZS5oPgor
I2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9LaXRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZC5oCmluZGV4IGEyNTIzNGZiODc1Li5hNTUwYWYwYTMzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybUdhbWVwYWQuaCIKLSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISUREZXZpY2UuaD4K
KyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgpAQCAtMTIxLDYgKzEyMSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8ZG91Ymxl
PiYgYXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1ZhbHVlczsgfQogICAg
IGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2J1dHRvblZhbHVlczsgfQogCisgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIkhJRCJfczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEVsZW1lbnRz
KCk7CiAgICAgdm9pZCBpbml0RWxlbWVudHNGcm9tQXJyYXkoQ0ZBcnJheVJlZik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcAppbmRleCAwYjYzMjI1YzA3Yy4uNWFmNTk1OThiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3Zp
ZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRG
T1JNKE1BQykKIAorI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKICNp
bXBvcnQgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1HYW1lcGFkLmgiCkBAIC0xNzgsNiArMTc5LDEyIEBAIHZvaWQgSElER2Ft
ZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYgY2xpZW50KQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISURE
ZXZpY2VSZWYgZGV2aWNlKQogeworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1l
d29ya0RldmljZXMgJiYgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVI
SUREZXZpY2UoZGV2aWNlKSkgeworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVy
IGZyYW1ld29yayB3aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1lcGFkUHJv
dmlkZXIgaWdub3JpbmcgaXQiLCBkZXZpY2UpOworICAgICAgICBtX2dhbWVDb250cm9sbGVyTWFu
YWdlZEdhbWVwYWRzLmFkZChkZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
QVNTRVJUKCFtX2dhbWVwYWRNYXAuZ2V0KGRldmljZSkpOwogCiAgICAgTE9HKEdhbWVwYWQsICJI
SURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKQEAgLTIwMSwxNiAr
MjA4LDI4IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmlj
ZVJlZiBkZXZpY2UpCiAgICAgICAgICAgICBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZFRpbWVy
LnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0KIAorICAgIGF1dG8gZXZlbnRWaXNpYmlsaXR5ID0g
bV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZ
ZXMgOiBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpObzsKICAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQo
Km1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZl
bnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6
Tm8pOworICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFk
VmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsKKworICAgIC8vIElmIHdlIGFyZSB3b3Jr
aW5nIHRvZ2V0aGVyIHdpdGggdGhlIEdhbWVDb250cm9sbGVyIHByb3ZpZGVyLCBsZXQgaXQga25v
dworICAgIC8vIHRoYXQgZ2FtZXBhZHMgc2hvdWxkIG5vdyBiZSB2aXNpYmxlLgorICAgIGlmICht
X2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgZXZlbnRWaXNpYmlsaXR5
ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNp
YmxlKCk7CiB9CiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElE
RGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRl
ciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElE
R2FtZXBhZD4gcmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7
Ci0gICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdhbWVwYWQp
IHsKKyAgICAgICAgYXV0byB0YWtlbiA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMu
dGFrZShkZXZpY2UpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7CisgICAg
ICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92YWwg
b2YgZGV2aWNlICVwLCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29y
ay4gSWdub3JpbmcuIiwgZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExP
RyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNl
KTsKIAogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQt
PnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAtMjQ5LDcg
KzI2OCw4IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVy
RmlyZWQoKQogc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWRQcm92aWRlcjo6
cmVtb3ZlR2FtZXBhZEZvckRldmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmlj
ZSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYXV0byBpID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQocmVzdWx0Lmdl
dCgpKTsKICAgICBpZiAoaSAhPSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJiNTRl
ZTU2MWIuLmZiNDQzOGFlMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lk
IHZhbHVlc0NoYW5nZWQoSU9ISURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250
cm9sbGVyRnJhbWV3b3JrRGV2aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdv
cmtEZXZpY2VzID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigp
OwogCkBAIC03MSwxMCArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdh
bWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3Rk
Ojp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJ
RERldmljZVJlZj4gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFp
blB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2Ft
ZXBhZHNDb25uZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmtEZXZpY2VzIHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVw
YWRzQ29ubmVjdGVkVGltZXI7CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1l
cGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRp
R2FtZXBhZFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjFiODEyYWIwNzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0o
TUFDKQorCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiR2FtZXBhZFBy
b3ZpZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11bHRpR2FtZXBhZFBy
b3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRlciwgcHVibGljIEdhbWVwYWRQcm92aWRlckNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TXVsdGlHYW1lcGFkUHJvdmlkZXIoKSA9IGRl
ZmF1bHQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTXVsdGlHYW1lcGFkUHJvdmlkZXIm
IHNpbmdsZXRvbigpOworCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyCisgICAgdm9pZCBzdGFydE1v
bml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lk
IHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7Cisg
ICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmlu
YWwgeyByZXR1cm4gbV9nYW1lcGFkVmVjdG9yOyB9CisgICAgYm9vbCBpc01vY2tHYW1lcGFkUHJv
dmlkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gR2FtZXBhZFByb3ZpZGVy
Q2xpZW50CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFk
JiwgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdh
bWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0
Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFs
OworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFBsYXRmb3Jt
R2FtZXBhZElucHV0QWN0aXZpdHkoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbmRleEZv
ck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBib29sIG1fc2hvdWxkTWFrZUdhbWVwYWRz
VmlzaWJsZSB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1faW5pdGlhbEdhbWVwYWRzQ291bnQgeyAw
IH07CisgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKKworICAg
IC8vIFdlIGNyZWF0ZSBvdXIgb3duIEdhbWVwYWQgdHlwZSAtIHRvIHdyYXAgYm90aCBISUQgYW5k
IEdhbWVDb250cm9sZXIgZ2FtZXBhZHMgLQorICAgIC8vIGJlY2F1c2UgTXVsdGlHYW1lcGFkUHJv
dmlkZXIgbmVlZHMgdG8gbWFuYWdlIHRoZSBpbmRleGVzIG9mIGl0cyBvd24gZ2FtZXBhZHMKKyAg
ICAvLyBubyBtYXR0ZXIgd2hhdCB0aGUgSElEIG9yIEdhbWVDb250cm9sbGVyIGluZGV4IGlzLgor
ICAgIGNsYXNzIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFk
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIodW5zaWduZWQg
aW5kZXgsIFBsYXRmb3JtR2FtZXBhZCogd3JhcHBlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1H
YW1lcGFkKGluZGV4KQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtR2FtZXBhZCh3cmFwcGVkKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2lkID0gd3JhcHBlZC0+aWQoKTsKKyAgICAgICAgICAg
IG1fbWFwcGluZyA9IHdyYXBwZWQtPm1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1fY29ubmVjdFRp
bWUgPSB3cmFwcGVkLT5jb25uZWN0VGltZSgpOworICAgICAgICB9CisKKyAgICAgICAgTW9ub3Rv
bmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1H
YW1lcGFkLT5sYXN0VXBkYXRlVGltZSgpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+
JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmF4
aXNWYWx1ZXMoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmJ1dHRvblZhbHVlcygp
OyB9CisKKyAgICAgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wbGF0Zm9ybUdhbWVwYWQtPnNvdXJjZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQ
bGF0Zm9ybUdhbWVwYWQqIG1fcGxhdGZvcm1HYW1lcGFkOworICAgIH07CisKKyAgICBIYXNoTWFw
PFBsYXRmb3JtR2FtZXBhZCosIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVy
Pj4gbV9nYW1lcGFkTWFwOworICAgIGJvb2wgbV9oaWRJbXBvcnRDb21wbGV0ZSB7IGZhbHNlIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzBlMjFiMTVmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5t
bQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNdWx0aUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYm
IFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIu
aCIKKyNpbXBvcnQgIkhJREdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgor
I2ltcG9ydCAiUGxhdGZvcm1HYW1lcGFkLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgc2l6ZV90IG51bWJlck9mR2FtZXBh
ZFByb3ZpZGVycyA9IDI7CisKK011bHRpR2FtZXBhZFByb3ZpZGVyJiBNdWx0aUdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXVsdGlHYW1l
cGFkUHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92aWRlcjsK
K30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMo
R2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBtb25pdG9yT3RoZXJQ
cm92aWRlcnMgPSBtX2NsaWVudHMuaXNFbXB0eSgpOworCisgICAgQVNTRVJUKCFtX2NsaWVudHMu
Y29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAgICBI
SURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3
b3JrRGV2aWNlcygpOworICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5wcmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKKworICAgIGlm
IChtb25pdG9yT3RoZXJQcm92aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1l
cGFkcygqdGhpcyk7CisgICAgfQorfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAg
IEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRT
dG9wTW9uaXRvcmluZ090aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAm
JiBtX2NsaWVudHMuaXNFbXB0eSgpOworCisgICAgaWYgKHNob3VsZFN0b3BNb25pdG9yaW5nT3Ro
ZXJQcm92aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5z
dG9wTW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOwor
ICAgIH0KK30KKwordW5zaWduZWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UoKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAo
aW5kZXggPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0p
CisgICAgICAgICsraW5kZXg7CisKKyAgICBBU1NFUlQoaW5kZXggPD0gbV9nYW1lcGFkVmVjdG9y
LnNpemUoKSk7CisKKyAgICBpZiAoaW5kZXggPT0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSkKKyAg
ICAgICAgbV9nYW1lcGFkVmVjdG9yLnJlc2l6ZShpbmRleCArIDEpOworCisgICAgcmV0dXJuIGlu
ZGV4OworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25u
ZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxl
IGV2ZW50VmlzaWJpbGl0eSkKK3sKKyAgICBhdXRvIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5l
Y3RlZERldmljZSgpOworCisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBh
ZGRpbmcgbmV3IHBsYXRmb3JtIGdhbWVwYWQgdG8gaW5kZXggJWkgZnJvbSBhICVzIHNvdXJjZSIs
IGluZGV4LCBnYW1lcGFkLnNvdXJjZSgpKTsKKworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3Iu
c2l6ZSgpID4gaW5kZXgpOworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dhbWVwYWRNYXAuc2V0
KCZnYW1lcGFkLCBXVEY6Om1ha2VVbmlxdWU8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4oaW5kZXgs
ICZnYW1lcGFkKSk7CisgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBtX2dh
bWVwYWRWZWN0b3JbaW5kZXhdID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKwor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRm
b3JtR2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmls
aXR5KTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlz
Y29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBMT0coR2FtZXBhZCwg
Ik11bHRpR2FtZXBhZFByb3ZpZGVyIGRpc2Nvbm5lY3RpbmcgZ2FtZXBhZCBmcm9tIGEgJXMgc291
cmNlIiwgZ2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBhdXRvIGdhbWVwYWRXcmFwcGVyID0gbV9n
YW1lcGFkTWFwLnRha2UoJmdhbWVwYWQpOworCisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyKTsK
KyAgICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXItPmluZGV4KCkgPCBtX2dhbWVwYWRWZWN0b3Iuc2l6
ZSgpKTsKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgp
XSA9PSBnYW1lcGFkV3JhcHBlci5nZXQoKSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbZ2FtZXBh
ZFdyYXBwZXItPmluZGV4KCldID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDog
bV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgq
Z2FtZXBhZFdyYXBwZXIpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bUdhbWVwYWRJbnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNp
YmlsaXR5KQoreworICAgIGlmIChldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRz
VmlzaWJsZTo6WWVzKQorICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2lu
Z2xldG9uKCkubWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElu
cHV0QWN0aXZpdHkoZXZlbnRWaXNpYmlsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMzM0ZGExNjViYmYuLmJmMGZhOTlhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBN
dWx0aXBsZXggdGhlIEhJRCBhbmQgR2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBwcm92aWRlcnMgb24g
TWFjLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdh
bWVwYWRQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRl
cjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKwogMjAyMC0wNy0wOCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2ZWx5IHBy
aW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVw
YWRQcm92aWRlckNvY29hLm1tCmluZGV4IGFiMmM3ZmI4OGQzLi4xOTRhYTM1NjU4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92
aWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2Ev
VUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
SURHYW1lcGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRl
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9NdWx0aUdhbWVwYWRQcm92aWRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNyArNTQsNyBAQCB2
b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIo
KQogICAgIGlmICh1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKICAgICAgICAgR2FtZXBhZFBy
b3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkpOwogICAgIGVsc2UKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFy
ZWRQcm92aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAgR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2lu
Z2xldG9uKCkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403905</attachid>
            <date>2020-07-09 12:45:29 -0700</date>
            <delta_ts>2020-07-09 13:04:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33713</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjQwNmRhNjA3OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURFbGVtZW50Lmg+CisjaW5jbHVkZSA8SU9LaXQvaGlk
L0lPSElEVmFsdWUuaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQg
PElPS2l0L2hpZC9JT0hJRERldmljZS5oPgpAQCAtNTAsNiArNTMsNyBAQCB0eXBlZGVmIHVpbnQz
Ml90IElPSElERXZlbnRGaWVsZDsKIAogdHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50U3lzdGVt
Q2xpZW50ICogSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fSU9I
SURFdmVudCAqIElPSElERXZlbnRSZWY7Cit0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUo
aWQpIF9fSU9ISURTZXJ2aWNlQ2xpZW50ICogSU9ISURTZXJ2aWNlQ2xpZW50UmVmOwogCiAjZGVm
aW5lIElPSElERXZlbnRGaWVsZEJhc2UodHlwZSkgKHR5cGUgPDwgMTYpCiAKQEAgLTE0OSw2ICsx
NTMsOCBAQCB2b2lkIElPSElERXZlbnRTZXRJbnRlZ2VyVmFsdWUoSU9ISURFdmVudFJlZiwgSU9I
SURFdmVudEZpZWxkLCBDRkluZGV4KTsKIHZvaWQgSU9ISURFdmVudEFwcGVuZEV2ZW50KElPSElE
RXZlbnRSZWYsIElPSElERXZlbnRSZWYsIElPT3B0aW9uQml0cyk7CiAKIElPSElERXZlbnRTeXN0
ZW1DbGllbnRSZWYgSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShDRkFsbG9jYXRvclJlZik7
Cit2b2lkIElPSElERXZlbnRTeXN0ZW1DbGllbnRTZXRNYXRjaGluZyhJT0hJREV2ZW50U3lzdGVt
Q2xpZW50UmVmLCBDRkRpY3Rpb25hcnlSZWYpOworSU9ISURTZXJ2aWNlQ2xpZW50UmVmIElPSElE
RXZlbnRTeXN0ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoSU9ISURFdmVudFN5c3Rl
bUNsaWVudFJlZiwgdWludDY0X3QpOwogCiAjZGVmaW5lIGtHU0V2ZW50UGF0aEluZm9JblJhbmdl
ICgxIDw8IDApCiAjZGVmaW5lIGtHU0V2ZW50UGF0aEluZm9JblRvdWNoICgxIDw8IDEpCkBAIC0y
MTQsMTEgKzIyMCw2IEBAIHR5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgX19JT0hJ
RERldmljZSAqIElPSElERGV2aWNlUmVmOwogCiB0eXBlZGVmIGtlcm5fcmV0dXJuX3QgSU9SZXR1
cm47CiAKLWVudW0gSU9ISURSZXBvcnRUeXBlIHsKLSAgICBrSU9ISURSZXBvcnRUeXBlSW5wdXQg
PSAwLAotICAgIGtJT0hJRFJlcG9ydFR5cGVPdXRwdXQsCi19OwotCiBlbnVtIHsKICAgICBrSU9I
SURPcHRpb25zVHlwZU5vbmUgICAgID0gMHgwMCwKIH07CkBAIC0yMzQsNiArMjM1LDcgQEAgdm9p
ZCBJT0hJRERldmljZVJlZ2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhJT0hJRERldmljZVJlZiwg
dWludDhfdCosIENGSW5kZXgsIEkKIHZvaWQgSU9ISUREZXZpY2VVbnNjaGVkdWxlRnJvbVJ1bkxv
b3AoSU9ISUREZXZpY2VSZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwogSU9SZXR1cm4g
SU9ISUREZXZpY2VDbG9zZShJT0hJRERldmljZVJlZiwgSU9PcHRpb25CaXRzKTsKIElPUmV0dXJu
IElPSElERGV2aWNlU2V0UmVwb3J0KElPSElERGV2aWNlUmVmLCBJT0hJRFJlcG9ydFR5cGUsIENG
SW5kZXgsIGNvbnN0IHVpbnQ4X3QqLCBDRkluZGV4KTsKK2lvX3NlcnZpY2VfdCBJT0hJRERldmlj
ZUdldFNlcnZpY2UoSU9ISUREZXZpY2VSZWYpOwogCiB0eXBlZGVmIHN0cnVjdCBDRl9CUklER0VE
X1RZUEUoaWQpIF9fSU9ISURNYW5hZ2VyICogSU9ISURNYW5hZ2VyUmVmOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAppbmRleCA1MjIwNDc0OWRiYi4uYWU1MTcyYzM0ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMjU4LDYgKzI1OCw3IEBAIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNw
cAogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBAbm8tdW5pZnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhZDAxNmU3NDc4Zi4uNzZjNTU0ODZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzIsNiArMTQ3Miw3IEBACiAJ
CTUxN0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzIxQjc0MzE3RTAwRTdE
Q0RDIC8qIEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rp
b25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0RFRUU4MURFOTRC
MDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUU3MURFOTRCMDgwMEI5
MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTdFMDNGNzI0QjZEOTg0MDA1NDg5
NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVw
YWRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxODJDMjU2MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjUyMUYzMTQy
NTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJNTE4MkMyNTgxRjMxNDND
RDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTQxRjMxNDI1MDAwNTlCQTdDIC8q
IEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovOyB9OwogCQk1MTgyQzI1QTFGMzE0M0NEMDA1
OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjREMUYzMTQyNTAwMDU5QkE3QyAvKiBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwpAQCAtODM3MCw2ICs4MzcxLDggQEAK
IAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERUVFMzFERTk0
QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERUVFNzFERTk0QjA4
MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyog
TXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TXVsdGlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3
RTAzRjUyNEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAv
KiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNEIxRjMxM0FFMDAwNTlCQTdDIC8qIE5hdmln
YXRvclNlcnZpY2VXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NzksNiArMTk1ODIsOCBAQAogCQkJCTUx
NUJFMTk4MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkLmggKi8sCiAJCQkJNTE1QkUxOTkx
RDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5jcHAgKi8sCiAJCQkJNTE1QkUx
OUExRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0Uw
M0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUx
N0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMjY5
LDYgKzMzMjc0LDcgQEAKIAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyog
U3RyaW5nV2l0aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYy
MDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1
c3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0
eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKaW5kZXggNzVjYzllZmVmOWQuLjky
MThlYzgyMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1Bs
YXRmb3JtR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxh
dGZvcm1HYW1lcGFkLmgKQEAgLTQxLDExICs0MSwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcHBp
bmcoKSBjb25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0KICAgICB1bnNpZ25lZCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZTsgfQorICAgIHZpcnR1YWwgTW9ub3Rv
bmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7
IH0KICAgICBNb25vdG9uaWNUaW1lIGNvbm5lY3RUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb25u
ZWN0VGltZTsgfQogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFs
dWVzKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25z
dCB7IHJldHVybiAiVW5rbm93biJfczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGxh
dGZvcm1HYW1lcGFkKHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1faW5kZXgoaW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWQuaAppbmRleCA3MmU1M2JhMTA2Ni4uNjFjYTBkNDQ2ZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F4aXNWYWx1ZXM7IH0KICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIq
IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJHYW1lQ29udHJvbGxlciJfczsgfQorCiBw
cml2YXRlOgogICAgIHZvaWQgc2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgpOwogICAgIHZvaWQgc2V0
dXBBc0dhbWVwYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaApp
bmRleCBiZGRlZDE3NzBmMS4uMmUzZmQ0MWE1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkK
IAogI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2Ev
SU9LaXRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTYsNiArNTcsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9sbGVyR2FtZXBhZCYsIGJv
b2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZp
Y2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2li
bGUoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9vbCB3aWxsSGFuZGxlSElE
RGV2aWNlKElPSElERGV2aWNlUmVmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc4LDYgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgaW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJ
bnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3Rk
Ojp1bmlxdWVfcHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBW
ZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxh
dGZvcm1HYW1lcGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlk
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li40ZTAwYmU2MTJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0yOSwxMiArMjks
MTQgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1l
cGFkLmgiCi0jaW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCiAjaW1wb3J0ICJHYW1l
cGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPEdhbWVD
b250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0
U1BJLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2ltcG9ydCAiR2FtZUNv
bnRyb2xsZXJTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25z
dCBTZWNvbmRzIGlucHV0Tm90aWZpY2F0aW9uRGVsYXkgeyAxNl9tcyB9OwpAQCAtMTk1LDYgKzE5
Nyw1MiBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNh
dGlvblRpbWVyRmlyZWQoKQogICAgIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0
eSgpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorYm9vbCBHYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlcjo6d2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCit7Cisg
ICAgaWYgKCFpc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8gZGV2aWNlU2VydmljZSA9IElPSElERGV2aWNlR2V0U2Vy
dmljZShkZXZpY2UpOworICAgIGlmICghZGV2aWNlU2VydmljZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHNlcnZpY2UgZGlyZWN0bHkgYmFja2luZyB0aGlzIGRl
dmljZQorICAgIHVpbnQ2NF90IHJlZ2lzdHJ5SUQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdl
dFJlZ2lzdHJ5RW50cnlJRChkZXZpY2VTZXJ2aWNlLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUND
RVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGV2ZW50U3lzdGVtQ2xpZW50
ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKG51bGxwdHIpKTsKKyAgICBJ
T0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCks
IG51bGxwdHIpOworICAgIGF1dG8gc2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5
c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQo
KSwgcmVnaXN0cnlJRCkpOworICAgIGlmIChzZXJ2aWNlQ2xpZW50KSB7CisgICAgICAgIGlmIChD
b250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpdHMgZ3Jh
bmRjaGlsZCBzZXJ2aWNlCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBjaGlsZDsKKyAgICBpZiAo
SU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZpY2VTZXJ2aWNlLCBrSU9TZXJ2aWNlUGxh
bmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0cnlF
bnRyeUdldENoaWxkRW50cnkoY2hpbGQsIGtJT1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAhPSBLRVJO
X1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoaWxkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRy
eUlEKGNoaWxkLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdp
c3RyeUlEKSk7CisgICAgaWYgKCFzZXJ2aWNlQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50Lmdl
dCgpKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCmluZGV4IDE4
ZjhlNzViN2I1Li40NTQzMDQzZGQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaApAQCAtMjcsOCArMjcs
MjcgQEAKIAogI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NDb250cm9sbGVyLmg+CiAKKyNpZiBQ
TEFURk9STShNQUMpCisjaW1wb3J0IDxJT0tpdC9oaWRzeXN0ZW0vSU9ISURTZXJ2aWNlQ2xpZW50
Lmg+CisjZW5kaWYKKwogQGludGVyZmFjZSBHQ0NvbnRyb2xsZXIgKCkKICsgKHZvaWQpX19vcGVu
WFBDX2FuZF9DQkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlX187CiBAZW5kCiAKKyNpZiBQTEFU
Rk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworV1RGX0VYVEVSTl9DX0JF
R0lOCisjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxpdHkuaD4KK1dURl9FWFRFUk5fQ19F
TkQKKworI2Vsc2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitDbGFzcyBDb250cm9sbGVyQ2xhc3NG
b3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZik7CitXVEZfRVhURVJOX0NfRU5ECisKKyNl
bmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29m
dExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJTb2Z0TGluay5oCmluZGV4IDEwMTgzYmZjMTc1Li4xMzllMmI5MzUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlclNvZnRMaW5rLmgKQEAgLTM2LDQgKzM2LDggQEAgU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoV2ViQ29yZSwgR0NDb250cm9sbGVyKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENv
bm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlz
Y29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIAorI2lmIFBMQVRGT1JNKE1BQykKK1NP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250
cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2
aWNlKSwgKHNlcnZpY2UpKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KaW5kZXggYzEwNzBj
NDE5NmIuLjE3NjYyYTM5YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCkBAIC0z
Niw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMKFdlYkNvcmUs
IEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29u
bmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJ
TF9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNj
b25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCisjaWYgUExBVEZPUk0oTUFDKQorU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRy
b2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZp
Y2UpLCAoc2VydmljZSkpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZC5jcHAKaW5kZXggNGY1ZDkwZTU2NmUuLmU5MjczYzQzM2Y5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcApA
QCAtMjgsOSArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykK
IAotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVsZW1lbnQuaD4KLSNpbmNsdWRlIDxJT0tpdC9o
aWQvSU9ISURVc2FnZVRhYmxlcy5oPgotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJRFZhbHVlLmg+
CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhO
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkLmgKaW5kZXggYTI1MjM0ZmI4NzUuLmE1NTBhZjBhMzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC0yOCw3
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1
ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJRERldmljZS5o
PgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9LaXRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAg
ICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiSElEIl9zOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0RWxlbWVu
dHMoKTsKICAgICB2b2lkIGluaXRFbGVtZW50c0Zyb21BcnJheShDRkFycmF5UmVmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
UHJvdmlkZXIuY3BwCmluZGV4IDBiNjMyMjVjMDdjLi41YWY1OTU5OGJhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExB
VEZPUk0oTUFDKQogCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgog
I2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKQEAgLTE3OCw2ICsxNzksMTIgQEAgdm9pZCBISURH
YW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50JiBjbGllbnQpCiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiB7CisgICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJh
bWV3b3JrRGV2aWNlcyAmJiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRs
ZUhJRERldmljZShkZXZpY2UpKSB7CisgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xs
ZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIGF0dGFjaGVkIGRldmljZSAlcCAtIEhJREdhbWVwYWRQ
cm92aWRlciBpZ25vcmluZyBpdCIsIGRldmljZSk7CisgICAgICAgIG1fZ2FtZUNvbnRyb2xsZXJN
YW5hZ2VkR2FtZXBhZHMuYWRkKGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CiAKICAgICBMT0coR2FtZXBhZCwg
IkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2UpOwpAQCAtMjAxLDE2
ICsyMDgsMjggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2
aWNlUmVmIGRldmljZSkKICAgICAgICAgICAgIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfQogCisgICAgYXV0byBldmVudFZpc2liaWxpdHkg
PSBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6
OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vOwogICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3Rl
ZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgPyBF
dmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxl
OjpObyk7CisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworCisgICAgLy8gSWYgd2UgYXJlIHdv
cmtpbmcgdG9nZXRoZXIgd2l0aCB0aGUgR2FtZUNvbnRyb2xsZXIgcHJvdmlkZXIsIGxldCBpdCBr
bm93CisgICAgLy8gdGhhdCBnYW1lcGFkcyBzaG91bGQgbm93IGJlIHZpc2libGUuCisgICAgaWYg
KG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBldmVudFZpc2liaWxp
dHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzKQorICAgICAgICBHYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFrZUludmlzaWJpbGVHYW1lcGFkc1Zp
c2libGUoKTsKIH0KIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZVJlbW92ZWQoSU9I
SUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3Zp
ZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxI
SURHYW1lcGFkPiByZW1vdmVkR2FtZXBhZCA9IHJlbW92ZUdhbWVwYWRGb3JEZXZpY2UoZGV2aWNl
KTsKLSAgICBBU1NFUlQocmVtb3ZlZEdhbWVwYWQpOworCisgICAgaWYgKCFyZW1vdmVkR2FtZXBh
ZCkgeworICAgICAgICBhdXRvIHRha2VuID0gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFk
cy50YWtlKGRldmljZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sIHRha2VuKTsKKyAg
ICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgaW5mb3JtZWQgb2YgcmVtb3Zh
bCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgR2FtZUNvbnRyb2xsZXIgZnJhbWV3
b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIHJlbW92ZWQiLCBkZXZp
Y2UpOwogCiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCiAgICAgICAgIGNsaWVu
dC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpyZW1vdmVkR2FtZXBhZCk7CkBAIC0yNDks
NyArMjY4LDggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGlt
ZXJGaXJlZCgpCiBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gSElER2FtZXBhZFByb3ZpZGVy
OjpyZW1vdmVHYW1lcGFkRm9yRGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFkTWFwLnRha2UoZGV2
aWNlKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGkgPSBtX2dhbWVwYWRWZWN0b3IuZmluZChyZXN1bHQu
Z2V0KCkpOwogICAgIGlmIChpICE9IG5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAppbmRleCAxYmI1
NGVlNTYxYi4uZmI0NDM4YWUyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBAIC01Niw2ICs1Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRldmljZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYpOwogICAgIHZv
aWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKIAorICAgIHZvaWQgaWdub3JlR2FtZUNv
bnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCkgeyBtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1l
d29ya0RldmljZXMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSElER2FtZXBhZFByb3ZpZGVy
KCk7CiAKQEAgLTcxLDEwICs3MywxMiBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFBsYXRmb3Jt
R2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoTWFwPElPSElERGV2aWNlUmVmLCBz
dGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKKyAgICBIYXNoU2V0PElP
SElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzOwogCiAgICAgUmV0
YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9tYW5hZ2VyOwogCiAgICAgYm9vbCBtX2luaXRpYWxH
YW1lcGFkc0Nvbm5lY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lnbm9yZXNHYW1lQ29udHJv
bGxlckZyYW1ld29ya0RldmljZXMgeyBmYWxzZSB9OwogCiAgICAgVGltZXIgbV9pbml0aWFsR2Ft
ZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1lciBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdh
bWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVs
dGlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMWI4MTJhYjA3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFk
UHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXVsdGlHYW1lcGFk
UHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyLCBwdWJsaWMgR2FtZXBhZFByb3ZpZGVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NdWx0aUdhbWVwYWRQcm92aWRlcigpID0g
ZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNdWx0aUdhbWVwYWRQcm92aWRl
ciYgc2luZ2xldG9uKCk7CisKKyAgICAvLyBHYW1lcGFkUHJvdmlkZXIKKyAgICB2b2lkIHN0YXJ0
TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZv
aWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsK
KyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBm
aW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7IH0KKyAgICBib29sIGlzTW9ja0dhbWVwYWRQ
cm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBHYW1lcGFkUHJvdmlk
ZXJDbGllbnQKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVw
YWQmLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3Jt
R2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBs
YXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmlu
YWw7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoUGxhdGZv
cm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIGluZGV4
Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIGJvb2wgbV9zaG91bGRNYWtlR2FtZXBh
ZHNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBzaXplX3QgbV9pbml0aWFsR2FtZXBhZHNDb3VudCB7
IDAgfTsKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworCisg
ICAgLy8gV2UgY3JlYXRlIG91ciBvd24gR2FtZXBhZCB0eXBlIC0gdG8gd3JhcCBib3RoIEhJRCBh
bmQgR2FtZUNvbnRyb2xlciBnYW1lcGFkcyAtCisgICAgLy8gYmVjYXVzZSBNdWx0aUdhbWVwYWRQ
cm92aWRlciBuZWVkcyB0byBtYW5hZ2UgdGhlIGluZGV4ZXMgb2YgaXRzIG93biBnYW1lcGFkcwor
ICAgIC8vIG5vIG1hdHRlciB3aGF0IHRoZSBISUQgb3IgR2FtZUNvbnRyb2xsZXIgaW5kZXggaXMu
CisgICAgY2xhc3MgUGxhdGZvcm1HYW1lcGFkV3JhcHBlciA6IHB1YmxpYyBQbGF0Zm9ybUdhbWVw
YWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFkV3JhcHBlcih1bnNpZ25l
ZCBpbmRleCwgUGxhdGZvcm1HYW1lcGFkKiB3cmFwcGVkKQorICAgICAgICAgICAgOiBQbGF0Zm9y
bUdhbWVwYWQoaW5kZXgpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1HYW1lcGFkKHdyYXBwZWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1faWQgPSB3cmFwcGVkLT5pZCgpOworICAgICAgICAg
ICAgbV9tYXBwaW5nID0gd3JhcHBlZC0+bWFwcGluZygpOworICAgICAgICAgICAgbV9jb25uZWN0
VGltZSA9IHdyYXBwZWQtPmNvbm5lY3RUaW1lKCk7CisgICAgICAgIH0KKworICAgICAgICBNb25v
dG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9y
bUdhbWVwYWQtPmxhc3RVcGRhdGVUaW1lKCk7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+
YXhpc1ZhbHVlcygpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+YnV0dG9uVmFsdWVz
KCk7IH0KKworICAgICAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3BsYXRmb3JtR2FtZXBhZC0+c291cmNlKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFBsYXRmb3JtR2FtZXBhZCogbV9wbGF0Zm9ybUdhbWVwYWQ7CisgICAgfTsKKworICAgIEhhc2hN
YXA8UGxhdGZvcm1HYW1lcGFkKiwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtR2FtZXBhZFdyYXBw
ZXI+PiBtX2dhbWVwYWRNYXA7CisgICAgYm9vbCBtX2hpZEltcG9ydENvbXBsZXRlIHsgZmFsc2Ug
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1F
UEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMGUyMWIxNWY4ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVy
Lm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk11bHRpR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkg
JiYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5oIgorI2ltcG9ydCAiSElER2FtZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBzaXplX3QgbnVtYmVyT2ZHYW1l
cGFkUHJvdmlkZXJzID0gMjsKKworTXVsdGlHYW1lcGFkUHJvdmlkZXImIE11bHRpR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdWx0aUdh
bWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVy
OworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFk
cyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBib29sIG1vbml0b3JPdGhl
clByb3ZpZGVycyA9IG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAgICBBU1NFUlQoIW1fY2xpZW50
cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAg
IEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtEZXZpY2VzKCk7CisgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnByZXdhcm1HYW1lQ29udHJvbGxlckRldmljZXNJZk5lY2Vzc2FyeSgpOworCisgICAg
aWYgKG1vbml0b3JPdGhlclByb3ZpZGVycykgeworICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dh
bWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0
b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisKKyAgICBib29sIHNob3Vs
ZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMgPSBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQp
ICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAgICBpZiAoc2hvdWxkU3RvcE1vbml0b3JpbmdP
dGhlclByb3ZpZGVycykgeworICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigp
LnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgICAgICBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7
CisgICAgfQorfQorCit1bnNpZ25lZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXds
eUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxl
IChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1lcGFkVmVjdG9yW2luZGV4
XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIEFTU0VSVChpbmRleCA8PSBtX2dhbWVwYWRWZWN0
b3Iuc2l6ZSgpKTsKKworICAgIGlmIChpbmRleCA9PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKQor
ICAgICAgICBtX2dhbWVwYWRWZWN0b3IucmVzaXplKGluZGV4ICsgMSk7CisKKyAgICByZXR1cm4g
aW5kZXg7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENv
bm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2li
bGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAgIGF1dG8gaW5kZXggPSBpbmRleEZvck5ld2x5Q29u
bmVjdGVkRGV2aWNlKCk7CisKKyAgICBMT0coR2FtZXBhZCwgIk11bHRpR2FtZXBhZFByb3ZpZGVy
IGFkZGluZyBuZXcgcGxhdGZvcm0gZ2FtZXBhZCB0byBpbmRleCAlaSBmcm9tIGEgJXMgc291cmNl
IiwgaW5kZXgsIGdhbWVwYWQuc291cmNlKCkpOworCisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkgPiBpbmRleCk7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ2FtZXBhZE1hcC5z
ZXQoJmdhbWVwYWQsIFdURjo6bWFrZVVuaXF1ZTxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPihpbmRl
eCwgJmdhbWVwYWQpKTsKKyAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1f
Z2FtZXBhZFZlY3RvcltpbmRleF0gPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwor
CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxh
dGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2li
aWxpdHkpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRE
aXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQoreworICAgIExPRyhHYW1lcGFk
LCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgZGlzY29ubmVjdGluZyBnYW1lcGFkIGZyb20gYSAlcyBz
b3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgpKTsKKworICAgIGF1dG8gZ2FtZXBhZFdyYXBwZXIgPSBt
X2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBhZCk7CisKKyAgICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXIp
OworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlci0+aW5kZXgoKSA8IG1fZ2FtZXBhZFZlY3Rvci5z
aXplKCkpOworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4
KCldID09IGdhbWVwYWRXcmFwcGVyLmdldCgpKTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltnYW1l
cGFkV3JhcHBlci0+aW5kZXgoKV0gPSBudWxscHRyOworCisgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVk
KCpnYW1lcGFkV3JhcHBlcik7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZp
c2liaWxpdHkpCit7CisgICAgaWYgKGV2ZW50VmlzaWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBh
ZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFk
SW5wdXRBY3Rpdml0eShldmVudFZpc2liaWxpdHkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5OWE0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IE11bHRpcGxleCB0aGUgSElEIGFuZCBHYW1lQ29udHJvbGxlciBnYW1lcGFkIHByb3ZpZGVycyBv
biBNYWMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzE5MjUzMj4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJ
R2FtZXBhZFByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorCiAyMDIwLTA3LTA4ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZ2dyZXNzaXZlbHkg
cHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIGdhbWVwYWQgcHJvdmlkZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3Zp
ZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2Ft
ZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXggYWIyYzdmYjg4ZDMuLjE5NGFhMzU2NTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFBy
b3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2Nv
YS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0hJREdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3Zp
ZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011bHRpR2FtZXBhZFByb3ZpZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Myw3ICs1NCw3IEBA
IHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRl
cigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQogICAgICAgICBHYW1lcGFk
UHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQotICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNo
YXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworICAgICAgICBH
YW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE11bHRpR2FtZXBhZFByb3ZpZGVyOjpz
aW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403907</attachid>
            <date>2020-07-09 13:04:25 -0700</date>
            <delta_ts>2020-07-09 13:19:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33842</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjliNzhhNzA3NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQog
CisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVsZW1lbnQuaD4K
KyNlbmRpZgorCisjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElEVmFsdWUuaD4KKwogI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPElPS2l0L2hpZC9JT0hJRERldmljZS5oPgpA
QCAtNTAsNiArNTYsNyBAQCB0eXBlZGVmIHVpbnQzMl90IElPSElERXZlbnRGaWVsZDsKIAogdHlw
ZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURFdmVudFN5c3RlbUNs
aWVudFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fSU9ISURFdmVudCAqIElPSElERXZlbnRSZWY7Cit0
eXBlZGVmIHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIF9fSU9ISURTZXJ2aWNlQ2xpZW50ICog
SU9ISURTZXJ2aWNlQ2xpZW50UmVmOwogCiAjZGVmaW5lIElPSElERXZlbnRGaWVsZEJhc2UodHlw
ZSkgKHR5cGUgPDwgMTYpCiAKQEAgLTE0OSw2ICsxNTYsOCBAQCB2b2lkIElPSElERXZlbnRTZXRJ
bnRlZ2VyVmFsdWUoSU9ISURFdmVudFJlZiwgSU9ISURFdmVudEZpZWxkLCBDRkluZGV4KTsKIHZv
aWQgSU9ISURFdmVudEFwcGVuZEV2ZW50KElPSElERXZlbnRSZWYsIElPSElERXZlbnRSZWYsIElP
T3B0aW9uQml0cyk7CiAKIElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVudFN5c3Rl
bUNsaWVudENyZWF0ZShDRkFsbG9jYXRvclJlZik7Cit2b2lkIElPSElERXZlbnRTeXN0ZW1DbGll
bnRTZXRNYXRjaGluZyhJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmLCBDRkRpY3Rpb25hcnlSZWYp
OworSU9ISURTZXJ2aWNlQ2xpZW50UmVmIElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vydmlj
ZUZvclJlZ2lzdHJ5SUQoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiwgdWludDY0X3QpOwogCiAj
ZGVmaW5lIGtHU0V2ZW50UGF0aEluZm9JblJhbmdlICgxIDw8IDApCiAjZGVmaW5lIGtHU0V2ZW50
UGF0aEluZm9JblRvdWNoICgxIDw8IDEpCkBAIC0yMTQsMTUgKzIyMywxMiBAQCB0eXBlZGVmIHN0
cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIF9fSU9ISUREZXZpY2UgKiBJT0hJRERldmljZVJlZjsK
IAogdHlwZWRlZiBrZXJuX3JldHVybl90IElPUmV0dXJuOwogCi1lbnVtIElPSElEUmVwb3J0VHlw
ZSB7Ci0gICAga0lPSElEUmVwb3J0VHlwZUlucHV0ID0gMCwKLSAgICBrSU9ISURSZXBvcnRUeXBl
T3V0cHV0LAotfTsKLQorI2lmICFQTEFURk9STShNQUMpCiBlbnVtIHsKICAgICBrSU9ISURPcHRp
b25zVHlwZU5vbmUgICAgID0gMHgwMCwKIH07CiB0eXBlZGVmIHVpbnQzMl90IElPSElET3B0aW9u
c1R5cGU7CisjZW5kaWYKIAogdHlwZWRlZiBVSW50MzIgSU9PcHRpb25CaXRzOwogCkBAIC0yMzQs
NiArMjQwLDcgQEAgdm9pZCBJT0hJRERldmljZVJlZ2lzdGVySW5wdXRSZXBvcnRDYWxsYmFjayhJ
T0hJRERldmljZVJlZiwgdWludDhfdCosIENGSW5kZXgsIEkKIHZvaWQgSU9ISUREZXZpY2VVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AoSU9ISUREZXZpY2VSZWYsIENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdS
ZWYpOwogSU9SZXR1cm4gSU9ISUREZXZpY2VDbG9zZShJT0hJRERldmljZVJlZiwgSU9PcHRpb25C
aXRzKTsKIElPUmV0dXJuIElPSElERGV2aWNlU2V0UmVwb3J0KElPSElERGV2aWNlUmVmLCBJT0hJ
RFJlcG9ydFR5cGUsIENGSW5kZXgsIGNvbnN0IHVpbnQ4X3QqLCBDRkluZGV4KTsKK2lvX3NlcnZp
Y2VfdCBJT0hJRERldmljZUdldFNlcnZpY2UoSU9ISUREZXZpY2VSZWYpOwogCiB0eXBlZGVmIHN0
cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIF9fSU9ISURNYW5hZ2VyICogSU9ISURNYW5hZ2VyUmVm
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA1MjIwNDc0OWRiYi4uYWU1MTcyYzM0ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjU4LDYgKzI1OCw3IEBAIHBsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmNwcAorcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBAbm8tdW5pZnkK
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qy5tbSBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhZDAxNmU3NDc4Zi4uNzZjNTU0ODZhNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzIs
NiArMTQ3Miw3IEBACiAJCTUxN0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJD
Ri5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYz
QzIxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDEx
IC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Q
cm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxN0RFRUU4MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RF
RUU3MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTdFMDNG
NzI0QjZEOTg0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1
QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxODJDMjU2MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZp
Y2VXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxODJDMjUyMUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNTgxRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTQxRjMx
NDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovOyB9OwogCQk1MTgy
QzI1QTFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjREMUYzMTQy
NTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwpAQCAtODM3
MCw2ICs4MzcxLDggQEAKIAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTdERUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNGNDI0QjZC
OTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE3RTAzRjUyNEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3Zp
ZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTXVsdGlHYW1l
cGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUx
QUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4
dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dFeHRl
bnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNEIxRjMxM0FFMDAw
NTlCQTdDIC8qIE5hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclNlcnZp
Y2VXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NzksNiArMTk1
ODIsOCBAQAogCQkJCTUxNUJFMTk4MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkLmggKi8s
CiAJCQkJNTE1QkUxOTkxRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5jcHAg
Ki8sCiAJCQkJNTE1QkUxOUExRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5o
ICovLAorCQkJCTUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRl
ci5oICovLAorCQkJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92
aWRlci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTMzMjY5LDYgKzMzMjc0LDcgQEAKIAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFE
MjAgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5
NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3Ry
dWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZD
MDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0
RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKaW5kZXgg
NzVjYzllZmVmOWQuLjkyMThlYzgyMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKQEAgLTQxLDExICs0MSwxMyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25z
dCBTdHJpbmcmIG1hcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0KICAgICB1bnNp
Z25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBNb25vdG9uaWNUaW1l
IGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZTsgfQorICAg
IHZpcnR1YWwgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdFVwZGF0ZVRpbWU7IH0KICAgICBNb25vdG9uaWNUaW1lIGNvbm5lY3RUaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25uZWN0VGltZTsgfQogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8ZG91
YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiAiVW5rbm93biJfczsgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgUGxhdGZvcm1HYW1lcGFkKHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1f
aW5kZXgoaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaAppbmRleCA3MmU1M2JhMTA2Ni4u
NjFjYTBkNDQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaApAQCAtNDcsNiArNDcsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYg
YnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KIAor
ICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJHYW1lQ29udHJv
bGxlciJfczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgp
OwogICAgIHZvaWQgc2V0dXBBc0dhbWVwYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIuaAppbmRleCBiZGRlZDE3NzBmMS4uMmUzZmQ0MWE1ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoR0FNRVBBRCkKIAogI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvSU9LaXRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNTYs
NiArNTcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250cm9s
bGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJtR2Ft
ZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlzaWJp
bGVHYW1lcGFkc1Zpc2libGUoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgYm9v
bCB3aWxsSGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzc4LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAK
LSAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFw
PENGVHlwZVJlZiwgc3RkOjp1bmlxdWVfcHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2Ft
ZXBhZE1hcDsKICAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwog
ICAgIEhhc2hTZXQ8UGxhdGZvcm1HYW1lcGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li40
ZTAwYmU2MTJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1t
CkBAIC0yOSwxMiArMjksMTQgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkLmgiCi0jaW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgi
CiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAor
I2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGlucHV0Tm90aWZpY2F0aW9uRGVsYXkgeyAxNl9tcyB9
OwpAQCAtMTk1LDYgKzE5Nyw1MiBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
OjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogICAgIGRpc3BhdGNoUGxhdGZvcm1HYW1l
cGFkSW5wdXRBY3Rpdml0eSgpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorYm9vbCBHYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlcjo6d2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmljZVJl
ZiBkZXZpY2UpCit7CisgICAgaWYgKCFpc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZGV2aWNlU2VydmljZSA9IElP
SElERGV2aWNlR2V0U2VydmljZShkZXZpY2UpOworICAgIGlmICghZGV2aWNlU2VydmljZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHNlcnZpY2UgZGlyZWN0bHkg
YmFja2luZyB0aGlzIGRldmljZQorICAgIHVpbnQ2NF90IHJlZ2lzdHJ5SUQ7CisgICAgaWYgKElP
UmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChkZXZpY2VTZXJ2aWNlLCAmcmVnaXN0cnlJ
RCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGV2
ZW50U3lzdGVtQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKG51
bGxwdHIpKTsKKyAgICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoZXZlbnRTeXN0
ZW1DbGllbnQuZ2V0KCksIG51bGxwdHIpOworICAgIGF1dG8gc2VydmljZUNsaWVudCA9IGFkb3B0
Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5
c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlmIChzZXJ2aWNlQ2xpZW50KSB7
CisgICAgICAgIGlmIChDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNl
LCBjaGVjayBpdHMgZ3JhbmRjaGlsZCBzZXJ2aWNlCisgICAgaW9fcmVnaXN0cnlfZW50cnlfdCBj
aGlsZDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRFbnRyeShkZXZpY2VTZXJ2aWNl
LCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKElPUmVnaXN0cnlFbnRyeUdldENoaWxkRW50cnkoY2hpbGQsIGtJT1NlcnZpY2VQbGFuZSwg
JmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWNoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5
R2V0UmVnaXN0cnlFbnRyeUlEKGNoaWxkLCAmcmVnaXN0cnlJRCkgIT0gS0VSTl9TVUNDRVNTKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJ
REV2ZW50U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xp
ZW50LmdldCgpLCByZWdpc3RyeUlEKSk7CisgICAgaWYgKCFzZXJ2aWNlQ2xpZW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShz
ZXJ2aWNlQ2xpZW50LmdldCgpKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNQSS5oCmluZGV4IDE4ZjhlNzViN2I1Li40NTQzMDQzZGQ1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEku
aApAQCAtMjcsOCArMjcsMjcgQEAKIAogI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NDb250cm9s
bGVyLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCisjaW1wb3J0IDxJT0tpdC9oaWRzeXN0ZW0vSU9I
SURTZXJ2aWNlQ2xpZW50Lmg+CisjZW5kaWYKKwogQGludGVyZmFjZSBHQ0NvbnRyb2xsZXIgKCkK
ICsgKHZvaWQpX19vcGVuWFBDX2FuZF9DQkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlX187CiBA
ZW5kCiAKKyNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwor
V1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ1V0aWxpdHkuaD4K
K1dURl9FWFRFUk5fQ19FTkQKKworI2Vsc2UKKworV1RGX0VYVEVSTl9DX0JFR0lOCitDbGFzcyBD
b250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZik7CitXVEZfRVhU
RVJOX0NfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dh
bWVDb250cm9sbGVyU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCmluZGV4IDEwMTgzYmZjMTc1Li4xMzllMmI5
MzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlclNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKQEAgLTM2LDQgKzM2LDggQEAgU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViQ29yZSwgR0NDb250cm9sbGVyKQogU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdD
Q29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0ND
b250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIAorI2lmIFBM
QVRGT1JNKE1BQykKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVD
b250cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2Vydmlj
ZUNsaWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2UpKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFC
TEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsu
bW0KaW5kZXggYzEwNzBjNDE5NmIuLjE3NjYyYTM5YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLm1tCkBAIC0zNiw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09Q
VElPTkFMKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0ND
b250cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0Nv
bnRyb2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCisjaWYgUExB
VEZPUk0oTUFDKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNv
bnRyb2xsZXIsIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNl
Q2xpZW50UmVmIHNlcnZpY2UpLCAoc2VydmljZSkpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJM
RShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKaW5kZXggNGY1ZDkwZTU2NmUuLmU5Mjcz
YzQzM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmNwcApAQCAtMjgsOSArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYm
IFBMQVRGT1JNKE1BQykKIAotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVsZW1lbnQuaD4KLSNp
bmNsdWRlIDxJT0tpdC9oaWQvSU9ISURVc2FnZVRhYmxlcy5oPgotI2luY2x1ZGUgPElPS2l0L2hp
ZC9JT0hJRFZhbHVlLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggYTI1MjM0ZmI4NzUuLmE1NTBhZjBh
MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JN
KE1BQykKIAogI2luY2x1ZGUgIlBsYXRmb3JtR2FtZXBhZC5oIgotI2luY2x1ZGUgPElPS2l0L2hp
ZC9JT0hJRERldmljZS5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9LaXRTUEkuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9h
eGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBz
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSElEIl9zOyB9CisKIHByaXZhdGU6CiAgICAg
dm9pZCBpbml0RWxlbWVudHMoKTsKICAgICB2b2lkIGluaXRFbGVtZW50c0Zyb21BcnJheShDRkFy
cmF5UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDBiNjMyMjVjMDdjLi41YWY1OTU5OGJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
R0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKQEAgLTE3OCw2ICsxNzks
MTIgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2Ft
ZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpk
ZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CisgICAgaWYgKG1faWdub3Jlc0dh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlcjo6d2lsbEhhbmRsZUhJRERldmljZShkZXZpY2UpKSB7CisgICAgICAgIExPRyhHYW1lcGFk
LCAiR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIGF0dGFjaGVkIGRldmljZSAl
cCAtIEhJREdhbWVwYWRQcm92aWRlciBpZ25vcmluZyBpdCIsIGRldmljZSk7CisgICAgICAgIG1f
Z2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMuYWRkKGRldmljZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CiAKICAg
ICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZp
Y2UpOwpAQCAtMjAxLDE2ICsyMDgsMjggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmlj
ZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICAgICAgICAgIG1faW5pdGlhbEdhbWVw
YWRzQ29ubmVjdGVkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfQogCisgICAgYXV0byBl
dmVudFZpc2liaWxpdHkgPSBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNH
YW1lcGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vOwogICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQtPnBsYXRmb3Jt
R2FtZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgbV9pbml0aWFsR2FtZXBh
ZHNDb25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2Vz
R2FtZXBhZHNWaXNpYmxlOjpObyk7CisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworCisgICAg
Ly8gSWYgd2UgYXJlIHdvcmtpbmcgdG9nZXRoZXIgd2l0aCB0aGUgR2FtZUNvbnRyb2xsZXIgcHJv
dmlkZXIsIGxldCBpdCBrbm93CisgICAgLy8gdGhhdCBnYW1lcGFkcyBzaG91bGQgbm93IGJlIHZp
c2libGUuCisgICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAm
JiBldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzKQorICAg
ICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKIH0KIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRl
dmljZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIExPRyhHYW1lcGFkLCAi
SElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKLQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZW1vdmVkR2FtZXBhZCA9IHJlbW92ZUdhbWVwYWRG
b3JEZXZpY2UoZGV2aWNlKTsKLSAgICBBU1NFUlQocmVtb3ZlZEdhbWVwYWQpOworCisgICAgaWYg
KCFyZW1vdmVkR2FtZXBhZCkgeworICAgICAgICBhdXRvIHRha2VuID0gbV9nYW1lQ29udHJvbGxl
ck1hbmFnZWRHYW1lcGFkcy50YWtlKGRldmljZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodGFr
ZW4sIHRha2VuKTsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgaW5m
b3JtZWQgb2YgcmVtb3ZhbCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgR2FtZUNv
bnRyb2xsZXIgZnJhbWV3b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVw
IHJlbW92ZWQiLCBkZXZpY2UpOwogCiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CiAgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpyZW1vdmVkR2Ft
ZXBhZCk7CkBAIC0yNDksNyArMjY4LDggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmlucHV0
Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpCiBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gSElE
R2FtZXBhZFByb3ZpZGVyOjpyZW1vdmVHYW1lcGFkRm9yRGV2aWNlKElPSElERGV2aWNlUmVmIGRl
dmljZSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1l
cGFkTWFwLnRha2UoZGV2aWNlKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGkgPSBtX2dhbWVwYWRWZWN0
b3IuZmluZChyZXN1bHQuZ2V0KCkpOwogICAgIGlmIChpICE9IG5vdEZvdW5kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlk
ZXIuaAppbmRleCAxYmI1NGVlNTYxYi4uZmI0NDM4YWUyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBA
IC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldmljZVJlbW92ZWQoSU9ISUREZXZp
Y2VSZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKIAorICAgIHZv
aWQgaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCkgeyBtX2lnbm9yZXNHYW1l
Q29udHJvbGxlckZyYW1ld29ya0RldmljZXMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSElE
R2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDEwICs3MywxMiBAQCBwcml2YXRlOgogCiAgICAg
VmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoTWFwPElP
SElERGV2aWNlUmVmLCBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsK
KyAgICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVw
YWRzOwogCiAgICAgUmV0YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9tYW5hZ2VyOwogCiAgICAg
Ym9vbCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ln
bm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgeyBmYWxzZSB9OwogCiAgICAgVGlt
ZXIgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1lciBtX2lucHV0Tm90
aWZpY2F0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMWI4MTJhYjA3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1F
UEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTXVsdGlHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyLCBwdWJsaWMg
R2FtZXBhZFByb3ZpZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NdWx0aUdhbWVw
YWRQcm92aWRlcigpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNdWx0
aUdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICAvLyBHYW1lcGFkUHJvdmlkZXIK
KyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYp
IGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJD
bGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRm
b3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7IH0KKyAgICBib29s
IGlzTW9ja0dhbWVwYWRQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAv
LyBHYW1lcGFkUHJvdmlkZXJDbGllbnQKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3Rl
ZChQbGF0Zm9ybUdhbWVwYWQmLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsKKyAg
ICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKSBmaW5h
bDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRNYWtlc0dhbWVw
YWRzVmlzaWJsZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAg
IHVuc2lnbmVkIGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIGJvb2wgbV9z
aG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBzaXplX3QgbV9pbml0aWFs
R2FtZXBhZHNDb3VudCB7IDAgfTsKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1l
cGFkVmVjdG9yOworCisgICAgLy8gV2UgY3JlYXRlIG91ciBvd24gR2FtZXBhZCB0eXBlIC0gdG8g
d3JhcCBib3RoIEhJRCBhbmQgR2FtZUNvbnRyb2xlciBnYW1lcGFkcyAtCisgICAgLy8gYmVjYXVz
ZSBNdWx0aUdhbWVwYWRQcm92aWRlciBuZWVkcyB0byBtYW5hZ2UgdGhlIGluZGV4ZXMgb2YgaXRz
IG93biBnYW1lcGFkcworICAgIC8vIG5vIG1hdHRlciB3aGF0IHRoZSBISUQgb3IgR2FtZUNvbnRy
b2xsZXIgaW5kZXggaXMuCisgICAgY2xhc3MgUGxhdGZvcm1HYW1lcGFkV3JhcHBlciA6IHB1Ymxp
YyBQbGF0Zm9ybUdhbWVwYWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFk
V3JhcHBlcih1bnNpZ25lZCBpbmRleCwgUGxhdGZvcm1HYW1lcGFkKiB3cmFwcGVkKQorICAgICAg
ICAgICAgOiBQbGF0Zm9ybUdhbWVwYWQoaW5kZXgpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1H
YW1lcGFkKHdyYXBwZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faWQgPSB3cmFwcGVkLT5p
ZCgpOworICAgICAgICAgICAgbV9tYXBwaW5nID0gd3JhcHBlZC0+bWFwcGluZygpOworICAgICAg
ICAgICAgbV9jb25uZWN0VGltZSA9IHdyYXBwZWQtPmNvbm5lY3RUaW1lKCk7CisgICAgICAgIH0K
KworICAgICAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmxhc3RVcGRhdGVUaW1lKCk7IH0KKyAgICAgICAgY29u
c3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bs
YXRmb3JtR2FtZXBhZC0+YXhpc1ZhbHVlcygpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBh
ZC0+YnV0dG9uVmFsdWVzKCk7IH0KKworICAgICAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+c291cmNlKCk7IH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZCogbV9wbGF0Zm9ybUdhbWVwYWQ7CisgICAg
fTsKKworICAgIEhhc2hNYXA8UGxhdGZvcm1HYW1lcGFkKiwgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtR2FtZXBhZFdyYXBwZXI+PiBtX2dhbWVwYWRNYXA7CisgICAgYm9vbCBtX2hpZEltcG9ydENv
bXBsZXRlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMGUyMWIxNWY4ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRp
R2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11bHRpR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiSElER2FtZXBhZFByb3ZpZGVyLmgiCisjaW1w
b3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKKyNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBzaXpl
X3QgbnVtYmVyT2ZHYW1lcGFkUHJvdmlkZXJzID0gMjsKKworTXVsdGlHYW1lcGFkUHJvdmlkZXIm
IE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxNdWx0aUdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7CisgICAgcmV0dXJu
IHNoYXJlZFByb3ZpZGVyOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1v
bml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBi
b29sIG1vbml0b3JPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAgICBB
U1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgm
Y2xpZW50KTsKKworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuaWdub3JlR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCk7CisgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnByZXdhcm1HYW1lQ29udHJvbGxlckRldmljZXNJZk5lY2Vz
c2FyeSgpOworCisgICAgaWYgKG1vbml0b3JPdGhlclByb3ZpZGVycykgeworICAgICAgICBISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlz
KTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0
YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgTXVsdGlHYW1l
cGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50
JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisK
KyAgICBib29sIHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAgICBpZiAoc2hvdWxk
U3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycykgeworICAgICAgICBISURHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgICAgICBH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdH
YW1lcGFkcygqdGhpcyk7CisgICAgfQorfQorCit1bnNpZ25lZCBNdWx0aUdhbWVwYWRQcm92aWRl
cjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5zaWduZWQgaW5kZXgg
PSAwOworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgJiYgbV9nYW1l
cGFkVmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIEFTU0VSVChpbmRleCA8
PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKworICAgIGlmIChpbmRleCA9PSBtX2dhbWVwYWRW
ZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtX2dhbWVwYWRWZWN0b3IucmVzaXplKGluZGV4ICsgMSk7
CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBs
YXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQsIEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAgIGF1dG8gaW5kZXggPSBp
bmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBMT0coR2FtZXBhZCwgIk11bHRp
R2FtZXBhZFByb3ZpZGVyIGFkZGluZyBuZXcgcGxhdGZvcm0gZ2FtZXBhZCB0byBpbmRleCAlaSBm
cm9tIGEgJXMgc291cmNlIiwgaW5kZXgsIGdhbWVwYWQuc291cmNlKCkpOworCisgICAgQVNTRVJU
KG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPiBpbmRleCk7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fZ2FtZXBhZE1hcC5zZXQoJmdhbWVwYWQsIFdURjo6bWFrZVVuaXF1ZTxQbGF0Zm9ybUdhbWVw
YWRXcmFwcGVyPihpbmRleCwgJmdhbWVwYWQpKTsKKyAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5k
ZXhdLCBldmVudFZpc2liaWxpdHkpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpw
bGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQorewor
ICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgZGlzY29ubmVjdGluZyBnYW1l
cGFkIGZyb20gYSAlcyBzb3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgpKTsKKworICAgIGF1dG8gZ2Ft
ZXBhZFdyYXBwZXIgPSBtX2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBhZCk7CisKKyAgICBBU1NFUlQo
Z2FtZXBhZFdyYXBwZXIpOworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlci0+aW5kZXgoKSA8IG1f
Z2FtZXBhZFZlY3Rvci5zaXplKCkpOworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3JbZ2FtZXBh
ZFdyYXBwZXItPmluZGV4KCldID09IGdhbWVwYWRXcmFwcGVyLmdldCgpKTsKKworICAgIG1fZ2Ft
ZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPSBudWxscHRyOworCisgICAgZm9y
IChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1l
cGFkRGlzY29ubmVjdGVkKCpnYW1lcGFkV3JhcHBlcik7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRNYWtlc0dhbWVwYWRz
VmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgaWYgKGV2ZW50VmlzaWJpbGl0eSA9PSBF
dmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgp
OworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShldmVudFZpc2liaWxpdHkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5OWE0MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE11bHRpcGxleCB0aGUgSElEIGFuZCBHYW1lQ29udHJvbGxlciBnYW1l
cGFkIHByb3ZpZGVycyBvbiBNYWMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzE5MjUzMj4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9H
YW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgor
CiAyMDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZ2dyZXNzaXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIGdhbWVwYWQgcHJv
dmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29h
L1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1l
cGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXggYWIyYzdmYjg4ZDMuLjE5
NGFhMzU2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2Nv
Y29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0zMSw2ICszMSw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9N
b2NrR2FtZXBhZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011bHRpR2FtZXBhZFByb3Zp
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC01Myw3ICs1NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVs
dEdhbWVwYWRQcm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQog
ICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQotICAgICAgICBHYW1lcGFk
UHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE11bHRpR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403910</attachid>
            <date>2020-07-09 13:19:29 -0700</date>
            <delta_ts>2020-07-09 13:37:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34085</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9L
aXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPS2l0U1BJLmgKaW5k
ZXggMTI4ODNlMmY3MDIuLjg4MzlkYmZmY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0lPS2l0U1BJLmgKQEAgLTI1LDYgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQog
CisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVsZW1lbnQuaD4K
KyNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURNYW5hZ2VyLmg+CisjaW5jbHVkZSA8SU9LaXQvaGlk
L0lPSElEVmFsdWUuaD4KKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAog
I2ltcG9ydCA8SU9LaXQvaGlkL0lPSElERGV2aWNlLmg+CkBAIC01MCw2ICs1Niw3IEBAIHR5cGVk
ZWYgdWludDMyX3QgSU9ISURFdmVudEZpZWxkOwogCiB0eXBlZGVmIHN0cnVjdCBfX0lPSElERXZl
bnRTeXN0ZW1DbGllbnQgKiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmOwogdHlwZWRlZiBzdHJ1
Y3QgX19JT0hJREV2ZW50ICogSU9ISURFdmVudFJlZjsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURH
RURfVFlQRShpZCkgX19JT0hJRFNlcnZpY2VDbGllbnQgKiBJT0hJRFNlcnZpY2VDbGllbnRSZWY7
CiAKICNkZWZpbmUgSU9ISURFdmVudEZpZWxkQmFzZSh0eXBlKSAodHlwZSA8PCAxNikKIApAQCAt
MTQ5LDYgKzE1Niw4IEBAIHZvaWQgSU9ISURFdmVudFNldEludGVnZXJWYWx1ZShJT0hJREV2ZW50
UmVmLCBJT0hJREV2ZW50RmllbGQsIENGSW5kZXgpOwogdm9pZCBJT0hJREV2ZW50QXBwZW5kRXZl
bnQoSU9ISURFdmVudFJlZiwgSU9ISURFdmVudFJlZiwgSU9PcHRpb25CaXRzKTsKIAogSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKENGQWxsb2Nh
dG9yUmVmKTsKK3ZvaWQgSU9ISURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNoaW5nKElPSElERXZl
bnRTeXN0ZW1DbGllbnRSZWYsIENGRGljdGlvbmFyeVJlZik7CitJT0hJRFNlcnZpY2VDbGllbnRS
ZWYgSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChJT0hJREV2
ZW50U3lzdGVtQ2xpZW50UmVmLCB1aW50NjRfdCk7CiAKICNkZWZpbmUga0dTRXZlbnRQYXRoSW5m
b0luUmFuZ2UgKDEgPDwgMCkKICNkZWZpbmUga0dTRXZlbnRQYXRoSW5mb0luVG91Y2ggKDEgPDwg
MSkKQEAgLTIxNCwxNSArMjIzLDEyIEBAIHR5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShp
ZCkgX19JT0hJRERldmljZSAqIElPSElERGV2aWNlUmVmOwogCiB0eXBlZGVmIGtlcm5fcmV0dXJu
X3QgSU9SZXR1cm47CiAKLWVudW0gSU9ISURSZXBvcnRUeXBlIHsKLSAgICBrSU9ISURSZXBvcnRU
eXBlSW5wdXQgPSAwLAotICAgIGtJT0hJRFJlcG9ydFR5cGVPdXRwdXQsCi19OwotCisjaWYgIVBM
QVRGT1JNKE1BQykKIGVudW0gewogICAgIGtJT0hJRE9wdGlvbnNUeXBlTm9uZSAgICAgPSAweDAw
LAogfTsKIHR5cGVkZWYgdWludDMyX3QgSU9ISURPcHRpb25zVHlwZTsKKyNlbmRpZgogCiB0eXBl
ZGVmIFVJbnQzMiBJT09wdGlvbkJpdHM7CiAKQEAgLTIzNCw2ICsyNDAsNyBAQCB2b2lkIElPSElE
RGV2aWNlUmVnaXN0ZXJJbnB1dFJlcG9ydENhbGxiYWNrKElPSElERGV2aWNlUmVmLCB1aW50OF90
KiwgQ0ZJbmRleCwgSQogdm9pZCBJT0hJRERldmljZVVuc2NoZWR1bGVGcm9tUnVuTG9vcChJT0hJ
RERldmljZVJlZiwgQ0ZSdW5Mb29wUmVmLCBDRlN0cmluZ1JlZik7CiBJT1JldHVybiBJT0hJRERl
dmljZUNsb3NlKElPSElERGV2aWNlUmVmLCBJT09wdGlvbkJpdHMpOwogSU9SZXR1cm4gSU9ISURE
ZXZpY2VTZXRSZXBvcnQoSU9ISUREZXZpY2VSZWYsIElPSElEUmVwb3J0VHlwZSwgQ0ZJbmRleCwg
Y29uc3QgdWludDhfdCosIENGSW5kZXgpOworaW9fc2VydmljZV90IElPSElERGV2aWNlR2V0U2Vy
dmljZShJT0hJRERldmljZVJlZik7CiAKIHR5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShp
ZCkgX19JT0hJRE1hbmFnZXIgKiBJT0hJRE1hbmFnZXJSZWY7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDUyMjA0NzQ5ZGJiLi5hZTUxNzJjMzRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC0yNTgsNiArMjU4LDcgQEAgcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWQubW0KIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCitwbGF0Zm9ybS9nYW1lcGFk
L21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIEBuby11bmlmeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFk
MDE2ZTc0NzhmLi43NmM1NTQ4NmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3Miw2ICsxNDcyLDcgQEAKIAkJNTE3QTYz
QzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVB
ODFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3REVFRTgxREU5NEIwODAwQjkx
NjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8q
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBN
dWx0aUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE4MkMyNTYxRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTIxRjMxNDI1MDAwNTlC
QTdDIC8qIEpTU2VydmljZVdvcmtlci5oICovOyB9OwogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJB
N0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07CkBAIC04MzcwLDYgKzgzNzEsOCBAQAogCQk1MTdD
ODcxNjFGOEZENEQzMDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RFRUUzMURFOTRBREMwMEI5
MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RFRUU3MURFOTRCMDgwMEI5MTY0
NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdh
bWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdWx0aUdh
bWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNGNTI0
QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNdWx0aUdhbWVwYWRQcm92aWRlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdp
bmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdG
QkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTgyQzI0QjFGMzEzQUUwMDA1OUJBN0MgLyogTmF2aWdhdG9yU2Vy
dmljZVdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yU2VydmljZVdvcmtlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU3OSw2ICsxOTU4Miw4IEBACiAJCQkJNTE1QkUxOTgx
RDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWQuaCAqLywKIAkJCQk1MTVCRTE5OTFENTRGNkJE
MDBERDdDNjggLyogSElER2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKIAkJCQk1MTVCRTE5QTFENTRG
NkJEMDBERDdDNjggLyogSElER2FtZXBhZFByb3ZpZGVyLmggKi8sCisJCQkJNTE3RTAzRjQyNEI2
Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8sCisJCQkJNTE3RTAzRjUy
NEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzMyNjksNiArMzMy
NzQsNyBAQAogCQkJCUVDQTY4MEM3MUU2NzcyNDUwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdX
aXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0
OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTdFMDNGNzI0
QjZEOTg0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0NUJBNkI2MjM3NjIyQTMwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjZBMzBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNr
Z3JvdW5kRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAppbmRleCA3NWNjOWVmZWY5ZC4uOTIxOGVjODIy
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1H
YW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdh
bWVwYWQuaApAQCAtNDEsMTEgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGNvbnN0IFN0cmluZyYgbWFwcGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwcGluZzsgfQogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQotICAgIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CisgICAgdmlydHVhbCBNb25vdG9uaWNUaW1l
IGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZTsgfQogICAg
IE1vbm90b25pY1RpbWUgY29ubmVjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3RUaW1l
OyB9CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBj
b25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuICJVbmtub3duIl9zOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBQbGF0Zm9ybUdh
bWVwYWQodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIDogbV9pbmRleChpbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZC5oCmluZGV4IDcyZTUzYmExMDY2Li42MWNhMGQ0NDZmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBW
ZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXhpc1Zh
bHVlczsgfQogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2J1dHRvblZhbHVlczsgfQogCisgICAgY29uc3QgY2hhciogc291cmNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkdhbWVDb250cm9sbGVyIl9zOyB9CisKIHByaXZhdGU6
CiAgICAgdm9pZCBzZXR1cEFzRXh0ZW5kZWRHYW1lcGFkKCk7CiAgICAgdm9pZCBzZXR1cEFzR2Ft
ZXBhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCmluZGV4IGJk
ZGVkMTc3MGYxLi4yZTNmZDQxYTVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKQogCiAjaW5j
bHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC01Niw2ICs1NywxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnYW1lcGFkSGFkSW5wdXQoR2FtZUNvbnRyb2xsZXJHYW1lcGFkJiwgYm9vbCBoYWRC
dXR0b25QcmVzc2VzKTsKICAgICB2b2lkIHByZXdhcm1HYW1lQ29udHJvbGxlckRldmljZXNJZk5l
Y2Vzc2FyeSgpOwogCisgICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBib29sIHdpbGxIYW5kbGVISUREZXZpY2Uo
SU9ISUREZXZpY2VSZWYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIoKTsKIApAQCAtNzEsOCArNzgsNiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBpbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQgbWFrZUludmlzaWJp
bGVHYW1lcGFkc1Zpc2libGUoKTsKLQogICAgIEhhc2hNYXA8Q0ZUeXBlUmVmLCBzdGQ6OnVuaXF1
ZV9wdHI8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOwogICAgIFZlY3RvcjxQ
bGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CiAgICAgSGFzaFNldDxQbGF0Zm9ybUdh
bWVwYWQqPiBtX2ludmlzaWJsZUdhbWVwYWRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KaW5kZXggYmI0MTJmOTE4OTUuLjRlMDBiZTYxMmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTI5LDEyICsyOSwxNCBAQAog
I2lmIEVOQUJMRShHQU1FUEFEKQogCiAjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWQuaCIK
LSNpbXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExpbmsuaCIKICNpbXBvcnQgIkdhbWVwYWRQcm92
aWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8R2FtZUNvbnRyb2xs
ZXIvR2FtZUNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvSU9LaXRTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaW1wb3J0ICJHYW1lQ29udHJvbGxl
clNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29u
ZHMgaW5wdXROb3RpZmljYXRpb25EZWxheSB7IDE2X21zIH07CkBAIC0xOTUsNiArMTk3LDUyIEBA
IHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90aWZpY2F0aW9uVGlt
ZXJGaXJlZCgpCiAgICAgZGlzcGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KCk7CiB9
CiAKKyNpZiBQTEFURk9STShNQUMpCitib29sIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
Ojp3aWxsSGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKK3sKKyAgICBpZiAo
IWlzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byBkZXZpY2VTZXJ2aWNlID0gSU9ISUREZXZpY2VHZXRTZXJ2aWNlKGRl
dmljZSk7CisgICAgaWYgKCFkZXZpY2VTZXJ2aWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBDaGVjayB0aGUgc2VydmljZSBkaXJlY3RseSBiYWNraW5nIHRoaXMgZGV2aWNlCisg
ICAgdWludDY0X3QgcmVnaXN0cnlJRDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0
cnlFbnRyeUlEKGRldmljZVNlcnZpY2UsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9w
dENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOworICAgIElPSElERXZl
bnRTeXN0ZW1DbGllbnRTZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgbnVsbHB0
cik7CisgICAgYXV0byBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdp
c3RyeUlEKSk7CisgICAgaWYgKHNlcnZpY2VDbGllbnQpIHsKKyAgICAgICAgaWYgKENvbnRyb2xs
ZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0cyBncmFuZGNoaWxk
IHNlcnZpY2UKKyAgICBpb19yZWdpc3RyeV9lbnRyeV90IGNoaWxkOworICAgIGlmIChJT1JlZ2lz
dHJ5RW50cnlHZXRDaGlsZEVudHJ5KGRldmljZVNlcnZpY2UsIGtJT1NlcnZpY2VQbGFuZSwgJmNo
aWxkKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNo
aWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0
Q2hpbGRFbnRyeShjaGlsZCwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VT
UykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQoY2hp
bGQsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5
U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQp
KTsKKyAgICBpZiAoIXNlcnZpY2VDbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpOwor
fQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKaW5kZXggMThmOGU3NWI3
YjUuLjQ1NDMwNDNkZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCkBAIC0yNyw4ICsyNywyNyBAQAog
CiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HQ0NvbnRyb2xsZXIuaD4KIAorI2lmIFBMQVRGT1JN
KE1BQykKKyNpbXBvcnQgPElPS2l0L2hpZHN5c3RlbS9JT0hJRFNlcnZpY2VDbGllbnQuaD4KKyNl
bmRpZgorCiBAaW50ZXJmYWNlIEdDQ29udHJvbGxlciAoKQogKyAodm9pZClfX29wZW5YUENfYW5k
X0NCQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVfXzsKIEBlbmQKIAorI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCitXVEZfRVhURVJOX0NfQkVHSU4KKyNp
bXBvcnQgPEdhbWVDb250cm9sbGVyL0dDVXRpbGl0eS5oPgorV1RGX0VYVEVSTl9DX0VORAorCisj
ZWxzZQorCitXVEZfRVhURVJOX0NfQkVHSU4KK0NsYXNzIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZp
Y2UoSU9ISURTZXJ2aWNlQ2xpZW50UmVmKTsKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8v
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogI2VuZGlm
IC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmgKaW5kZXggMTAxODNiZmMxNzUuLjEzOWUyYjkzNTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyU29mdExpbmsuaApAQCAtMzYsNCArMzYsOCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihXZWJDb3JlLCBHQ0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9S
X0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVjdE5v
dGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1Jf
SEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25uZWN0
Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRyb2xsZXJD
bGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2UpLCAo
c2VydmljZSkpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQppbmRleCBjMTA3MGM0MTk2Yi4u
MTc2NjJhMzljMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KQEAgLTM2LDQgKzM2
LDggQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUwoV2ViQ29yZSwgR2FtZUNv
bnRyb2xsZXIsIEdDQ29udHJvbGxlcikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1Jf
U09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nvbm5lY3RO
b3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNs
YXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChz
ZXJ2aWNlKSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmNwcAppbmRleCA0ZjVkOTBlNTY2ZS4uZTkyNzNjNDMzZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwCkBAIC0yOCw5
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCi0jaW5j
bHVkZSA8SU9LaXQvaGlkL0lPSElERWxlbWVudC5oPgotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJ
RFVzYWdlVGFibGVzLmg+Ci0jaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElEVmFsdWUuaD4KKyNpbmNs
dWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5o
PgogI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuaAppbmRleCBhMjUyMzRmYjg3NS4uYTU1MGFmMGEzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKQEAgLTI4LDcgKzI4LDcg
QEAKICNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1HYW1lcGFkLmgiCi0jaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElERGV2aWNlLmg+CisjaW5j
bHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
QEAgLTEyMSw2ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4
aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBjb25z
dCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9i
dXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJISUQiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRFbGVtZW50cygpOwog
ICAgIHZvaWQgaW5pdEVsZW1lbnRzRnJvbUFycmF5KENGQXJyYXlSZWYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5jcHAKaW5kZXggMGI2MzIyNWMwN2MuLjVhZjU5NTk4YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShN
QUMpCiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW1wb3J0
ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
IlBsYXRmb3JtR2FtZXBhZC5oIgpAQCAtMTc4LDYgKzE3OSwxMiBAQCB2b2lkIEhJREdhbWVwYWRQ
cm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNs
aWVudCkKIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNl
UmVmIGRldmljZSkKIHsKKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtE
ZXZpY2VzICYmIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjp3aWxsSGFuZGxlSElERGV2
aWNlKGRldmljZSkpIHsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFt
ZXdvcmsgd2lsbCBoYW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVy
IGlnbm9yaW5nIGl0IiwgZGV2aWNlKTsKKyAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFnZWRH
YW1lcGFkcy5hZGQoZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VS
VCghbV9nYW1lcGFkTWFwLmdldChkZXZpY2UpKTsKIAogICAgIExPRyhHYW1lcGFkLCAiSElER2Ft
ZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CkBAIC0yMDEsMTYgKzIwOCwy
OCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYg
ZGV2aWNlKQogICAgICAgICAgICAgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKICAgICB9CiAKKyAgICBhdXRvIGV2ZW50VmlzaWJpbGl0eSA9IG1faW5p
dGlhbEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDog
RXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm87CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCi0gICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dh
bWVwYWRWZWN0b3JbaW5kZXhdLCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vKTsK
KyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3Rv
cltpbmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7CisKKyAgICAvLyBJZiB3ZSBhcmUgd29ya2luZyB0
b2dldGhlciB3aXRoIHRoZSBHYW1lQ29udHJvbGxlciBwcm92aWRlciwgbGV0IGl0IGtub3cKKyAg
ICAvLyB0aGF0IGdhbWVwYWRzIHNob3VsZCBub3cgYmUgdmlzaWJsZS4KKyAgICBpZiAobV9pZ25v
cmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIGV2ZW50VmlzaWJpbGl0eSA9PSBF
dmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgp
OwogfQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmlj
ZVJlZiBkZXZpY2UpCiB7Ci0gICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2
aWNlICVwIHJlbW92ZWQiLCBkZXZpY2UpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVw
YWQ+IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwotICAg
IEFTU0VSVChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICBpZiAoIXJlbW92ZWRHYW1lcGFkKSB7Cisg
ICAgICAgIGF1dG8gdGFrZW4gPSBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLnRha2Uo
ZGV2aWNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4pOworICAgICAgICBM
T0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBpbmZvcm1lZCBvZiByZW1vdmFsIG9mIGRl
dmljZSAlcCwgd2hpY2ggaXMgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuIEln
bm9yaW5nLiIsIGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coR2Ft
ZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7CiAK
ICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0
Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKQEAgLTI0OSw3ICsyNjgs
OCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVk
KCkKIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBISURHYW1lcGFkUHJvdmlkZXI6OnJlbW92
ZUdhbWVwYWRGb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxISURHYW1lcGFkPiByZXN1bHQgPSBtX2dhbWVwYWRNYXAudGFrZShkZXZpY2UpOwot
ICAgIEFTU0VSVChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQoKSk7
CiAgICAgaWYgKGkgIT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCmluZGV4IDFiYjU0ZWU1NjFi
Li5mNWYyYTk4YzkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNs
dWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlICJISURHYW1lcGFkLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURNYW5hZ2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC01Niw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldmljZVJl
bW92ZWQoSU9ISUREZXZpY2VSZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVl
UmVmKTsKIAorICAgIHZvaWQgaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCkg
eyBtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgPSB0cnVlOyB9CisKIHBy
aXZhdGU6CiAgICAgSElER2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDEwICs3MiwxMiBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsK
ICAgICBIYXNoTWFwPElPSElERGV2aWNlUmVmLCBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4+
IG1fZ2FtZXBhZE1hcDsKKyAgICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9s
bGVyTWFuYWdlZEdhbWVwYWRzOwogCiAgICAgUmV0YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9t
YW5hZ2VyOwogCiAgICAgYm9vbCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgeyBmYWxz
ZSB9OwogCiAgICAgVGltZXIgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBU
aW1lciBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWI4MTJhYjA3NWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQ
cm92aWRlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJHYW1lcGFk
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTXVsdGlHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFBy
b3ZpZGVyLCBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5NdWx0aUdhbWVwYWRQcm92aWRlcigpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBNdWx0aUdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICAvLyBH
YW1lcGFkUHJvdmlkZXIKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQ
cm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhH
YW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1H
YW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0
b3I7IH0KKyAgICBib29sIGlzTW9ja0dhbWVwYWRQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICAvLyBHYW1lcGFkUHJvdmlkZXJDbGllbnQKKyAgICB2b2lkIHBsYXRmb3Jt
R2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNp
YmxlKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9y
bUdhbWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHko
RXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOwor
Citwcml2YXRlOgorICAgIHVuc2lnbmVkIGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsK
KworICAgIGJvb2wgbV9zaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBz
aXplX3QgbV9pbml0aWFsR2FtZXBhZHNDb3VudCB7IDAgfTsKKyAgICBWZWN0b3I8UGxhdGZvcm1H
YW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOworCisgICAgLy8gV2UgY3JlYXRlIG91ciBvd24gR2Ft
ZXBhZCB0eXBlIC0gdG8gd3JhcCBib3RoIEhJRCBhbmQgR2FtZUNvbnRyb2xlciBnYW1lcGFkcyAt
CisgICAgLy8gYmVjYXVzZSBNdWx0aUdhbWVwYWRQcm92aWRlciBuZWVkcyB0byBtYW5hZ2UgdGhl
IGluZGV4ZXMgb2YgaXRzIG93biBnYW1lcGFkcworICAgIC8vIG5vIG1hdHRlciB3aGF0IHRoZSBI
SUQgb3IgR2FtZUNvbnRyb2xsZXIgaW5kZXggaXMuCisgICAgY2xhc3MgUGxhdGZvcm1HYW1lcGFk
V3JhcHBlciA6IHB1YmxpYyBQbGF0Zm9ybUdhbWVwYWQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
UGxhdGZvcm1HYW1lcGFkV3JhcHBlcih1bnNpZ25lZCBpbmRleCwgUGxhdGZvcm1HYW1lcGFkKiB3
cmFwcGVkKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUdhbWVwYWQoaW5kZXgpCisgICAgICAgICAg
ICAsIG1fcGxhdGZvcm1HYW1lcGFkKHdyYXBwZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
aWQgPSB3cmFwcGVkLT5pZCgpOworICAgICAgICAgICAgbV9tYXBwaW5nID0gd3JhcHBlZC0+bWFw
cGluZygpOworICAgICAgICAgICAgbV9jb25uZWN0VGltZSA9IHdyYXBwZWQtPmNvbm5lY3RUaW1l
KCk7CisgICAgICAgIH0KKworICAgICAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmxhc3RVcGRhdGVUaW1lKCk7
IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+YXhpc1ZhbHVlcygpOyB9CisgICAgICAgIGNv
bnN0IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3BsYXRmb3JtR2FtZXBhZC0+YnV0dG9uVmFsdWVzKCk7IH0KKworICAgICAgICBjb25zdCBjaGFy
KiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+c291cmNl
KCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZCogbV9wbGF0Zm9y
bUdhbWVwYWQ7CisgICAgfTsKKworICAgIEhhc2hNYXA8UGxhdGZvcm1HYW1lcGFkKiwgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+PiBtX2dhbWVwYWRNYXA7CisgICAgYm9v
bCBtX2hpZEltcG9ydENvbXBsZXRlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2Ft
ZXBhZFByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z
MGUyMWIxNWY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11bHRpR2FtZXBhZFByb3Zp
ZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiSElER2FtZXBhZFBy
b3ZpZGVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQu
aCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBzaXplX3QgbnVtYmVyT2ZHYW1lcGFkUHJvdmlkZXJzID0gMjsKKworTXVsdGlH
YW1lcGFkUHJvdmlkZXImIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNdWx0aUdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlk
ZXI7CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCit2b2lkIE11bHRpR2FtZXBhZFBy
b3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNs
aWVudCkKK3sKKyAgICBib29sIG1vbml0b3JPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5pc0Vt
cHR5KCk7CisKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAg
bV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkuaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCk7CisgICAgR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnByZXdhcm1HYW1lQ29udHJvbGxl
ckRldmljZXNJZk5lY2Vzc2FyeSgpOworCisgICAgaWYgKG1vbml0b3JPdGhlclByb3ZpZGVycykg
eworICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmlu
Z0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisK
K3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlu
cygmY2xpZW50KSk7CisKKyAgICBib29sIHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRl
cnMgPSBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisK
KyAgICBpZiAoc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycykgeworICAgICAgICBI
SURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRo
aXMpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCku
c3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgfQorfQorCit1bnNpZ25lZCBNdWx0
aUdhbWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAg
dW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5z
aXplKCkgJiYgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAg
IEFTU0VSVChpbmRleCA8PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKworICAgIGlmIChpbmRl
eCA9PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtX2dhbWVwYWRWZWN0b3IucmVz
aXplKGluZGV4ICsgMSk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgTXVsdGlHYW1l
cGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdh
bWVwYWQsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAg
IGF1dG8gaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBMT0co
R2FtZXBhZCwgIk11bHRpR2FtZXBhZFByb3ZpZGVyIGFkZGluZyBuZXcgcGxhdGZvcm0gZ2FtZXBh
ZCB0byBpbmRleCAlaSBmcm9tIGEgJXMgc291cmNlIiwgaW5kZXgsIGdhbWVwYWQuc291cmNlKCkp
OworCisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPiBpbmRleCk7CisKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fZ2FtZXBhZE1hcC5zZXQoJmdhbWVwYWQsIFdURjo6bWFrZVVuaXF1
ZTxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPihpbmRleCwgJmdhbWVwYWQpKTsKKyAgICBBU1NFUlQo
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dh
bWVwYWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworfQorCit2b2lkIE11bHRpR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFk
JiBnYW1lcGFkKQoreworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgZGlz
Y29ubmVjdGluZyBnYW1lcGFkIGZyb20gYSAlcyBzb3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgpKTsK
KworICAgIGF1dG8gZ2FtZXBhZFdyYXBwZXIgPSBtX2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBhZCk7
CisKKyAgICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXIpOworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBl
ci0+aW5kZXgoKSA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworICAgIEFTU0VSVChtX2dhbWVw
YWRWZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4KCldID09IGdhbWVwYWRXcmFwcGVyLmdldCgp
KTsKKworICAgIG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPSBudWxs
cHRyOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVu
dC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpnYW1lcGFkV3JhcHBlcik7Cit9CisKK3Zv
aWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZl
bnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgaWYgKGV2ZW50
VmlzaWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdh
bWVwYWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShldmVudFZpc2liaWxp
dHkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FN
RVBBRCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5OWE0
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE11bHRpcGxleCB0aGUgSElEIGFuZCBHYW1l
Q29udHJvbGxlciBnYW1lcGFkIHByb3ZpZGVycyBvbiBNYWMuCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MzE5MjUzMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTQxMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1l
cGFkUHJvdmlkZXIpOgorCiAyMDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZ2dyZXNzaXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3
b3JrIGdhbWVwYWQgcHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXgg
YWIyYzdmYjg4ZDMuLjE5NGFhMzU2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1t
CkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011
bHRpR2FtZXBhZFByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC01Myw3ICs1NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBs
YXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9s
bGVyRnJhbWV3b3JrKQogICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVy
KEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQot
ICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFBy
b3ZpZGVyKE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403912</attachid>
            <date>2020-07-09 13:37:58 -0700</date>
            <delta_ts>2020-07-09 14:22:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31596</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLmFlNTE3MmMz
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OCw2ICsyNTgsNyBAQCBwbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5jcHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKK3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQwMTZlNzQ3OGYuLjc2YzU1NDg2YTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDcyLDYgKzE0NzIsNyBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNv
ZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYx
QzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3
RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07
CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0
MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJ
NTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAg
LTgzNzAsNiArODM3MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQy
NEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkEx
NzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5k
b3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNB
RTAwMDU5QkE3QyAvKiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JT
ZXJ2aWNlV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc5LDYg
KzE5NTgyLDggQEAKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5o
ICovLAogCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIu
Y3BwICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlk
ZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQxNTMx
MzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJBMzAw
NERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmlu
ZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rvbmlj
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0K
KyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxk
b3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9y
PGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
OiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNiYTEw
NjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9
CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2FtZUNv
bnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdhbWVw
YWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLjJlM2ZkNDFhNWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbmNs
dWRlIDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAg
LTU2LDYgKzU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGdhbWVwYWRIYWRJbnB1dChHYW1lQ29u
dHJvbGxlckdhbWVwYWQmLCBib29sIGhhZEJ1dHRvblByZXNzZXMpOwogICAgIHZvaWQgcHJld2Fy
bUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7CiAKKyAgICB2b2lkIG1ha2VJbnZp
c2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGlj
IGJvb2wgd2lsbEhhbmRsZUhJRERldmljZShJT0hJRERldmljZVJlZik7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSw4ICs3
OCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgp
OwogCi0gICAgdm9pZCBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwotCiAgICAgSGFz
aE1hcDxDRlR5cGVSZWYsIHN0ZDo6dW5pcXVlX3B0cjxHYW1lQ29udHJvbGxlckdhbWVwYWQ+PiBt
X2dhbWVwYWRNYXA7CiAgICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3Rv
cjsKICAgICBIYXNoU2V0PFBsYXRmb3JtR2FtZXBhZCo+IG1faW52aXNpYmxlR2FtZXBhZHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBiYjQxMmY5MTg5
NS4uMjY3MzQ2OGMyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
ci5tbQpAQCAtMjksMTIgKzI5LDEzIEBACiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbXBvcnQg
IkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgotI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGlu
ay5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxlci9HYW1lQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExpbmsu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBpbnB1dE5v
dGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsKQEAgLTE5NSw2ICsxOTYsNTIgQEAgdm9pZCBHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkK
ICAgICBkaXNwYXRjaFBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKTsKIH0KIAorI2lmIFBM
QVRGT1JNKE1BQykKK2Jvb2wgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5k
bGVISUREZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQoreworICAgIGlmICghaXNHYW1lQ29u
dHJvbGxlckZyYW1ld29ya0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGRldmljZVNlcnZpY2UgPSBJT0hJRERldmljZUdldFNlcnZpY2UoZGV2aWNlKTsKKyAg
ICBpZiAoIWRldmljZVNlcnZpY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENo
ZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5IGJhY2tpbmcgdGhpcyBkZXZpY2UKKyAgICB1aW50NjRf
dCByZWdpc3RyeUlEOworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQo
ZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBldmVudFN5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURF
dmVudFN5c3RlbUNsaWVudENyZWF0ZShudWxscHRyKSk7CisgICAgSU9ISURFdmVudFN5c3RlbUNs
aWVudFNldE1hdGNoaW5nKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBh
dXRvIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vy
dmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsK
KyAgICBpZiAoc2VydmljZUNsaWVudCkgeworICAgICAgICBpZiAoQ29udHJvbGxlckNsYXNzRm9y
U2VydmljZShzZXJ2aWNlQ2xpZW50LmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaXRzIGdyYW5kY2hpbGQgc2VydmljZQor
ICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgY2hpbGQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdl
dENoaWxkRW50cnkoZGV2aWNlU2VydmljZSwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtF
Uk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5
KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUsICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJlZ2lz
dHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2Vy
dmljZUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9y
UmVnaXN0cnlJRChldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlm
ICghc2VydmljZUNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENv
bnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSk7Cit9CisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4ZTc1YjdiNS4uYTY4ZjA2
MzllNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKQEAgLTMxLDQgKzMxLDIwIEBACiArICh2b2lkKV9f
b3BlblhQQ19hbmRfQ0JBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYg
UExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKK1dURl9FWFRFUk5f
Q19CRUdJTgorI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR0NVdGlsaXR5Lmg+CitXVEZfRVhURVJO
X0NfRU5ECisKKyNlbHNlCisKK1dURl9FWFRFUk5fQ19CRUdJTgordHlwZWRlZiBzdHJ1Y3QgQ0Zf
QlJJREdFRF9UWVBFKGlkKSBJT0hJRFNlcnZpY2VDbGllbnQgKiBJT0hJRFNlcnZpY2VDbGllbnRS
ZWY7CitDbGFzcyBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJl
Zik7CitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCmluZGV4IDEwMTgzYmZj
MTc1Li4xMzllMmI5MzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKQEAgLTM2LDQg
KzM2LDggQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViQ29yZSwgR0NDb250cm9sbGVy
KQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNv
bnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICop
CiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29u
dHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKIAorI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdl
YkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywg
KElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2UpKQorI2VuZGlmCisKICNl
bmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExp
bmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyU29mdExpbmsubW0KaW5kZXggYzEwNzBjNDE5NmIuLjE3NjYyYTM5YzAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29m
dExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlclNvZnRMaW5rLm1tCkBAIC0zNiw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX09QVElPTkFMKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXIp
CiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29u
dHJvbGxlciwgR0NDb250cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikK
IFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250
cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAq
KQogCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgR2FtZUNvbnRyb2xsZXIsIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAo
SU9ISURTZXJ2aWNlQ2xpZW50UmVmIHNlcnZpY2UpLCAoc2VydmljZSkpCisjZW5kaWYKKwogI2Vu
ZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKaW5kZXggNGY1ZDkw
ZTU2NmUuLmU5MjczYzQzM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcApAQCAtMjgsOSArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKIAotI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVs
ZW1lbnQuaD4KLSNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURVc2FnZVRhYmxlcy5oPgotI2luY2x1
ZGUgPElPS2l0L2hpZC9JT0hJRFZhbHVlLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT0tp
dFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlw
ZUNhc3RzQ0YuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggYTI1MjM0ZmI4
NzUuLjE2NDFmNDA1MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZC5oCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlz
VmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3Vy
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSElEIl9zOyB9CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0RWxlbWVudHMoKTsKICAgICB2b2lkIGluaXRFbGVtZW50c0Zyb21BcnJheShDRkFycmF5
UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDBiNjMyMjVjMDdjLi41YWY1OTU5OGJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR0FN
RVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlci5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIKQEAgLTE3OCw2ICsxNzksMTIg
QEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZp
Y2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CisgICAgaWYgKG1faWdub3Jlc0dhbWVD
b250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRl
cjo6d2lsbEhhbmRsZUhJRERldmljZShkZXZpY2UpKSB7CisgICAgICAgIExPRyhHYW1lcGFkLCAi
R2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrIHdpbGwgaGFuZGxlIGF0dGFjaGVkIGRldmljZSAlcCAt
IEhJREdhbWVwYWRQcm92aWRlciBpZ25vcmluZyBpdCIsIGRldmljZSk7CisgICAgICAgIG1fZ2Ft
ZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMuYWRkKGRldmljZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBBU1NFUlQoIW1fZ2FtZXBhZE1hcC5nZXQoZGV2aWNlKSk7CiAKICAgICBM
T0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2Up
OwpAQCAtMjAxLDE2ICsyMDgsMjggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFk
ZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICAgICAgICAgIG1faW5pdGlhbEdhbWVwYWRz
Q29ubmVjdGVkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfQogCisgICAgYXV0byBldmVu
dFZpc2liaWxpdHkgPSBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1l
cGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vOwogICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2Ft
ZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgbV9pbml0aWFsR2FtZXBhZHND
b25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMgOiBFdmVudE1ha2VzR2Ft
ZXBhZHNWaXNpYmxlOjpObyk7CisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVj
dGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworCisgICAgLy8g
SWYgd2UgYXJlIHdvcmtpbmcgdG9nZXRoZXIgd2l0aCB0aGUgR2FtZUNvbnRyb2xsZXIgcHJvdmlk
ZXIsIGxldCBpdCBrbm93CisgICAgLy8gdGhhdCBnYW1lcGFkcyBzaG91bGQgbm93IGJlIHZpc2li
bGUuCisgICAgaWYgKG1faWdub3Jlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBl
dmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzKQorICAgICAg
ICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkubWFrZUludmlzaWJp
bGVHYW1lcGFkc1Zpc2libGUoKTsKIH0KIAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmlj
ZVJlbW92ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIExPRyhHYW1lcGFkLCAiSElE
R2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKLQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZW1vdmVkR2FtZXBhZCA9IHJlbW92ZUdhbWVwYWRGb3JE
ZXZpY2UoZGV2aWNlKTsKLSAgICBBU1NFUlQocmVtb3ZlZEdhbWVwYWQpOworCisgICAgaWYgKCFy
ZW1vdmVkR2FtZXBhZCkgeworICAgICAgICBhdXRvIHRha2VuID0gbV9nYW1lQ29udHJvbGxlck1h
bmFnZWRHYW1lcGFkcy50YWtlKGRldmljZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodGFrZW4s
IHRha2VuKTsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgaW5mb3Jt
ZWQgb2YgcmVtb3ZhbCBvZiBkZXZpY2UgJXAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgR2FtZUNvbnRy
b2xsZXIgZnJhbWV3b3JrLiBJZ25vcmluZy4iLCBkZXZpY2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIHJl
bW92ZWQiLCBkZXZpY2UpOwogCiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCiAg
ICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpyZW1vdmVkR2FtZXBh
ZCk7CkBAIC0yNDksNyArMjY4LDggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmlucHV0Tm90
aWZpY2F0aW9uVGltZXJGaXJlZCgpCiBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gSElER2Ft
ZXBhZFByb3ZpZGVyOjpyZW1vdmVHYW1lcGFkRm9yRGV2aWNlKElPSElERGV2aWNlUmVmIGRldmlj
ZSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVzdWx0ID0gbV9nYW1lcGFk
TWFwLnRha2UoZGV2aWNlKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGkgPSBtX2dhbWVwYWRWZWN0b3Iu
ZmluZChyZXN1bHQuZ2V0KCkpOwogICAgIGlmIChpICE9IG5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
aAppbmRleCAxYmI1NGVlNTYxYi4uZjVmMmE5OGM5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiSElE
R2FtZXBhZC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElE
TWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTYsNiArNTUsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVl
c0NoYW5nZWQoSU9ISURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVy
RnJhbWV3b3JrRGV2aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZp
Y2VzID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBA
IC03MSwxMCArNzIsMTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQq
PiBtX2dhbWVwYWRWZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlx
dWVfcHRyPEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJRERldmlj
ZVJlZj4gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJ
T0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHND
b25uZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtEZXZpY2VzIHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29u
bmVjdGVkVGltZXI7CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBh
ZFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiODEy
YWIwNzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQor
CisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11bHRpR2FtZXBhZFByb3ZpZGVy
IDogcHVibGljIEdhbWVwYWRQcm92aWRlciwgcHVibGljIEdhbWVwYWRQcm92aWRlckNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+TXVsdGlHYW1lcGFkUHJvdmlkZXIoKSA9IGRlZmF1bHQ7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTXVsdGlHYW1lcGFkUHJvdmlkZXImIHNpbmds
ZXRvbigpOworCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyCisgICAgdm9pZCBzdGFydE1vbml0b3Jp
bmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BN
b25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgY29u
c3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmluYWwgeyBy
ZXR1cm4gbV9nYW1lcGFkVmVjdG9yOyB9CisgICAgYm9vbCBpc01vY2tHYW1lcGFkUHJvdmlkZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gR2FtZXBhZFByb3ZpZGVyQ2xpZW50
CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiwgRXZl
bnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRE
aXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdh
bWVwYWRJbnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworCitw
cm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFBsYXRmb3JtR2FtZXBh
ZElucHV0QWN0aXZpdHkoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbmRleEZvck5ld2x5
Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBib29sIG1fc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJs
ZSB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1faW5pdGlhbEdhbWVwYWRzQ291bnQgeyAwIH07Cisg
ICAgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKKworICAgIC8vIFdl
IGNyZWF0ZSBvdXIgb3duIEdhbWVwYWQgdHlwZSAtIHRvIHdyYXAgYm90aCBISUQgYW5kIEdhbWVD
b250cm9sZXIgZ2FtZXBhZHMgLQorICAgIC8vIGJlY2F1c2UgTXVsdGlHYW1lcGFkUHJvdmlkZXIg
bmVlZHMgdG8gbWFuYWdlIHRoZSBpbmRleGVzIG9mIGl0cyBvd24gZ2FtZXBhZHMKKyAgICAvLyBu
byBtYXR0ZXIgd2hhdCB0aGUgSElEIG9yIEdhbWVDb250cm9sbGVyIGluZGV4IGlzLgorICAgIGNs
YXNzIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIgOiBwdWJsaWMgUGxhdGZvcm1HYW1lcGFkIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZFdyYXBwZXIodW5zaWduZWQgaW5kZXgs
IFBsYXRmb3JtR2FtZXBhZCogd3JhcHBlZCkKKyAgICAgICAgICAgIDogUGxhdGZvcm1HYW1lcGFk
KGluZGV4KQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtR2FtZXBhZCh3cmFwcGVkKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2lkID0gd3JhcHBlZC0+aWQoKTsKKyAgICAgICAgICAgIG1fbWFw
cGluZyA9IHdyYXBwZWQtPm1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1fY29ubmVjdFRpbWUgPSB3
cmFwcGVkLT5jb25uZWN0VGltZSgpOworICAgICAgICB9CisKKyAgICAgICAgTW9ub3RvbmljVGlt
ZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFk
LT5sYXN0VXBkYXRlVGltZSgpOyB9CisgICAgICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlz
VmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmF4aXNWYWx1
ZXMoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmJ1dHRvblZhbHVlcygpOyB9CisK
KyAgICAgICAgY29uc3QgY2hhciogc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0
Zm9ybUdhbWVwYWQtPnNvdXJjZSgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQbGF0Zm9y
bUdhbWVwYWQqIG1fcGxhdGZvcm1HYW1lcGFkOworICAgIH07CisKKyAgICBIYXNoTWFwPFBsYXRm
b3JtR2FtZXBhZCosIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyPj4gbV9n
YW1lcGFkTWFwOworICAgIGJvb2wgbV9oaWRJbXBvcnRDb21wbGV0ZSB7IGZhbHNlIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYg
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMzBlMjFiMTVmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5tbQpAQCAt
MCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNdWx0aUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRG
T1JNKE1BQykKKworI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCIKKyNp
bXBvcnQgIkhJREdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCAiUGxhdGZvcm1HYW1lcGFkLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgc2l6ZV90IG51bWJlck9mR2FtZXBhZFByb3Zp
ZGVycyA9IDI7CisKK011bHRpR2FtZXBhZFByb3ZpZGVyJiBNdWx0aUdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXVsdGlHYW1lcGFkUHJv
dmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92aWRlcjsKK30KKwor
dm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBtb25pdG9yT3RoZXJQcm92aWRl
cnMgPSBtX2NsaWVudHMuaXNFbXB0eSgpOworCisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFp
bnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisKKyAgICBISURHYW1l
cGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLmlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrRGV2
aWNlcygpOworICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5w
cmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKKworICAgIGlmIChtb25p
dG9yT3RoZXJQcm92aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcygq
dGhpcyk7CisgICAgfQorfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRv
cmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VS
VChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworCisgICAgYm9vbCBzaG91bGRTdG9wTW9u
aXRvcmluZ090aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KSAmJiBtX2Ns
aWVudHMuaXNFbXB0eSgpOworCisgICAgaWYgKHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92
aWRlcnMpIHsKKyAgICAgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9u
aXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0K
K30KKwordW5zaWduZWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0
ZWREZXZpY2UoKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXgg
PCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpICYmIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0pCisgICAg
ICAgICsraW5kZXg7CisKKyAgICBBU1NFUlQoaW5kZXggPD0gbV9nYW1lcGFkVmVjdG9yLnNpemUo
KSk7CisKKyAgICBpZiAoaW5kZXggPT0gbV9nYW1lcGFkVmVjdG9yLnNpemUoKSkKKyAgICAgICAg
bV9nYW1lcGFkVmVjdG9yLnJlc2l6ZShpbmRleCArIDEpOworCisgICAgcmV0dXJuIGluZGV4Owor
fQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQo
UGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50
VmlzaWJpbGl0eSkKK3sKKyAgICBhdXRvIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERl
dmljZSgpOworCisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBhZGRpbmcg
bmV3IHBsYXRmb3JtIGdhbWVwYWQgdG8gaW5kZXggJWkgZnJvbSBhICVzIHNvdXJjZSIsIGluZGV4
LCBnYW1lcGFkLnNvdXJjZSgpKTsKKworICAgIEFTU0VSVChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgp
ID4gaW5kZXgpOworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dhbWVwYWRNYXAuc2V0KCZnYW1l
cGFkLCBXVEY6Om1ha2VVbmlxdWU8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4oaW5kZXgsICZnYW1l
cGFkKSk7CisgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBtX2dhbWVwYWRW
ZWN0b3JbaW5kZXhdID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKworICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2Ft
ZXBhZENvbm5lY3RlZCgqbV9nYW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsK
K30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVj
dGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKK3sKKyAgICBMT0coR2FtZXBhZCwgIk11bHRp
R2FtZXBhZFByb3ZpZGVyIGRpc2Nvbm5lY3RpbmcgZ2FtZXBhZCBmcm9tIGEgJXMgc291cmNlIiwg
Z2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBhdXRvIGdhbWVwYWRXcmFwcGVyID0gbV9nYW1lcGFk
TWFwLnRha2UoJmdhbWVwYWQpOworCisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyKTsKKyAgICBB
U1NFUlQoZ2FtZXBhZFdyYXBwZXItPmluZGV4KCkgPCBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsK
KyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9PSBn
YW1lcGFkV3JhcHBlci5nZXQoKSk7CisKKyAgICBtX2dhbWVwYWRWZWN0b3JbZ2FtZXBhZFdyYXBw
ZXItPmluZGV4KCldID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqZ2FtZXBh
ZFdyYXBwZXIpOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRJbnB1dEFjdGl2aXR5KEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5
KQoreworICAgIGlmIChldmVudFZpc2liaWxpdHkgPT0gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJs
ZTo6WWVzKQorICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkubWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZElucHV0QWN0
aXZpdHkoZXZlbnRWaXNpYmlsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzM0
ZGExNjViYmYuLmJmMGZhOTlhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3
LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBs
ZXggdGhlIEhJRCBhbmQgR2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBwcm92aWRlcnMgb24gTWFjLgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQ
cm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKToKKwogMjAyMC0wNy0wOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2ZWx5IHByaW1lIEdh
bWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92
aWRlckNvY29hLm1tCmluZGV4IGFiMmM3ZmI4OGQzLi4xOTRhYTM1NjU4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1l
cGFkUHJvdmlkZXJDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9H
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ISURHYW1l
cGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW9ja0dhbWVwYWRQcm92aWRlci5oPgor
I2ltcG9ydCA8V2ViQ29yZS9NdWx0aUdhbWVwYWRQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNyArNTQsNyBAQCB2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIoKQogICAg
IGlmICh1c2VHYW1lQ29udHJvbGxlckZyYW1ld29yaykKICAgICAgICAgR2FtZXBhZFByb3ZpZGVy
OjpzZXRTaGFyZWRQcm92aWRlcihHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkpOwogICAgIGVsc2UKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzZXRTaGFyZWRQcm92
aWRlcihISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKKyAgICAgICAgR2FtZXBhZFBy
b3ZpZGVyOjpzZXRTaGFyZWRQcm92aWRlcihNdWx0aUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403919</attachid>
            <date>2020-07-09 14:22:36 -0700</date>
            <delta_ts>2020-07-09 14:31:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38642</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDBiNjQxNGQyOTk2Li40NTBlZTBhMzlhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3LDYgKzEyNyw3
IEBACiAJCTQ0NTBGQ0EwMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUUyMUY1
RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggKi87IH07CiAJCTQ0RTFBOEFGMjFG
QTU0RTYwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMUE4QUQyMUZBNTREQTAwQzMwNDhFIC8qIExvb2t1
cFNvZnRMaW5rLmggKi87IH07CiAJCTQ0RTFBOEIwMjFGQTU0RUIwMEMzMDQ4RSAvKiBMb29rdXBT
b2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0RTFBOEFFMjFGQTU0REEwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5tbSAqLzsgfTsKKwkJ
NTE3RTAzRjkyNEI3QzAwNzAwNTQ4OTVBIC8qIElPS2l0U1BJTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGODI0QjdDMDA2MDA1NDg5NUEg
LyogSU9LaXRTUElNYWMuaCAqLzsgfTsKIAkJNTcwQUI4RjEyMEFFMkU4RDAwQjhCRTg3IC8qIFNl
Y0tleVByb3h5U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzBBQjhGMDIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLzsgfTsK
IAkJNTcwQUI4RjkyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwQUI4RjgyMEFGNkUz
RDAwQjhCRTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oICovOyB9OwogCQk1NzJBMTA3ODIyQjQ1
NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcyQTEwNzcyMkI0NTZGNTAwRjQxMEM4IC8qIEF1dGhLaXRTUEku
aCAqLzsgfTsKQEAgLTMxMyw2ICszMTQsNyBAQAogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVpY2tMb29rU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFMUE4
QUQyMUZBNTREQTAwQzMwNDhFIC8qIExvb2t1cFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
b2t1cFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RTFBOEFFMjFG
QTU0REEwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IExvb2t1cFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNG
ODI0QjdDMDA2MDA1NDg5NUEgLyogSU9LaXRTUElNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSU9LaXRTUElNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8qIFNlY0tleVByb3h5U1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlY0tleVByb3h5U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFC
OEY4MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNYUENDb25uZWN0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
MkExMDc3MjJCNDU2RjUwMEY0MTBDOCAvKiBBdXRoS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dGhLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNCw2ICs1MTYsNyBA
QAogCQkJCTBDNzc4NTcxMUY0NTEzMEYwMEY0RUJCNiAvKiBEYXRhRGV0ZWN0b3JzU1BJLmggKi8s
CiAJCQkJQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLywKIAkJ
CQlBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi8sCisJCQkJNTE3
RTAzRjgyNEI3QzAwNjAwNTQ4OTVBIC8qIElPS2l0U1BJTWFjLmggKi8sCiAJCQkJMEM3Nzg1NzIx
RjQ1MTMwRjAwRjRFQkI2IC8qIExvb2t1cFNQSS5oICovLAogCQkJCTBDNzc4NTczMUY0NTEzMEYw
MEY0RUJCNiAvKiBNZWRpYVJlbW90ZVNQSS5oICovLAogCQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3
QjA5NyAvKiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKQEAgLTg3Nyw2ICs4ODAsNyBAQAogCQkJCTJF
MTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzVBRjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDMkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTdFMDNGOTI0QjdDMDA3MDA1NDg5NUEgLyogSU9LaXRTUElNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjExREI2MjQzRkE1QkYwMEQ4MDcwNCAvKiBVc2FnZVRy
YWNraW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERC
QzMxNyAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgy
NkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kM2Q3NjQzY2M5ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxJT0tpdC9oaWQvSU9ISURFdmVudFN5
c3RlbUNsaWVudC5oPgorCisjZWxzZQorCitXVEZfRVhURVJOX0NfQkVHSU4KK3R5cGVkZWYgc3Ry
dWN0IENGX0JSSURHRURfVFlQRShpZCkgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZjsKK0lPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVu
dFN5c3RlbUNsaWVudENyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IpOwordm9pZCBJT0hJ
REV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiBj
bGllbnQsIENGRGljdGlvbmFyeVJlZiBtYXRjaGluZyk7CitXVEZfRVhURVJOX0NfRU5ECisKKyNl
bmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDUyMjA0NzQ5ZGJiLi40NGVhMDhmNjQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTcsNyArMjU3LDggQEAgcGxhdGZvcm0vY29jb2Ev
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0KIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRy
b2xsZXJHYW1lcGFkLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAotcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tCitwbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdh
bWVwYWRQcm92aWRlci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFkMDE2ZTc0NzhmLi5h
YzY3MWIyNzkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTQ3Miw2ICsxNDcyLDcgQEAKIAkJNTE3QTYzQzYxQjc0MzE5MjAw
RTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVy
Q0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVBODFDQzgyMDMyMDA2
MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3REVFRTgxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE4MkMyNTYxRjMx
NDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTIxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2Vy
dmljZVdvcmtlci5oICovOyB9OwogCQk1MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTgyQzI1NDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmggKi87IH07CiAJCTUxODJDMjVBMUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4MkMyNEQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmggKi87IH07CkBAIC04MjgxLDcgKzgyODIsNyBAQAogCQk1MTVCRTE4RTFENTRGNUY2
MDBERDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTVCRTE5NzFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBISURHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1QkUxOTgxRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElER2FtZXBhZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MTVCRTE5OTFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhJREdhbWVw
YWRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMTk5MUQ1
NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBISURHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFk
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElER2FtZXBhZFBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUUzN0Y0MUZBQTkzODgw
MEQ3RjIyQSAvKiBTZXJ2aWNlV29ya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VydmljZVdvcmtlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUNyb3NzVGhy
ZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNzAsNiArODM3
MSw4IEBACiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVF
RTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcx
REU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4
OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3Zp
ZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdGQkExNzE1MUFBNzFCMDBC
NTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjRCMUYzMTNBRTAwMDU5QkE3QyAv
KiBOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JTZXJ2aWNlV29ya2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTc3LDggKzE5NTgwLDEwIEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTVCRTE5NzFENTRGNkJEMDBERDdDNjggLyogSElER2Ft
ZXBhZC5jcHAgKi8sCiAJCQkJNTE1QkUxOTgxRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWQu
aCAqLywKLQkJCQk1MTVCRTE5OTFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZFByb3ZpZGVy
LmNwcCAqLywKKwkJCQk1MTVCRTE5OTFENTRGNkJEMDBERDdDNjggLyogSElER2FtZXBhZFByb3Zp
ZGVyLm1tICovLAogCQkJCTUxNUJFMTlBMUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFk
UHJvdmlkZXIuaCAqLywKKwkJCQk1MTdFMDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1l
cGFkUHJvdmlkZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0zMzI2OSw2ICszMzI3NCw3IEBACiAJCQkJRUNBNjgwQzcxRTY3NzI0
NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2QzQx
NTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxN0UwM0Y3MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVw
YWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUz
IC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1QkE2QjYyMzc2MjJB
MzAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEz
MEU4MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1l
cGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5o
CmluZGV4IDc1Y2M5ZWZlZjlkLi45MjE4ZWM4MjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCkBAIC00MSwxMSArNDEsMTMgQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBtYXBwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nOyB9CiAg
ICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0gICAgTW9ub3Rv
bmljVGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7
IH0KKyAgICB2aXJ0dWFsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgTW9ub3RvbmljVGltZSBjb25uZWN0VGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdFRpbWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rv
cjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgVmVj
dG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgY29u
c3QgY2hhciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gIlVua25vd24iX3M7IH0KKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKICAgICAg
ICAgOiBtX2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKaW5kZXggNzJlNTNi
YTEwNjYuLjYxY2EwZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKQEAgLTQ3LDYg
KzQ3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRv
dWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVz
OyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiR2Ft
ZUNvbnRyb2xsZXIiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwQXNFeHRlbmRlZEdh
bWVwYWQoKTsKICAgICB2b2lkIHNldHVwQXNHYW1lcGFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggYmRkZWQxNzcwZjEuLjU3NjIxM2Y0MjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oCkBAIC01Niw2ICs1Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGdhbWVwYWRIYWRJbnB1dChHYW1lQ29udHJvbGxlckdhbWVwYWQm
LCBib29sIGhhZEJ1dHRvblByZXNzZXMpOwogICAgIHZvaWQgcHJld2FybUdhbWVDb250cm9sbGVy
RGV2aWNlc0lmTmVjZXNzYXJ5KCk7CiAKKyAgICB2b2lkIG1ha2VJbnZpc2liaWxlR2FtZXBhZHNW
aXNpYmxlKCk7CisKIHByaXZhdGU6CiAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIo
KTsKIApAQCAtNzEsOCArNzMsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnB1dE5vdGlmaWNh
dGlvblRpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQgbWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2li
bGUoKTsKLQogICAgIEhhc2hNYXA8Q0ZUeXBlUmVmLCBzdGQ6OnVuaXF1ZV9wdHI8R2FtZUNvbnRy
b2xsZXJHYW1lcGFkPj4gbV9nYW1lcGFkTWFwOwogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQq
PiBtX2dhbWVwYWRWZWN0b3I7CiAgICAgSGFzaFNldDxQbGF0Zm9ybUdhbWVwYWQqPiBtX2ludmlz
aWJsZUdhbWVwYWRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0K
aW5kZXggYmI0MTJmOTE4OTUuLmRkNjM1NzQ2ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTI5LDEyICsyOSwxMyBAQAogI2lmIEVOQUJMRShHQU1F
UEFEKQogCiAjaW1wb3J0ICJHYW1lQ29udHJvbGxlckdhbWVwYWQuaCIKLSNpbXBvcnQgIkdhbWVD
b250cm9sbGVyU29mdExpbmsuaCIKICNpbXBvcnQgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCA8R2FtZUNvbnRyb2xsZXIvR2FtZUNvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaW1wb3J0ICJHYW1lQ29u
dHJvbGxlclNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0
IFNlY29uZHMgaW5wdXROb3RpZmljYXRpb25EZWxheSB7IDE2X21zIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJ
LmgKaW5kZXggMThmOGU3NWI3YjUuLmE2OGYwNjM5ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCkBA
IC0zMSw0ICszMSwyMCBAQAogKyAodm9pZClfX29wZW5YUENfYW5kX0NCQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVfXzsKIEBlbmQKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCitXVEZfRVhURVJOX0NfQkVHSU4KKyNpbXBvcnQgPEdhbWVDb250cm9s
bGVyL0dDVXRpbGl0eS5oPgorV1RGX0VYVEVSTl9DX0VORAorCisjZWxzZQorCitXVEZfRVhURVJO
X0NfQkVHSU4KK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgSU9ISURTZXJ2aWNl
Q2xpZW50ICogSU9ISURTZXJ2aWNlQ2xpZW50UmVmOworQ2xhc3MgQ29udHJvbGxlckNsYXNzRm9y
U2VydmljZShJT0hJRFNlcnZpY2VDbGllbnRSZWYpOworV1RGX0VYVEVSTl9DX0VORAorCisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAj
ZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRM
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyU29mdExpbmsuaAppbmRleCAxMDE4M2JmYzE3NS4uMTM5ZTJiOTM1MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0
TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJTb2Z0TGluay5oCkBAIC0zNiw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFdlYkNvcmUsIEdDQ29udHJvbGxlcikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJ
TF9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25u
ZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
X0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nv
bm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKKyNpZiBQTEFURk9STShNQUMpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJv
bGxlckNsYXNzRm9yU2VydmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2Vydmlj
ZSksIChzZXJ2aWNlKSkKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCmluZGV4IGMxMDcwYzQx
OTZiLi4xNzY2MmEzOWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQpAQCAtMzYs
NCArMzYsOCBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTChXZWJDb3JlLCBH
YW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5l
Y3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29u
bmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIAorI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9s
bGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNl
KSwgKHNlcnZpY2UpKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmgKaW5kZXggYTI1MjM0ZmI4NzUuLjE2NDFmNDA1MmYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC0xMjEsNiAr
MTIxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRv
dWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVz
OyB9CiAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSElE
Il9zOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0RWxlbWVudHMoKTsKICAgICB2b2lkIGlu
aXRFbGVtZW50c0Zyb21BcnJheShDRkFycmF5UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJi
NTRlZTU2MWIuLmZiNDQzOGFlMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2
b2lkIHZhbHVlc0NoYW5nZWQoSU9ISURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVD
b250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcmtEZXZpY2VzID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRl
cigpOwogCkBAIC03MSwxMCArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9y
bUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwg
c3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJ
T0hJRERldmljZVJlZj4gbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJl
dGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFs
R2FtZXBhZHNDb25uZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRy
b2xsZXJGcmFtZXdvcmtEZXZpY2VzIHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdh
bWVwYWRzQ29ubmVjdGVkVGltZXI7CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5tbQpzaW1pbGFyaXR5IGluZGV4IDc3JQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCnJl
bmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIubW0KaW5kZXggMGI2MzIyNWMwN2MuLjQxMjg0OWQ5MzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5tbQpAQCAtMzEsMTIgKzMxLDE1IEBACiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgorI2lt
cG9ydCA8cGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCisjaW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2
YWwgeyA1MDBfbXMgfTsKLXN0YXRpYyBjb25zdCBTZWNvbmRzIGlucHV0Tm90aWZpY2F0aW9uRGVs
YXkgeyA1MF9tcyB9Oworc3RhdGljIGNvbnN0IFNlY29uZHMgaGlkSW5wdXROb3RpZmljYXRpb25E
ZWxheSB7IDUwX21zIH07CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZXZp
Y2VNYXRjaGluZ0RpY3Rpb25hcnkodWludDMyX3QgdXNhZ2VQYWdlLCB1aW50MzJfdCB1c2FnZSkK
IHsKQEAgLTE3Niw4ICsxNzksNTggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIGNs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIoKTsKIH0KIAorc3RhdGljIGJvb2wgZ2FtZUNvbnRyb2xs
ZXJGcmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKK3sK
KyAgICBpZiAoIWlzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBkZXZpY2VTZXJ2aWNlID0gSU9ISUREZXZpY2VHZXRT
ZXJ2aWNlKGRldmljZSk7CisgICAgaWYgKCFkZXZpY2VTZXJ2aWNlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUgc2VydmljZSBkaXJlY3RseSBiYWNraW5nIHRoaXMg
ZGV2aWNlCisgICAgdWludDY0X3QgcmVnaXN0cnlJRDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5
R2V0UmVnaXN0cnlFbnRyeUlEKGRldmljZVNlcnZpY2UsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NV
Q0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGll
bnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOworICAg
IElPSElERXZlbnRTeXN0ZW1DbGllbnRTZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQo
KSwgbnVsbHB0cik7CisgICAgYXV0byBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50
U3lzdGVtQ2xpZW50Q29weVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50Lmdl
dCgpLCByZWdpc3RyeUlEKSk7CisgICAgaWYgKHNlcnZpY2VDbGllbnQpIHsKKyAgICAgICAgaWYg
KENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0cyBn
cmFuZGNoaWxkIHNlcnZpY2UKKyAgICBpb19yZWdpc3RyeV9lbnRyeV90IGNoaWxkOworICAgIGlm
IChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5KGRldmljZVNlcnZpY2UsIGtJT1NlcnZpY2VQ
bGFuZSwgJmNoaWxkKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3Ry
eUVudHJ5R2V0Q2hpbGRFbnRyeShjaGlsZCwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtF
Uk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVu
dHJ5SUQoY2hpbGQsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1D
bGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJl
Z2lzdHJ5SUQpKTsKKyAgICBpZiAoIXNlcnZpY2VDbGllbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQu
Z2V0KCkpOworfQorCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISURE
ZXZpY2VSZWYgZGV2aWNlKQogeworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1l
d29ya0RldmljZXMgJiYgZ2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNl
KGRldmljZSkpIHsKKyAgICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFtZXdv
cmsgd2lsbCBoYW5kbGUgYXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVyIGln
bm9yaW5nIGl0IiwgZGV2aWNlKTsKKyAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1l
cGFkcy5hZGQoZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVCgh
bV9nYW1lcGFkTWFwLmdldChkZXZpY2UpKTsKIAogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBh
ZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CkBAIC0yMDEsMTYgKzI1NCwyOCBA
QCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogICAgICAgICAgICAgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsKICAgICB9CiAKKyAgICBhdXRvIGV2ZW50VmlzaWJpbGl0eSA9IG1faW5pdGlh
bEdhbWVwYWRzQ29ubmVjdGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZl
bnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6Tm87CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCi0gICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdLCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNH
YW1lcGFkc1Zpc2libGU6OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vKTsKKyAg
ICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3Rvcltp
bmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7CisKKyAgICAvLyBJZiB3ZSBhcmUgd29ya2luZyB0b2dl
dGhlciB3aXRoIHRoZSBHYW1lQ29udHJvbGxlciBwcm92aWRlciwgbGV0IGl0IGtub3cKKyAgICAv
LyB0aGF0IGdhbWVwYWRzIHNob3VsZCBub3cgYmUgdmlzaWJsZS4KKyAgICBpZiAobV9pZ25vcmVz
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzICYmIGV2ZW50VmlzaWJpbGl0eSA9PSBFdmVu
dE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOwog
fQogCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJl
ZiBkZXZpY2UpCiB7Ci0gICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNl
ICVwIHJlbW92ZWQiLCBkZXZpY2UpOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+
IHJlbW92ZWRHYW1lcGFkID0gcmVtb3ZlR2FtZXBhZEZvckRldmljZShkZXZpY2UpOwotICAgIEFT
U0VSVChyZW1vdmVkR2FtZXBhZCk7CisKKyAgICBpZiAoIXJlbW92ZWRHYW1lcGFkKSB7CisgICAg
ICAgIGF1dG8gdGFrZW4gPSBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVwYWRzLnRha2UoZGV2
aWNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4pOworICAgICAgICBMT0co
R2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBpbmZvcm1lZCBvZiByZW1vdmFsIG9mIGRldmlj
ZSAlcCwgd2hpY2ggaXMgbWFuYWdlZCBieSBHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsuIElnbm9y
aW5nLiIsIGRldmljZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coR2FtZXBh
ZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7CiAKICAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0Zm9y
bUdhbWVwYWREaXNjb25uZWN0ZWQoKnJlbW92ZWRHYW1lcGFkKTsKQEAgLTIzMiw3ICsyOTcsNyBA
QCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6dmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmIHZh
bHVlKQogICAgIC8vIFRoaXMgaXNBY3RpdmUgY2hlY2sgaXMgbmVjZXNzYXJ5IGFzIHdlIHdhbnQg
dG8gZGVsYXkgaW5wdXQgbm90aWZpY2F0aW9ucyBmcm9tIHRoZSB0aW1lIG9mIHRoZSBmaXJzdCBp
bnB1dCwKICAgICAvLyBhbmQgbm90IHB1c2ggdGhlIG5vdGlmaWNhdGlvbiBvdXQgb24gZXZlcnkg
c3Vic2VxdWVudCBpbnB1dC4KICAgICBpZiAoIW1faW5wdXROb3RpZmljYXRpb25UaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXIuc3RhcnRPbmVTaG90KGlu
cHV0Tm90aWZpY2F0aW9uRGVsYXkpOworICAgICAgICBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXIu
c3RhcnRPbmVTaG90KGhpZElucHV0Tm90aWZpY2F0aW9uRGVsYXkpOwogfQogCiB2b2lkIEhJREdh
bWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCkKQEAgLTI0OSw3ICsz
MTQsOCBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZp
cmVkKCkKIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBISURHYW1lcGFkUHJvdmlkZXI6OnJl
bW92ZUdhbWVwYWRGb3JEZXZpY2UoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPiByZXN1bHQgPSBtX2dhbWVwYWRNYXAudGFrZShkZXZpY2Up
OwotICAgIEFTU0VSVChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGF1dG8gaSA9IG1fZ2FtZXBhZFZlY3Rvci5maW5kKHJlc3VsdC5nZXQo
KSk7CiAgICAgaWYgKGkgIT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWI4MTJhYjA3NWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92
aWRlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJHYW1lcGFkUHJv
dmlkZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTXVsdGlHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgR2FtZXBhZFByb3Zp
ZGVyLCBwdWJsaWMgR2FtZXBhZFByb3ZpZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5NdWx0aUdhbWVwYWRQcm92aWRlcigpID0gZGVmYXVsdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBNdWx0aUdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICAvLyBHYW1l
cGFkUHJvdmlkZXIKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92
aWRlckNsaWVudCYpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1l
cGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1l
cGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7
IH0KKyAgICBib29sIGlzTW9ja0dhbWVwYWRQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICAvLyBHYW1lcGFkUHJvdmlkZXJDbGllbnQKKyAgICB2b2lkIHBsYXRmb3JtR2Ft
ZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmLCBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxl
KSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdh
bWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZl
bnRNYWtlc0dhbWVwYWRzVmlzaWJsZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpc3BhdGNoUGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpOworCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKwor
ICAgIGJvb2wgbV9zaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlIHsgZmFsc2UgfTsKKyAgICBzaXpl
X3QgbV9pbml0aWFsR2FtZXBhZHNDb3VudCB7IDAgfTsKKyAgICBWZWN0b3I8UGxhdGZvcm1HYW1l
cGFkKj4gbV9nYW1lcGFkVmVjdG9yOworCisgICAgLy8gV2UgY3JlYXRlIG91ciBvd24gR2FtZXBh
ZCB0eXBlIC0gdG8gd3JhcCBib3RoIEhJRCBhbmQgR2FtZUNvbnRyb2xlciBnYW1lcGFkcyAtCisg
ICAgLy8gYmVjYXVzZSBNdWx0aUdhbWVwYWRQcm92aWRlciBuZWVkcyB0byBtYW5hZ2UgdGhlIGlu
ZGV4ZXMgb2YgaXRzIG93biBnYW1lcGFkcworICAgIC8vIG5vIG1hdHRlciB3aGF0IHRoZSBISUQg
b3IgR2FtZUNvbnRyb2xsZXIgaW5kZXggaXMuCisgICAgY2xhc3MgUGxhdGZvcm1HYW1lcGFkV3Jh
cHBlciA6IHB1YmxpYyBQbGF0Zm9ybUdhbWVwYWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGxh
dGZvcm1HYW1lcGFkV3JhcHBlcih1bnNpZ25lZCBpbmRleCwgUGxhdGZvcm1HYW1lcGFkKiB3cmFw
cGVkKQorICAgICAgICAgICAgOiBQbGF0Zm9ybUdhbWVwYWQoaW5kZXgpCisgICAgICAgICAgICAs
IG1fcGxhdGZvcm1HYW1lcGFkKHdyYXBwZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faWQg
PSB3cmFwcGVkLT5pZCgpOworICAgICAgICAgICAgbV9tYXBwaW5nID0gd3JhcHBlZC0+bWFwcGlu
ZygpOworICAgICAgICAgICAgbV9jb25uZWN0VGltZSA9IHdyYXBwZWQtPmNvbm5lY3RUaW1lKCk7
CisgICAgICAgIH0KKworICAgICAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUdhbWVwYWQtPmxhc3RVcGRhdGVUaW1lKCk7IH0K
KyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+YXhpc1ZhbHVlcygpOyB9CisgICAgICAgIGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiBidXR0b25WYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bs
YXRmb3JtR2FtZXBhZC0+YnV0dG9uVmFsdWVzKCk7IH0KKworICAgICAgICBjb25zdCBjaGFyKiBz
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+c291cmNlKCk7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFBsYXRmb3JtR2FtZXBhZCogbV9wbGF0Zm9ybUdh
bWVwYWQ7CisgICAgfTsKKworICAgIEhhc2hNYXA8UGxhdGZvcm1HYW1lcGFkKiwgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+PiBtX2dhbWVwYWRNYXA7CisgICAgYm9vbCBt
X2hpZEltcG9ydENvbXBsZXRlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92
aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBh
ZFByb3ZpZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMGUy
MWIxNWY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11bHRpR2FtZXBhZFByb3ZpZGVy
LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiSElER2FtZXBhZFByb3Zp
ZGVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUdhbWVwYWQuaCIK
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBzaXplX3QgbnVtYmVyT2ZHYW1lcGFkUHJvdmlkZXJzID0gMjsKKworTXVsdGlHYW1l
cGFkUHJvdmlkZXImIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxNdWx0aUdhbWVwYWRQcm92aWRlcj4gc2hhcmVkUHJvdmlkZXI7
CisgICAgcmV0dXJuIHNoYXJlZFByb3ZpZGVyOworfQorCit2b2lkIE11bHRpR2FtZXBhZFByb3Zp
ZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBib29sIG1vbml0b3JPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5pc0VtcHR5
KCk7CisKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9j
bGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KCkuaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCk7CisgICAgR2FtZUNvbnRy
b2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnByZXdhcm1HYW1lQ29udHJvbGxlckRl
dmljZXNJZk5lY2Vzc2FyeSgpOworCisgICAgaWYgKG1vbml0b3JPdGhlclByb3ZpZGVycykgewor
ICAgICAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dh
bWVwYWRzKCp0aGlzKTsKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Zv
aWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFBy
b3ZpZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygm
Y2xpZW50KSk7CisKKyAgICBib29sIHNob3VsZFN0b3BNb25pdG9yaW5nT3RoZXJQcm92aWRlcnMg
PSBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7CisKKyAg
ICBpZiAoc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycykgeworICAgICAgICBISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMp
OworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rv
cE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgfQorfQorCit1bnNpZ25lZCBNdWx0aUdh
bWVwYWRQcm92aWRlcjo6aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCit7CisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IG1fZ2FtZXBhZFZlY3Rvci5zaXpl
KCkgJiYgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSkKKyAgICAgICAgKytpbmRleDsKKworICAgIEFT
U0VSVChpbmRleCA8PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKTsKKworICAgIGlmIChpbmRleCA9
PSBtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpKQorICAgICAgICBtX2dhbWVwYWRWZWN0b3IucmVzaXpl
KGluZGV4ICsgMSk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVw
YWQsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgZXZlbnRWaXNpYmlsaXR5KQoreworICAgIGF1
dG8gaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7CisKKyAgICBMT0coR2Ft
ZXBhZCwgIk11bHRpR2FtZXBhZFByb3ZpZGVyIGFkZGluZyBuZXcgcGxhdGZvcm0gZ2FtZXBhZCB0
byBpbmRleCAlaSBmcm9tIGEgJXMgc291cmNlIiwgaW5kZXgsIGdhbWVwYWQuc291cmNlKCkpOwor
CisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPiBpbmRleCk7CisKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fZ2FtZXBhZE1hcC5zZXQoJmdhbWVwYWQsIFdURjo6bWFrZVVuaXF1ZTxQ
bGF0Zm9ybUdhbWVwYWRXcmFwcGVyPihpbmRleCwgJmdhbWVwYWQpKTsKKyAgICBBU1NFUlQoYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fZ2FtZXBhZFZlY3RvcltpbmRleF0gPSBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVw
YWRWZWN0b3JbaW5kZXhdLCBldmVudFZpc2liaWxpdHkpOworfQorCit2b2lkIE11bHRpR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBn
YW1lcGFkKQoreworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgZGlzY29u
bmVjdGluZyBnYW1lcGFkIGZyb20gYSAlcyBzb3VyY2UiLCBnYW1lcGFkLnNvdXJjZSgpKTsKKwor
ICAgIGF1dG8gZ2FtZXBhZFdyYXBwZXIgPSBtX2dhbWVwYWRNYXAudGFrZSgmZ2FtZXBhZCk7CisK
KyAgICBBU1NFUlQoZ2FtZXBhZFdyYXBwZXIpOworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlci0+
aW5kZXgoKSA8IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworICAgIEFTU0VSVChtX2dhbWVwYWRW
ZWN0b3JbZ2FtZXBhZFdyYXBwZXItPmluZGV4KCldID09IGdhbWVwYWRXcmFwcGVyLmdldCgpKTsK
KworICAgIG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPSBudWxscHRy
OworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKCpnYW1lcGFkV3JhcHBlcik7Cit9CisKK3ZvaWQg
TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoRXZlbnRN
YWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgaWYgKGV2ZW50Vmlz
aWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tYWtlSW52aXNpYmlsZUdhbWVw
YWRzVmlzaWJsZSgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShldmVudFZpc2liaWxpdHkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMzRkYTE2NWJiZi4uYmYwZmE5OWE0MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE11bHRpcGxleCB0aGUgSElEIGFuZCBHYW1lQ29u
dHJvbGxlciBnYW1lcGFkIHByb3ZpZGVycyBvbiBNYWMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MzE5MjUzMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQxMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFk
UHJvdmlkZXIpOgorCiAyMDIwLTA3LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZ2dyZXNzaXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3Jr
IGdhbWVwYWQgcHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXggYWIy
YzdmYjg4ZDMuLjE5NGFhMzU2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBA
IC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Nb2NrR2FtZXBhZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011bHRp
R2FtZXBhZFByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC01Myw3ICs1NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtU2V0RGVmYXVsdEdhbWVwYWRQcm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9sbGVy
RnJhbWV3b3JrKQogICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQotICAg
ICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3Zp
ZGVyKE11bHRpR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403920</attachid>
            <date>2020-07-09 14:31:25 -0700</date>
            <delta_ts>2020-07-09 15:54:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38770</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uOTFlNzA5YjIzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFjIGhhcyBh
bHJlYWR5IHN1cHBvcnRlZCBib3RoIHRoZSBISUQgcHJvdmlkZXIgYW5kIEdhbWVDb250cm9sbGVy
IHByb3ZpZGVyLgorICAgICAgICAKKyAgICAgICAgQnkgYWRkaW5nIGFuIGludGVybWVkaWF0ZSBw
cm92aWRlciB0byBtdWx0aXBsZXggYm90aCBhbmQgdHdlYWtpbmcgYSBmZXcgb3RoZXIgdGhpbmdz
LAorICAgICAgICBpdCBjYW4gc3VwcG9ydCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9y
bUdhbWVwYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0
ZVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OndpbGxIYW5kbGVISUREZXZpY2UpOgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNv
ZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
clNvZnRMaW5rLm1tOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1v
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBh
ZEZvckRldmljZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1l
cGFkV3JhcHBlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlD
b25uZWN0ZWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11bHRpR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToK
KwogMjAyMC0wNy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWdncmVzc2l2ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHBy
b3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDBiNjQxNGQyOTk2Li40NTBlZTBhMzlhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3LDYgKzEyNyw3
IEBACiAJCTQ0NTBGQ0EwMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUUyMUY1
RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggKi87IH07CiAJCTQ0RTFBOEFGMjFG
QTU0RTYwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMUE4QUQyMUZBNTREQTAwQzMwNDhFIC8qIExvb2t1
cFNvZnRMaW5rLmggKi87IH07CiAJCTQ0RTFBOEIwMjFGQTU0RUIwMEMzMDQ4RSAvKiBMb29rdXBT
b2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0RTFBOEFFMjFGQTU0REEwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5tbSAqLzsgfTsKKwkJ
NTE3RTAzRjkyNEI3QzAwNzAwNTQ4OTVBIC8qIElPS2l0U1BJTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGODI0QjdDMDA2MDA1NDg5NUEg
LyogSU9LaXRTUElNYWMuaCAqLzsgfTsKIAkJNTcwQUI4RjEyMEFFMkU4RDAwQjhCRTg3IC8qIFNl
Y0tleVByb3h5U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzBBQjhGMDIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLzsgfTsK
IAkJNTcwQUI4RjkyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwQUI4RjgyMEFGNkUz
RDAwQjhCRTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oICovOyB9OwogCQk1NzJBMTA3ODIyQjQ1
NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcyQTEwNzcyMkI0NTZGNTAwRjQxMEM4IC8qIEF1dGhLaXRTUEku
aCAqLzsgfTsKQEAgLTMxMyw2ICszMTQsNyBAQAogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVpY2tMb29rU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFMUE4
QUQyMUZBNTREQTAwQzMwNDhFIC8qIExvb2t1cFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
b2t1cFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RTFBOEFFMjFG
QTU0REEwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IExvb2t1cFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNG
ODI0QjdDMDA2MDA1NDg5NUEgLyogSU9LaXRTUElNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSU9LaXRTUElNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8qIFNlY0tleVByb3h5U1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlY0tleVByb3h5U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFC
OEY4MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNYUENDb25uZWN0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
MkExMDc3MjJCNDU2RjUwMEY0MTBDOCAvKiBBdXRoS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dGhLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNCw2ICs1MTYsNyBA
QAogCQkJCTBDNzc4NTcxMUY0NTEzMEYwMEY0RUJCNiAvKiBEYXRhRGV0ZWN0b3JzU1BJLmggKi8s
CiAJCQkJQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLywKIAkJ
CQlBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi8sCisJCQkJNTE3
RTAzRjgyNEI3QzAwNjAwNTQ4OTVBIC8qIElPS2l0U1BJTWFjLmggKi8sCiAJCQkJMEM3Nzg1NzIx
RjQ1MTMwRjAwRjRFQkI2IC8qIExvb2t1cFNQSS5oICovLAogCQkJCTBDNzc4NTczMUY0NTEzMEYw
MEY0RUJCNiAvKiBNZWRpYVJlbW90ZVNQSS5oICovLAogCQkJCTFDQ0VFNEY2MjBEODc0M0YwMDQ3
QjA5NyAvKiBOU0FwcGVhcmFuY2VTUEkuaCAqLywKQEAgLTg3Nyw2ICs4ODAsNyBAQAogCQkJCTJF
MTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzVBRjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDMkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTdFMDNGOTI0QjdDMDA3MDA1NDg5NUEgLyogSU9LaXRTUElNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjExREI2MjQzRkE1QkYwMEQ4MDcwNCAvKiBVc2FnZVRy
YWNraW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERC
QzMxNyAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgy
NkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSU9LaXRTUElNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OTE3ZGYwNzNmMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxJT0tpdC9oaWQvSU9ISURFdmVudFN5
c3RlbUNsaWVudC5oPgorCisjZWxzZQorCitXVEZfRVhURVJOX0NfQkVHSU4KK3R5cGVkZWYgc3Ry
dWN0IENGX0JSSURHRURfVFlQRShpZCkgX19JT0hJREV2ZW50U3lzdGVtQ2xpZW50ICogSU9ISURF
dmVudFN5c3RlbUNsaWVudFJlZjsKK0lPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYgSU9ISURFdmVu
dFN5c3RlbUNsaWVudENyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IpOwordm9pZCBJT0hJ
REV2ZW50U3lzdGVtQ2xpZW50U2V0TWF0Y2hpbmcoSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiBj
bGllbnQsIENGRGljdGlvbmFyeVJlZiBtYXRjaGluZyk7CitJT0hJRFNlcnZpY2VDbGllbnRSZWYg
SU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChJT0hJREV2ZW50
U3lzdGVtQ2xpZW50UmVmIGNsaWVudCwgdWludDY0X3QgcmVnaXN0cnlJRCk7CisKK1dURl9FWFRF
Uk5fQ19FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlkYmIuLjQ0
ZWEwOGY2NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Nyw3ICsyNTcsOCBAQCBw
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0KIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuY3BwCi1wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCitw
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0KK3BsYXRmb3JtL2dhbWVw
YWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gQG5vLXVuaWZ5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YWQwMTZlNzQ3OGYuLmFjNjcxYjI3OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsNyBAQAogCQk1MTdB
NjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAv
KiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0Iy
NUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdERUVFODFERTk0QjA4MDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVBIC8q
IE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJv
dmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFGMzE0MjUwMDA1
OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYzMTQzQ0QwMDU5
QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAvKiBKU1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAwNTlCQTdD
IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAgLTgyODEsNyArODI4Miw3IEBACiAJCTUx
NUJFMThFMUQ1NEY1RjYwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1HYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNUJFMTk3MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhJREdhbWVwYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjggLyogSElE
R2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISURHYW1lcGFkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAv
KiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSElER2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE1QkUxOTkxRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhJREdhbWVwYWRQcm92aWRlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxOUExRDU0RjZCRDAwREQ3QzY4
IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBISURHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1
RTM3RjQxRkFBOTM4ODAwRDdGMjJBIC8qIFNlcnZpY2VXb3JrZXJUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9z
c1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtODM3MCw2ICs4MzcxLDggQEAKIAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTdERUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdFMDNG
NDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjUyNEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBh
ZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTXVs
dGlHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZC
QTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdp
bmRvd0V4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5k
b3dFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyNEIxRjMx
M0FFMDAwNTlCQTdDIC8qIE5hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRv
clNlcnZpY2VXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1Nzcs
OCArMTk1ODAsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxNUJFMTk3MUQ1NEY2QkQwMERE
N0M2OCAvKiBISURHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjgg
LyogSElER2FtZXBhZC5oICovLAotCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBISURH
YW1lcGFkUHJvdmlkZXIuY3BwICovLAorCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAvKiBI
SURHYW1lcGFkUHJvdmlkZXIubW0gKi8sCiAJCQkJNTE1QkUxOUExRDU0RjZCRDAwREQ3QzY4IC8q
IEhJREdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAv
KiBNdWx0aUdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0ODk1
QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMjY5LDYgKzMzMjc0LDcgQEAKIAkJCQlF
Q0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0
eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4OTVB
IC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRCODIwNTFE
NkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9QbGF0Zm9ybUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxh
dGZvcm1HYW1lcGFkLmgKaW5kZXggNzVjYzllZmVmOWQuLjkyMThlYzgyMmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKQEAgLTQx
LDExICs0MSwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcHBpbmcoKSBjb25zdCB7IHJldHVybiBt
X21hcHBpbmc7IH0KICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7
IH0KLSAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0VXBkYXRlVGltZTsgfQorICAgIHZpcnR1YWwgTW9ub3RvbmljVGltZSBsYXN0VXBkYXRlVGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0KICAgICBNb25vdG9uaWNUaW1l
IGNvbm5lY3RUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0VGltZTsgfQogICAgIHZpcnR1
YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgPSAwOwogCisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiAiVW5rbm93biJf
czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1HYW1lcGFkKHVuc2lnbmVk
IGluZGV4KQogICAgICAgICA6IG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQu
aAppbmRleCA3MmU1M2JhMTA2Ni4uNjFjYTBkNDQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWQuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4m
IGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBj
b25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJHYW1lQ29udHJvbGxlciJfczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc2V0
dXBBc0V4dGVuZGVkR2FtZXBhZCgpOwogICAgIHZvaWQgc2V0dXBBc0dhbWVwYWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBiZGRlZDE3NzBmMS4uNTc2
MjEzZjQyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgKQEAg
LTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdhbWVDb250
cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBwcmV3YXJt
R2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFrZUludmlz
aWJpbGVHYW1lcGFkc1Zpc2libGUoKTsKKwogcHJpdmF0ZToKICAgICBHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlcigpOwogCkBAIC03MSw4ICs3Myw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGlucHV0Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBtYWtlSW52aXNpYmls
ZUdhbWVwYWRzVmlzaWJsZSgpOwotCiAgICAgSGFzaE1hcDxDRlR5cGVSZWYsIHN0ZDo6dW5pcXVl
X3B0cjxHYW1lQ29udHJvbGxlckdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CiAgICAgVmVjdG9yPFBs
YXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoU2V0PFBsYXRmb3JtR2Ft
ZXBhZCo+IG1faW52aXNpYmxlR2FtZXBhZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQppbmRleCBiYjQxMmY5MTg5NS4uZGQ2MzU3NDZmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtMjksMTIgKzI5LDEzIEBACiAj
aWYgRU5BQkxFKEdBTUVQQUQpCiAKICNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZC5oIgot
I2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgogI2ltcG9ydCAiR2FtZXBhZFByb3Zp
ZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxHYW1lQ29udHJvbGxl
ci9HYW1lQ29udHJvbGxlci5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNp
bXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBpbnB1dE5vdGlmaWNhdGlvbkRlbGF5IHsgMTZfbXMgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJTUEkuaAppbmRleCAxOGY4ZTc1YjdiNS4uYTY4ZjA2MzllNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJT
UEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyU1BJLmgKQEAgLTMxLDQgKzMxLDIwIEBACiArICh2b2lkKV9fb3BlblhQQ19hbmRfQ0JB
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZV9fOwogQGVuZAogCisjaWYgUExBVEZPUk0oTUFDKQor
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKK1dURl9FWFRFUk5fQ19CRUdJTgorI2ltcG9y
dCA8R2FtZUNvbnRyb2xsZXIvR0NVdGlsaXR5Lmg+CitXVEZfRVhURVJOX0NfRU5ECisKKyNlbHNl
CisKK1dURl9FWFRFUk5fQ19CRUdJTgordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlk
KSBJT0hJRFNlcnZpY2VDbGllbnQgKiBJT0hJRFNlcnZpY2VDbGllbnRSZWY7CitDbGFzcyBDb250
cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKElPSElEU2VydmljZUNsaWVudFJlZik7CitXVEZfRVhURVJO
X0NfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCmluZGV4IDEwMTgzYmZjMTc1Li4xMzllMmI5MzUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlclNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmgKQEAgLTM2LDQgKzM2LDggQEAgU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViQ29yZSwgR0NDb250cm9sbGVyKQogU09GVF9MSU5LX0NP
TlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29u
dHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250
cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIAorI2lmIFBMQVRG
T1JNKE1BQykKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEdhbWVDb250
cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNs
aWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2UpKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0K
aW5kZXggYzEwNzBjNDE5NmIuLjE3NjYyYTM5YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRM
aW5rLm1tCkBAIC0zNiw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElP
TkFMKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250
cm9sbGVyRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRy
b2xsZXJEaWREaXNjb25uZWN0Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCisjaWYgUExBVEZP
Uk0oTUFDKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgR2FtZUNvbnRy
b2xsZXIsIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2UsIENsYXNzLCAoSU9ISURTZXJ2aWNlQ2xp
ZW50UmVmIHNlcnZpY2UpLCAoc2VydmljZSkpCisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShH
QU1FUEFEKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCBhMjUyMzRmYjg3NS4uMTY0MWY0MDUyZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmgKQEAgLTEyMSw2ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4m
IGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0KICAgICBj
b25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJISUQiX3M7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRFbGVtZW50cygp
OwogICAgIHZvaWQgaW5pdEVsZW1lbnRzRnJvbUFycmF5KENGQXJyYXlSZWYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlk
ZXIuaAppbmRleCAxYmI1NGVlNTYxYi4uZmI0NDM4YWUyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oCkBA
IC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldmljZVJlbW92ZWQoSU9ISUREZXZp
Y2VSZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKIAorICAgIHZv
aWQgaWdub3JlR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzKCkgeyBtX2lnbm9yZXNHYW1l
Q29udHJvbGxlckZyYW1ld29ya0RldmljZXMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSElE
R2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDEwICs3MywxMiBAQCBwcml2YXRlOgogCiAgICAg
VmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+IG1fZ2FtZXBhZFZlY3RvcjsKICAgICBIYXNoTWFwPElP
SElERGV2aWNlUmVmLCBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsK
KyAgICBIYXNoU2V0PElPSElERGV2aWNlUmVmPiBtX2dhbWVDb250cm9sbGVyTWFuYWdlZEdhbWVw
YWRzOwogCiAgICAgUmV0YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9tYW5hZ2VyOwogCiAgICAg
Ym9vbCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ln
bm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgeyBmYWxzZSB9OwogCiAgICAgVGlt
ZXIgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcjsKICAgICBUaW1lciBtX2lucHV0Tm90
aWZpY2F0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tCnNpbWlsYXJpdHkgaW5kZXggNzclCnJl
bmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQ
cm92aWRlci5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5tbQppbmRleCAwYjYzMjI1YzA3Yy4uNDEyODQ5ZDkzMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZFByb3ZpZGVyLm1tCkBAIC0zMSwxMiArMzEsMTUgQEAKICNpbXBvcnQgIkdhbWVwYWRQ
cm92aWRlckNsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1H
YW1lcGFkLmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyU29mdExpbmsu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBjb25uZWN0
aW9uRGVsYXlJbnRlcnZhbCB7IDUwMF9tcyB9Owotc3RhdGljIGNvbnN0IFNlY29uZHMgaW5wdXRO
b3RpZmljYXRpb25EZWxheSB7IDUwX21zIH07CitzdGF0aWMgY29uc3QgU2Vjb25kcyBoaWRJbnB1
dE5vdGlmaWNhdGlvbkRlbGF5IHsgNTBfbXMgfTsKIAogc3RhdGljIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGRldmljZU1hdGNoaW5nRGljdGlvbmFyeSh1aW50MzJfdCB1c2FnZVBhZ2UsIHVp
bnQzMl90IHVzYWdlKQogewpAQCAtMTc2LDggKzE3OSw1OCBAQCB2b2lkIEhJREdhbWVwYWRQcm92
aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVu
dCkKICAgICAgICAgY2xvc2VBbmRVbnNjaGVkdWxlTWFuYWdlcigpOwogfQogCitzdGF0aWMgYm9v
bCBnYW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxIYW5kbGVISUREZXZpY2UoSU9ISUREZXZpY2VS
ZWYgZGV2aWNlKQoreworICAgIGlmICghaXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0F2YWlsYWJs
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRldmljZVNlcnZpY2UgPSBJ
T0hJRERldmljZUdldFNlcnZpY2UoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZVNlcnZpY2UpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzZXJ2aWNlIGRpcmVjdGx5
IGJhY2tpbmcgdGhpcyBkZXZpY2UKKyAgICB1aW50NjRfdCByZWdpc3RyeUlEOworICAgIGlmIChJ
T1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQoZGV2aWNlU2VydmljZSwgJnJlZ2lzdHJ5
SUQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBl
dmVudFN5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShu
dWxscHRyKSk7CisgICAgSU9ISURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNoaW5nKGV2ZW50U3lz
dGVtQ2xpZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBhdXRvIHNlcnZpY2VDbGllbnQgPSBhZG9w
dENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2VydmljZUZvclJlZ2lzdHJ5SUQoZXZlbnRT
eXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsKKyAgICBpZiAoc2VydmljZUNsaWVudCkg
eworICAgICAgICBpZiAoQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShzZXJ2aWNlQ2xpZW50Lmdl
dCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIE90aGVyd2lz
ZSwgY2hlY2sgaXRzIGdyYW5kY2hpbGQgc2VydmljZQorICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3Qg
Y2hpbGQ7CisgICAgaWYgKElPUmVnaXN0cnlFbnRyeUdldENoaWxkRW50cnkoZGV2aWNlU2Vydmlj
ZSwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRDaGlsZEVudHJ5KGNoaWxkLCBrSU9TZXJ2aWNlUGxhbmUs
ICZjaGlsZCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFjaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKElPUmVnaXN0cnlFbnRy
eUdldFJlZ2lzdHJ5RW50cnlJRChjaGlsZCwgJnJlZ2lzdHJ5SUQpICE9IEtFUk5fU1VDQ0VTUykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2VydmljZUNsaWVudCA9IGFkb3B0Q0YoSU9I
SURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0cnlJRChldmVudFN5c3RlbUNs
aWVudC5nZXQoKSwgcmVnaXN0cnlJRCkpOworICAgIGlmICghc2VydmljZUNsaWVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENvbnRyb2xsZXJDbGFzc0ZvclNlcnZpY2Uo
c2VydmljZUNsaWVudC5nZXQoKSk7Cit9CisKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZp
Y2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CisgICAgaWYgKG1faWdub3Jlc0dhbWVD
b250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyAmJiBnYW1lQ29udHJvbGxlckZyYW1ld29ya1dpbGxI
YW5kbGVISUREZXZpY2UoZGV2aWNlKSkgeworICAgICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250
cm9sbGVyIGZyYW1ld29yayB3aWxsIGhhbmRsZSBhdHRhY2hlZCBkZXZpY2UgJXAgLSBISURHYW1l
cGFkUHJvdmlkZXIgaWdub3JpbmcgaXQiLCBkZXZpY2UpOworICAgICAgICBtX2dhbWVDb250cm9s
bGVyTWFuYWdlZEdhbWVwYWRzLmFkZChkZXZpY2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgQVNTRVJUKCFtX2dhbWVwYWRNYXAuZ2V0KGRldmljZSkpOwogCiAgICAgTE9HKEdhbWVw
YWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKQEAgLTIw
MSwxNiArMjU0LDI4IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiAgICAgICAgICAgICBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3Rl
ZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0KIAorICAgIGF1dG8gZXZlbnRWaXNpYmls
aXR5ID0gbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWQgPyBFdmVudE1ha2VzR2FtZXBhZHNWaXNp
YmxlOjpZZXMgOiBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlOjpObzsKICAgICBmb3IgKGF1dG8m
IGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25u
ZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVk
ID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRzVmlz
aWJsZTo6Tm8pOworICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCgqbV9n
YW1lcGFkVmVjdG9yW2luZGV4XSwgZXZlbnRWaXNpYmlsaXR5KTsKKworICAgIC8vIElmIHdlIGFy
ZSB3b3JraW5nIHRvZ2V0aGVyIHdpdGggdGhlIEdhbWVDb250cm9sbGVyIHByb3ZpZGVyLCBsZXQg
aXQga25vdworICAgIC8vIHRoYXQgZ2FtZXBhZHMgc2hvdWxkIG5vdyBiZSB2aXNpYmxlLgorICAg
IGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYgZXZlbnRWaXNp
YmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJbnZpc2liaWxlR2FtZXBh
ZHNWaXNpYmxlKCk7CiB9CiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVk
KElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQ
cm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRldmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SElER2FtZXBhZD4gcmVtb3ZlZEdhbWVwYWQgPSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRl
dmljZSk7Ci0gICAgQVNTRVJUKHJlbW92ZWRHYW1lcGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdh
bWVwYWQpIHsKKyAgICAgICAgYXV0byB0YWtlbiA9IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2Ft
ZXBhZHMudGFrZShkZXZpY2UpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7
CisgICAgICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJl
bW92YWwgb2YgZGV2aWNlICVwLCB3aGljaCBpcyBtYW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZy
YW1ld29yay4gSWdub3JpbmcuIiwgZGV2aWNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwg
ZGV2aWNlKTsKIAogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBj
bGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAt
MjMyLDcgKzI5Nyw3IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjp2YWx1ZXNDaGFuZ2VkKElP
SElEVmFsdWVSZWYgdmFsdWUpCiAgICAgLy8gVGhpcyBpc0FjdGl2ZSBjaGVjayBpcyBuZWNlc3Nh
cnkgYXMgd2Ugd2FudCB0byBkZWxheSBpbnB1dCBub3RpZmljYXRpb25zIGZyb20gdGhlIHRpbWUg
b2YgdGhlIGZpcnN0IGlucHV0LAogICAgIC8vIGFuZCBub3QgcHVzaCB0aGUgbm90aWZpY2F0aW9u
IG91dCBvbiBldmVyeSBzdWJzZXF1ZW50IGlucHV0LgogICAgIGlmICghbV9pbnB1dE5vdGlmaWNh
dGlvblRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1faW5wdXROb3RpZmljYXRpb25UaW1lci5z
dGFydE9uZVNob3QoaW5wdXROb3RpZmljYXRpb25EZWxheSk7CisgICAgICAgIG1faW5wdXROb3Rp
ZmljYXRpb25UaW1lci5zdGFydE9uZVNob3QoaGlkSW5wdXROb3RpZmljYXRpb25EZWxheSk7CiB9
CiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQo
KQpAQCAtMjQ5LDcgKzMxNCw4IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlm
aWNhdGlvblRpbWVyRmlyZWQoKQogc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVw
YWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRldmljZShJT0hJRERldmljZVJlZiBkZXZpY2Up
CiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1h
cC50YWtlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpID0gbV9nYW1lcGFkVmVjdG9yLmZp
bmQocmVzdWx0LmdldCgpKTsKICAgICBpZiAoaSAhPSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjgxMmFiMDc1Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011
bHRpR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1
ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdWx0aUdhbWVwYWRQcm92aWRlciA6IHB1Ymxp
YyBHYW1lcGFkUHJvdmlkZXIsIHB1YmxpYyBHYW1lcGFkUHJvdmlkZXJDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfk11bHRpR2FtZXBhZFByb3ZpZGVyKCkgPSBkZWZhdWx0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE11bHRpR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
KworICAgIC8vIEdhbWVwYWRQcm92aWRlcgorICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBh
ZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmlu
Z0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOworICAgIGNvbnN0IFZlY3Rv
cjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFsIHsgcmV0dXJuIG1f
Z2FtZXBhZFZlY3RvcjsgfQorICAgIGJvb2wgaXNNb2NrR2FtZXBhZFByb3ZpZGVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEdhbWVwYWRQcm92aWRlckNsaWVudAorICAgIHZv
aWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYsIEV2ZW50TWFrZXNH
YW1lcGFkc1Zpc2libGUpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVj
dGVkKFBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5w
dXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlKSBmaW5hbDsKKworcHJvdGVjdGVk
OgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1dEFj
dGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOworCisgICAgYm9vbCBtX3Nob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUgeyBmYWxz
ZSB9OworICAgIHNpemVfdCBtX2luaXRpYWxHYW1lcGFkc0NvdW50IHsgMCB9OworICAgIFZlY3Rv
cjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRWZWN0b3I7CisKKyAgICAvLyBXZSBjcmVhdGUg
b3VyIG93biBHYW1lcGFkIHR5cGUgLSB0byB3cmFwIGJvdGggSElEIGFuZCBHYW1lQ29udHJvbGVy
IGdhbWVwYWRzIC0KKyAgICAvLyBiZWNhdXNlIE11bHRpR2FtZXBhZFByb3ZpZGVyIG5lZWRzIHRv
IG1hbmFnZSB0aGUgaW5kZXhlcyBvZiBpdHMgb3duIGdhbWVwYWRzCisgICAgLy8gbm8gbWF0dGVy
IHdoYXQgdGhlIEhJRCBvciBHYW1lQ29udHJvbGxlciBpbmRleCBpcy4KKyAgICBjbGFzcyBQbGF0
Zm9ybUdhbWVwYWRXcmFwcGVyIDogcHVibGljIFBsYXRmb3JtR2FtZXBhZCB7CisgICAgcHVibGlj
OgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyKHVuc2lnbmVkIGluZGV4LCBQbGF0Zm9y
bUdhbWVwYWQqIHdyYXBwZWQpCisgICAgICAgICAgICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkK
KyAgICAgICAgICAgICwgbV9wbGF0Zm9ybUdhbWVwYWQod3JhcHBlZCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9pZCA9IHdyYXBwZWQtPmlkKCk7CisgICAgICAgICAgICBtX21hcHBpbmcgPSB3
cmFwcGVkLT5tYXBwaW5nKCk7CisgICAgICAgICAgICBtX2Nvbm5lY3RUaW1lID0gd3JhcHBlZC0+
Y29ubmVjdFRpbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIE1vbm90b25pY1RpbWUgbGFzdFVw
ZGF0ZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtR2FtZXBhZC0+bGFzdFVw
ZGF0ZVRpbWUoKTsgfQorICAgICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5heGlzVmFsdWVzKCk7IH0K
KyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5idXR0b25WYWx1ZXMoKTsgfQorCisgICAgICAg
IGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1l
cGFkLT5zb3VyY2UoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFk
KiBtX3BsYXRmb3JtR2FtZXBhZDsKKyAgICB9OworCisgICAgSGFzaE1hcDxQbGF0Zm9ybUdhbWVw
YWQqLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1HYW1lcGFkV3JhcHBlcj4+IG1fZ2FtZXBhZE1h
cDsKKyAgICBib29sIG1faGlkSW1wb3J0Q29tcGxldGUgeyBmYWxzZSB9OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011
bHRpR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjMwZTIxYjE1ZjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTAsMCArMSwx
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJI
SURHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBsYXRm
b3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIHNpemVfdCBudW1iZXJPZkdhbWVwYWRQcm92aWRlcnMgPSAy
OworCitNdWx0aUdhbWVwYWRQcm92aWRlciYgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRv
bigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE11bHRpR2FtZXBhZFByb3ZpZGVyPiBz
aGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hhcmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgTXVs
dGlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRl
ckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wgbW9uaXRvck90aGVyUHJvdmlkZXJzID0gbV9j
bGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGll
bnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworCisgICAgSElER2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5pZ25vcmVHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMoKTsK
KyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkucHJld2FybUdh
bWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAobW9uaXRvck90aGVy
UHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3Rh
cnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOwor
ICAgIH0KK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1l
cGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGll
bnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKworICAgIGJvb2wgc2hvdWxkU3RvcE1vbml0b3JpbmdP
dGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCkgJiYgbV9jbGllbnRzLmlz
RW1wdHkoKTsKKworICAgIGlmIChzaG91bGRTdG9wTW9uaXRvcmluZ090aGVyUHJvdmlkZXJzKSB7
CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdH
YW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Vu
c2lnbmVkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgbV9nYW1l
cGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVwYWRWZWN0b3JbaW5kZXhdKQorICAgICAgICArK2lu
ZGV4OworCisgICAgQVNTRVJUKGluZGV4IDw9IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpOworCisg
ICAgaWYgKGluZGV4ID09IG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkpCisgICAgICAgIG1fZ2FtZXBh
ZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKworICAgIHJldHVybiBpbmRleDsKK30KKwordm9p
ZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3Jt
R2FtZXBhZCYgZ2FtZXBhZCwgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxp
dHkpCit7CisgICAgYXV0byBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsK
KworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1lcGFkUHJvdmlkZXIgYWRkaW5nIG5ldyBwbGF0
Zm9ybSBnYW1lcGFkIHRvIGluZGV4ICVpIGZyb20gYSAlcyBzb3VyY2UiLCBpbmRleCwgZ2FtZXBh
ZC5zb3VyY2UoKSk7CisKKyAgICBBU1NFUlQobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA+IGluZGV4
KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9nYW1lcGFkTWFwLnNldCgmZ2FtZXBhZCwgV1RG
OjptYWtlVW5pcXVlPFBsYXRmb3JtR2FtZXBhZFdyYXBwZXI+KGluZGV4LCAmZ2FtZXBhZCkpOwor
ICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgbV9nYW1lcGFkVmVjdG9yW2lu
ZGV4XSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisKKyAgICBmb3IgKGF1dG8m
IGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25u
ZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK3Zv
aWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0
Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAgTE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQ
cm92aWRlciBkaXNjb25uZWN0aW5nIGdhbWVwYWQgZnJvbSBhICVzIHNvdXJjZSIsIGdhbWVwYWQu
c291cmNlKCkpOworCisgICAgYXV0byBnYW1lcGFkV3JhcHBlciA9IG1fZ2FtZXBhZE1hcC50YWtl
KCZnYW1lcGFkKTsKKworICAgIEFTU0VSVChnYW1lcGFkV3JhcHBlcik7CisgICAgQVNTRVJUKGdh
bWVwYWRXcmFwcGVyLT5pbmRleCgpIDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSk7CisgICAgQVNT
RVJUKG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3JhcHBlci0+aW5kZXgoKV0gPT0gZ2FtZXBhZFdy
YXBwZXIuZ2V0KCkpOworCisgICAgbV9nYW1lcGFkVmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRl
eCgpXSA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoKmdhbWVwYWRXcmFwcGVy
KTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRB
Y3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIGV2ZW50VmlzaWJpbGl0eSkKK3sKKyAg
ICBpZiAoZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykK
KyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJ
bnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KGV2
ZW50VmlzaWJpbGl0eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzNGRhMTY1YmJm
Li5iZjBmYTk5YTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNy0wOCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBI
SUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQgcHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0
RGVmYXVsdEdhbWVwYWRQcm92aWRlcik6CisKIDIwMjAtMDctMDggIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFnZ3Jlc3NpdmVseSBwcmltZSBHYW1lQ29udHJv
bGxlci5mcmFtZXdvcmsgZ2FtZXBhZCBwcm92aWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2Nv
YS5tbQppbmRleCBhYjJjN2ZiODhkMy4uMTk0YWEzNTY1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBhZFByb3Zp
ZGVyQ29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR2FtZUNvbnRy
b2xsZXJHYW1lcGFkUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSElER2FtZXBhZFByb3Zp
ZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vY2tHYW1lcGFkUHJvdmlkZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvTXVsdGlHYW1lcGFkUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDcgKzU0LDcgQEAgdm9pZCBVSUdhbWVwYWRQ
cm92aWRlcjo6cGxhdGZvcm1TZXREZWZhdWx0R2FtZXBhZFByb3ZpZGVyKCkKICAgICBpZiAodXNl
R2FtZUNvbnRyb2xsZXJGcmFtZXdvcmspCiAgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hh
cmVkUHJvdmlkZXIoR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsK
ICAgICBlbHNlCi0gICAgICAgIEdhbWVwYWRQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoSElE
R2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKSk7CisgICAgICAgIEdhbWVwYWRQcm92aWRlcjo6
c2V0U2hhcmVkUHJvdmlkZXIoTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpKTsKICNl
bmRpZgogfQogCg==
</data>
<flag name="review"
          id="419318"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403936</attachid>
            <date>2020-07-09 17:41:31 -0700</date>
            <delta_ts>2020-07-09 18:28:03 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42896</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTI2YTU1Zjg0NS4uN2M4MjMyM2I5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNy0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9sbGVyIGdhbWVwYWQg
cHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTkyNTMyPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisgICAgICAgIAorICAgICAgICBNYWMgaGFzIGFscmVh
ZHkgc3VwcG9ydGVkIGJvdGggdGhlIEhJRCBwcm92aWRlciBhbmQgR2FtZUNvbnRyb2xsZXIgcHJv
dmlkZXIuCisgICAgICAgIAorICAgICAgICBCeSBhZGRpbmcgYW4gaW50ZXJtZWRpYXRlIHByb3Zp
ZGVyIHRvIG11bHRpcGxleCBib3RoIGFuZCB0d2Vha2luZyBhIGZldyBvdGhlciB0aGluZ3MsCisg
ICAgICAgIGl0IGNhbiBzdXBwb3J0IGJvdGggYXQgdGhlIHNhbWUgdGltZS4KKworICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZDo6bGFzdFVwZGF0ZVRpbWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkOjpzb3VyY2UgY29uc3QpOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZEhhZElucHV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjptYWtlSW52aXNpYmxlR2Ft
ZXBhZHNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6Om1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNp
YmxlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJTUEkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyU29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyU29mdExpbmsubW06CisKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6Omlnbm9yZUdh
bWVDb250cm9sbGVyRnJhbWV3b3JrRGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OmRldmljZU1hdGNoaW5nRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpkZXZp
Y2VBZGRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZVJlbW92ZWRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VWYWx1ZXNDaGFuZ2VkQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAo
V2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpISURHYW1lcGFkUHJvdmlkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0lucHV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nSW5wdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjppbmRleEZvck5ld2x5Q29u
bmVjdGVkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6aW5p
dGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpISURH
YW1lcGFkUHJvdmlkZXI6Om9wZW5BbmRTY2hlZHVsZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SElER2FtZXBhZFByb3ZpZGVyOjpjbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dh
bWVwYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OmdhbWVDb250cm9sbGVyRnJhbWV3b3JrV2lsbEhh
bmRsZUhJRERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRl
dmljZUFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
UmVtb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OnZhbHVlc0No
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlm
aWNhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVy
OjpyZW1vdmVHYW1lcGFkRm9yRGV2aWNlKToKKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQv
bWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXVs
dGlHYW1lcGFkUHJvdmlkZXI6OmlzTW9ja0dhbWVwYWRQcm92aWRlciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6UGxhdGZvcm1HYW1lcGFkV3JhcHBlcjo6
UGxhdGZvcm1HYW1lcGFkV3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
TXVsdGlHYW1lcGFkUHJvdmlkZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVw
YWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6
TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAo
V2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2Ft
ZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToKKwogMjAyMC0wNy0w
OCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWdncmVzc2l2
ZWx5IHByaW1lIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBnYW1lcGFkIHByb3ZpZGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggZDExNWZiMmZhOGEuLjllYTQzMzdmMzk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNy0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTXVsdGlwbGV4IHRoZSBISUQgYW5kIEdhbWVDb250cm9s
bGVyIGdhbWVwYWQgcHJvdmlkZXJzIG9uIE1hYy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYz
MTkyNTMyPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDEy
NgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgIklPS2l0U1BJLmgiIGlzIHJlYWxseSB3ZWlyZC4KKyAgICAgICAgSXQgaXMgbW9zdGx5IG5l
ZWRlZCBmb3IgaU9TLCBidXQgYWxzbyB1c2VkIG9uIE1hYyBhIGxpdHRsZS4uLgorICAgICAgICBB
bmQgc2luY2Ugc29tZSBvZiB3aGF0IGl0IGRlY2xhcmVzIG9uIE1hYyBpcyBhY3R1YWxseSBwdWJs
aWMsIGFueW9uZSBlbHNlCisgICAgICAgIHRoYXQgdXNlcyBwdWJsaWMgaGVhZGVycyBvbiBNYWMg
cnVucyBpbnRvIHJlZGVmaW5pdGlvbnMuCisgICAgICAgIAorICAgICAgICBTaW5jZSB0aGUgdXNl
IG9mIGl0IG9uIGlPUyBhbmQgTWFjIGFyZSBzbyBkaWZmZXJlbnQsIGxldCdzIGp1c3QgbWFrZSBh
IE1hYyBvbmUuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaC4KKwog
MjAyMC0wNy0wOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQxMzIgYW5kIHIyNjQxMzkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGI2
NDE0ZDI5OTYuLjQ1MGVlMGEzOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjcsNiArMTI3LDcgQEAKIAkJNDQ1MEZDQTAy
MUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsuaCAqLzsgfTsKIAkJNDRFMUE4QUYyMUZBNTRFNjAwQzMwNDhFIC8q
IExvb2t1cFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NEUxQThBRDIxRkE1NERBMDBDMzA0OEUgLyogTG9va3VwU29mdExpbmsuaCAqLzsg
fTsKIAkJNDRFMUE4QjAyMUZBNTRFQjAwQzMwNDhFIC8qIExvb2t1cFNvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMUE4QUUyMUZBNTRE
QTAwQzMwNDhFIC8qIExvb2t1cFNvZnRMaW5rLm1tICovOyB9OworCQk1MTdFMDNGOTI0QjdDMDA3
MDA1NDg5NUEgLyogSU9LaXRTUElNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxN0UwM0Y4MjRCN0MwMDYwMDU0ODk1QSAvKiBJT0tpdFNQSU1hYy5o
ICovOyB9OwogCQk1NzBBQjhGMTIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEYwMjBB
RTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oICovOyB9OwogCQk1NzBBQjhGOTIwQUY2
RTNEMDBCOEJFODcgLyogTlNYUENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBBQjhGODIwQUY2RTNEMDBCOEJFODcgLyogTlNY
UENDb25uZWN0aW9uU1BJLmggKi87IH07CiAJCTU3MkExMDc4MjJCNDU2RjUwMEY0MTBDOCAvKiBB
dXRoS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBMTA3NzIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oICovOyB9OwpAQCAtMzEz
LDYgKzMxNCw3IEBACiAJCTQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0
TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0TGlu
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEUxQThBRDIxRkE1NERBMDBDMzA0
OEUgLyogTG9va3VwU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9va3VwU29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFMUE4QUUyMUZBNTREQTAwQzMwNDhFIC8q
IExvb2t1cFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9va3VwU29mdExpbmsu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0UwM0Y4MjRCN0MwMDYwMDU0ODk1
QSAvKiBJT0tpdFNQSU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJT0tp
dFNQSU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBBQjhGMDIwQUUyRThE
MDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjS2V5UHJveHlT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwQUI4RjgyMEFGNkUzRDAwQjhC
RTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1hQQ0Nvbm5lY3Rp
b25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcyQTEwNzcyMkI0NTZGNTAw
RjQxMEM4IC8qIEF1dGhLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aEtpdFNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE0LDYgKzUxNiw3IEBACiAJCQkJMEM3Nzg1NzEx
RjQ1MTMwRjAwRjRFQkI2IC8qIERhdGFEZXRlY3RvcnNTUEkuaCAqLywKIAkJCQlBMTAyNjU4RDFG
NTY3RTlEMDBCNEM4NDQgLyogSElTZXJ2aWNlc1NQSS5oICovLAogCQkJCUExMDI2NTg4MUY1Njc0
N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLywKKwkJCQk1MTdFMDNGODI0QjdDMDA2MDA1
NDg5NUEgLyogSU9LaXRTUElNYWMuaCAqLywKIAkJCQkwQzc3ODU3MjFGNDUxMzBGMDBGNEVCQjYg
LyogTG9va3VwU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzMxRjQ1MTMwRjAwRjRFQkI2IC8qIE1lZGlh
UmVtb3RlU1BJLmggKi8sCiAJCQkJMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFy
YW5jZVNQSS5oICovLApAQCAtODc3LDYgKzg4MCw3IEBACiAJCQkJMkUxMzQyQ0MyMTVBQTEwQTAw
NzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTIyMUY0
M0E0QzcwMDJFQUMwMiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNDcx
RjNCRUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxN0UwM0Y5MjRCN0MwMDcwMDU0ODk1QSAvKiBJT0tpdFNQSU1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTkxRjNCRUI0OTAwREJDMzE3IC8qIFdlYkZpbHRl
ckV2YWx1YXRvclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwODI2RjkxRjU3NjI5MjAwNDc3
MkFDIC8qIFdlYlBhbmVsLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0lPS2l0U1BJTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjJhZGU5NmJjNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvbWFjL0lPS2l0U1BJTWFjLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPElPS2l0L2hpZC9JT0hJREV2ZW50U3lzdGVtQ2xpZW50Lmg+CisK
KyNlbHNlCisKK1dURl9FWFRFUk5fQ19CRUdJTgordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9U
WVBFKGlkKSBfX0lPSElERXZlbnRTeXN0ZW1DbGllbnQgKiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50
UmVmOworSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiBJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3Jl
YXRlKENGQWxsb2NhdG9yUmVmKTsKK3ZvaWQgSU9ISURFdmVudFN5c3RlbUNsaWVudFNldE1hdGNo
aW5nKElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWYsIENGRGljdGlvbmFyeVJlZik7CitJT0hJRFNl
cnZpY2VDbGllbnRSZWYgSU9ISURFdmVudFN5c3RlbUNsaWVudENvcHlTZXJ2aWNlRm9yUmVnaXN0
cnlJRChJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmLCB1aW50NjRfdCByZWdpc3RyeUlEKTsKK1dU
Rl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTIyMDQ3NDlk
YmIuLjQ0ZWEwOGY2NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Nyw3ICsyNTcs
OCBAQCBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWQubW0KIHBsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWQuY3BwCi1wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwCitwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0KK3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gQG5vLXVuaWZ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYWQwMTZlNzQ3OGYuLmFjNjcxYjI3OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcyLDYgKzE0NzIsNyBAQAog
CQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3
RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdERUVFODFERTk0
QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3RTAzRjcyNEI2RDk4NDAwNTQ4
OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1l
cGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFGMzE0
MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYzMTQz
Q0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKIAkJNTE4MkMyNUExRjMxNDNDRDAw
NTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI0RDFGMzE0MjUwMDA1OUJBN0MgLyog
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKQEAgLTgyODEsNyArODI4Miw3IEBA
CiAJCTUxNUJFMThFMUQ1NEY1RjYwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1HYW1lcGFkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMTk3MUQ1NEY2QkQwMEREN0M2OCAvKiBISURHYW1lcGFk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhJREdhbWVwYWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE5ODFENTRGNkJEMDBERDdDNjgg
LyogSElER2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISURHYW1l
cGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNUJFMTk5MUQ1NEY2QkQwMERE
N0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSElER2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE1QkUxOTkxRDU0RjZCRDAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhJREdhbWVwYWRQcm92
aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxOUExRDU0RjZCRDAw
REQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBISURHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE1RTM3RjQxRkFBOTM4ODAwRDdGMjJBIC8qIFNlcnZpY2VXb3JrZXJUeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNv
cmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODM3MCw2ICs4MzcxLDggQEAKIAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8q
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTdERUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3RTAzRjUyNEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRp
R2FtZXBhZFByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8q
IERPTVdpbmRvd0V4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01XaW5kb3dFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMy
NEIxRjMxM0FFMDAwNTlCQTdDIC8qIE5hdmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5h
dmlnYXRvclNlcnZpY2VXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTk1NzcsOCArMTk1ODAsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxNUJFMTk3MUQ1NEY2
QkQwMEREN0M2OCAvKiBISURHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTVCRTE5ODFENTRGNkJEMDBE
RDdDNjggLyogSElER2FtZXBhZC5oICovLAotCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2OCAv
KiBISURHYW1lcGFkUHJvdmlkZXIuY3BwICovLAorCQkJCTUxNUJFMTk5MUQ1NEY2QkQwMEREN0M2
OCAvKiBISURHYW1lcGFkUHJvdmlkZXIubW0gKi8sCiAJCQkJNTE1QkUxOUExRDU0RjZCRDAwREQ3
QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y0MjRCNkI5NjMwMDU0
ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oICovLAorCQkJCTUxN0UwM0Y1MjRCNkI5NjQw
MDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0g
bWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzMjY5LDYgKzMzMjc0LDcgQEAK
IAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0
cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3RTAzRjcyNEI2RDk4NDAw
NTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRC
ODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERh
dGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvUGxhdGZvcm1HYW1lcGFkLmgKaW5kZXggNzVjYzllZmVmOWQuLjkyMThlYzgyMmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgK
QEAgLTQxLDExICs0MSwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG1hcHBpbmcoKSBjb25zdCB7IHJl
dHVybiBtX21hcHBpbmc7IH0KICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXg7IH0KLSAgICBNb25vdG9uaWNUaW1lIGxhc3RVcGRhdGVUaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0VXBkYXRlVGltZTsgfQorICAgIHZpcnR1YWwgTW9ub3RvbmljVGltZSBsYXN0VXBk
YXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWU7IH0KICAgICBNb25vdG9u
aWNUaW1lIGNvbm5lY3RUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0VGltZTsgfQogICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgPSAw
OwogCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiAiVW5r
bm93biJfczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1HYW1lcGFkKHVu
c2lnbmVkIGluZGV4KQogICAgICAgICA6IG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWQuaAppbmRleCA3MmU1M2JhMTA2Ni4uNjFjYTBkNDQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWQuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPGRv
dWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F4aXNWYWx1ZXM7IH0K
ICAgICBjb25zdCBWZWN0b3I8ZG91YmxlPiYgYnV0dG9uVmFsdWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9idXR0b25WYWx1ZXM7IH0KIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHYW1lQ29udHJvbGxlciJfczsgfQorCiBwcml2YXRlOgogICAgIHZv
aWQgc2V0dXBBc0V4dGVuZGVkR2FtZXBhZCgpOwogICAgIHZvaWQgc2V0dXBBc0dhbWVwYWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBiZGRlZDE3NzBm
MS4uNTM5N2IyMDEzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVy
LmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZEhhZElucHV0KEdh
bWVDb250cm9sbGVyR2FtZXBhZCYsIGJvb2wgaGFkQnV0dG9uUHJlc3Nlcyk7CiAgICAgdm9pZCBw
cmV3YXJtR2FtZUNvbnRyb2xsZXJEZXZpY2VzSWZOZWNlc3NhcnkoKTsKIAorICAgIHZvaWQgbWFr
ZUludmlzaWJsZUdhbWVwYWRzVmlzaWJsZSgpOworCiBwcml2YXRlOgogICAgIEdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyKCk7CiAKQEAgLTcxLDggKzczLDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgaW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG1ha2VJbnZp
c2liaWxlR2FtZXBhZHNWaXNpYmxlKCk7Ci0KICAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1
bmlxdWVfcHRyPEdhbWVDb250cm9sbGVyR2FtZXBhZD4+IG1fZ2FtZXBhZE1hcDsKICAgICBWZWN0
b3I8UGxhdGZvcm1HYW1lcGFkKj4gbV9nYW1lcGFkVmVjdG9yOwogICAgIEhhc2hTZXQ8UGxhdGZv
cm1HYW1lcGFkKj4gbV9pbnZpc2libGVHYW1lcGFkczsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0
ZToKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fZGlzY29ubmVjdE9ic2VydmVyOwogCiAgICAg
UnVuTG9vcDo6VGltZXI8R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI+IG1faW5wdXROb3Rp
ZmljYXRpb25UaW1lcjsKLSAgICBib29sIG1fc2hvdWxkTWFrZUludmlzaWJpbGVHYW1lcGFkc1Zp
c2libGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRNYWtlSW52aXNpYmxlR2FtZXBhZHNW
aXNpYmxlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGJiNDEyZjkxODk1Li44MDQ3
YTk3MjI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBA
IC0yOSwxMiArMjksMTMgQEAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAogI2ltcG9ydCAiR2FtZUNv
bnRyb2xsZXJHYW1lcGFkLmgiCi0jaW1wb3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCiAj
aW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgPEdhbWVDb250cm9sbGVyL0dhbWVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAorI2ltcG9ydCAiR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oIgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGlucHV0Tm90aWZpY2F0
aW9uRGVsYXkgeyAxNl9tcyB9OwpAQCAtNzUsNyArNzYsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRy
b2xsZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbWFrZUludmlzaWJpbGVHYW1lcGFk
c1Zpc2libGUoKTsKKyAgICBtYWtlSW52aXNpYmxlR2FtZXBhZHNWaXNpYmxlKCk7CiAKICAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKICAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdh
bWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIEV2ZW50TWFrZXNHYW1lcGFk
c1Zpc2libGU6Olllcyk7CkBAIC0xNzAsMTAgKzE3MSwxMCBAQCB2b2lkIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkSGFkSW5wdXQoR2FtZUNvbnRyb2xsZXJHYW1lcGFkJiwg
Ym9vbAogICAgICAgICBtX2lucHV0Tm90aWZpY2F0aW9uVGltZXIuc3RhcnRPbmVTaG90KGlucHV0
Tm90aWZpY2F0aW9uRGVsYXkpOwogCiAgICAgaWYgKGhhZEJ1dHRvblByZXNzZXMpCi0gICAgICAg
IG1fc2hvdWxkTWFrZUludmlzaWJpbGVHYW1lcGFkc1Zpc2libGUgPSB0cnVlOworICAgICAgICBt
X3Nob3VsZE1ha2VJbnZpc2libGVHYW1lcGFkc1Zpc2libGUgPSB0cnVlOwogfQogCi12b2lkIEdh
bWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjptYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJs
ZSgpCit2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjptYWtlSW52aXNpYmxlR2Ft
ZXBhZHNWaXNpYmxlKCkKIHsKICAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBtX2ludmlzaWJsZUdh
bWVwYWRzKSB7CiAgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQpAQCAtMTg1
LDEyICsxODYsMTIgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6bWFrZUlu
dmlzaWJpbGVHYW1lcGFkc1Zpc2libGUoKQogCiB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogewotICAgIGlmIChtX3Nob3Vs
ZE1ha2VJbnZpc2liaWxlR2FtZXBhZHNWaXNpYmxlKSB7CisgICAgaWYgKG1fc2hvdWxkTWFrZUlu
dmlzaWJsZUdhbWVwYWRzVmlzaWJsZSkgewogICAgICAgICBzZXRTaG91bGRNYWtlR2FtZXBhZHNW
aXNpYmlsZSgpOwotICAgICAgICBtYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSgpOworICAg
ICAgICBtYWtlSW52aXNpYmxlR2FtZXBhZHNWaXNpYmxlKCk7CiAgICAgfQogCi0gICAgbV9zaG91
bGRNYWtlSW52aXNpYmlsZUdhbWVwYWRzVmlzaWJsZSA9IGZhbHNlOworICAgIG1fc2hvdWxkTWFr
ZUludmlzaWJsZUdhbWVwYWRzVmlzaWJsZSA9IGZhbHNlOwogCiAgICAgZGlzcGF0Y2hQbGF0Zm9y
bUdhbWVwYWRJbnB1dEFjdGl2aXR5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKaW5kZXggMThmOGU3
NWI3YjUuLmE2OGYwNjM5ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNQSS5oCkBAIC0zMSw0ICszMSwyMCBA
QAogKyAodm9pZClfX29wZW5YUENfYW5kX0NCQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVfXzsK
IEBlbmQKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CitXVEZfRVhURVJOX0NfQkVHSU4KKyNpbXBvcnQgPEdhbWVDb250cm9sbGVyL0dDVXRpbGl0eS5o
PgorV1RGX0VYVEVSTl9DX0VORAorCisjZWxzZQorCitXVEZfRVhURVJOX0NfQkVHSU4KK3R5cGVk
ZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgSU9ISURTZXJ2aWNlQ2xpZW50ICogSU9ISURT
ZXJ2aWNlQ2xpZW50UmVmOworQ2xhc3MgQ29udHJvbGxlckNsYXNzRm9yU2VydmljZShJT0hJRFNl
cnZpY2VDbGllbnRSZWYpOworV1RGX0VYVEVSTl9DX0VORAorCisjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAjZW5kaWYgLy8gRU5BQkxF
KEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyU29mdExpbmsuaApp
bmRleCAxMDE4M2JmYzE3NS4uMTM5ZTJiOTM1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGlu
ay5oCkBAIC0zNiw0ICszNiw4IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYkNvcmUs
IEdDQ29udHJvbGxlcikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdl
YkNvcmUsIEdhbWVDb250cm9sbGVyLCBHQ0NvbnRyb2xsZXJEaWRDb25uZWN0Tm90aWZpY2F0aW9u
LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZERpc2Nvbm5lY3ROb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCiAKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwgQ29udHJvbGxlckNsYXNzRm9yU2Vy
dmljZSwgQ2xhc3MsIChJT0hJRFNlcnZpY2VDbGllbnRSZWYgc2VydmljZSksIChzZXJ2aWNlKSkK
KyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlclNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tCmluZGV4IGMxMDcwYzQxOTZiLi4xNzY2MmEzOWMw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlclNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJTb2Z0TGluay5tbQpAQCAtMzYsNCArMzYsOCBAQCBTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTChXZWJDb3JlLCBHYW1lQ29udHJvbGxlciwg
R0NDb250cm9sbGVyKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgR2FtZUNvbnRyb2xsZXIsIEdDQ29udHJvbGxlckRpZENvbm5lY3ROb3RpZmljYXRpb24s
IE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJD
b3JlLCBHYW1lQ29udHJvbGxlciwgR0NDb250cm9sbGVyRGlkRGlzY29ubmVjdE5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKikKIAorI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFdlYkNvcmUsIEdhbWVDb250cm9sbGVyLCBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2
aWNlLCBDbGFzcywgKElPSElEU2VydmljZUNsaWVudFJlZiBzZXJ2aWNlKSwgKHNlcnZpY2UpKQor
I2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkgJiYgUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5k
ZXggYTI1MjM0ZmI4NzUuLjE2NDFmNDA1MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9heGlzVmFsdWVzOyB9CiAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGJ1dHRvblZh
bHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9uVmFsdWVzOyB9CiAKKyAgICBjb25z
dCBjaGFyKiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSElEIl9zOyB9CisKIHByaXZh
dGU6CiAgICAgdm9pZCBpbml0RWxlbWVudHMoKTsKICAgICB2b2lkIGluaXRFbGVtZW50c0Zyb21B
cnJheShDRkFycmF5UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggMWJiNTRlZTU2MWIuLmZiNDQz
OGFlMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIHZhbHVlc0NoYW5n
ZWQoSU9ISURWYWx1ZVJlZik7CiAKKyAgICB2b2lkIGlnbm9yZUdhbWVDb250cm9sbGVyRnJhbWV3
b3JrRGV2aWNlcygpIHsgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtEZXZpY2VzID0g
dHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhJREdhbWVwYWRQcm92aWRlcigpOwogCkBAIC03MSwx
MCArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dh
bWVwYWRWZWN0b3I7CiAgICAgSGFzaE1hcDxJT0hJRERldmljZVJlZiwgc3RkOjp1bmlxdWVfcHRy
PEhJREdhbWVwYWQ+PiBtX2dhbWVwYWRNYXA7CisgICAgSGFzaFNldDxJT0hJRERldmljZVJlZj4g
bV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkczsKIAogICAgIFJldGFpblB0cjxJT0hJRE1h
bmFnZXJSZWY+IG1fbWFuYWdlcjsKIAogICAgIGJvb2wgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtE
ZXZpY2VzIHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1faW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVk
VGltZXI7CiAgICAgVGltZXIgbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5tbQpzaW1pbGFyaXR5IGluZGV4IDc3JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCnJlbmFtZSB0byBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0KaW5kZXgg
MGI2MzIyNWMwN2MuLjFkYzMxNjk0ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5tbQpAQCAtMzEsMTIg
KzMxLDE1IEBACiAjaW1wb3J0ICJHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8cGFsL3NwaS9t
YWMvSU9LaXRTUElNYWMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaW1w
b3J0ICJHYW1lQ29udHJvbGxlclNvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IFNlY29uZHMgY29ubmVjdGlvbkRlbGF5SW50ZXJ2YWwgeyA1MDBfbXMgfTsK
LXN0YXRpYyBjb25zdCBTZWNvbmRzIGlucHV0Tm90aWZpY2F0aW9uRGVsYXkgeyA1MF9tcyB9Owor
c3RhdGljIGNvbnN0IFNlY29uZHMgaGlkSW5wdXROb3RpZmljYXRpb25EZWxheSB7IDUwX21zIH07
CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZXZpY2VNYXRjaGluZ0RpY3Rp
b25hcnkodWludDMyX3QgdXNhZ2VQYWdlLCB1aW50MzJfdCB1c2FnZSkKIHsKQEAgLTE3Niw4ICsx
NzksNTggQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMo
R2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIGNsb3NlQW5kVW5zY2hlZHVs
ZU1hbmFnZXIoKTsKIH0KIAorc3RhdGljIGJvb2wgZ2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtXaWxs
SGFuZGxlSElERGV2aWNlKElPSElERGV2aWNlUmVmIGRldmljZSkKK3sKKyAgICBpZiAoIWlzR2Ft
ZUNvbnRyb2xsZXJGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYXV0byBkZXZpY2VTZXJ2aWNlID0gSU9ISUREZXZpY2VHZXRTZXJ2aWNlKGRldmljZSk7
CisgICAgaWYgKCFkZXZpY2VTZXJ2aWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBDaGVjayB0aGUgc2VydmljZSBkaXJlY3RseSBiYWNraW5nIHRoaXMgZGV2aWNlCisgICAgdWlu
dDY0X3QgcmVnaXN0cnlJRDsKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0UmVnaXN0cnlFbnRy
eUlEKGRldmljZVNlcnZpY2UsICZyZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZXZlbnRTeXN0ZW1DbGllbnQgPSBhZG9wdENGKElP
SElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUobnVsbHB0cikpOworICAgIElPSElERXZlbnRTeXN0
ZW1DbGllbnRTZXRNYXRjaGluZyhldmVudFN5c3RlbUNsaWVudC5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgYXV0byBzZXJ2aWNlQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q29w
eVNlcnZpY2VGb3JSZWdpc3RyeUlEKGV2ZW50U3lzdGVtQ2xpZW50LmdldCgpLCByZWdpc3RyeUlE
KSk7CisgICAgaWYgKHNlcnZpY2VDbGllbnQpIHsKKyAgICAgICAgaWYgKENvbnRyb2xsZXJDbGFz
c0ZvclNlcnZpY2Uoc2VydmljZUNsaWVudC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGl0cyBncmFuZGNoaWxkIHNlcnZp
Y2UKKyAgICBpb19yZWdpc3RyeV9lbnRyeV90IGNoaWxkOworICAgIGlmIChJT1JlZ2lzdHJ5RW50
cnlHZXRDaGlsZEVudHJ5KGRldmljZVNlcnZpY2UsIGtJT1NlcnZpY2VQbGFuZSwgJmNoaWxkKSAh
PSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoaWxkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoSU9SZWdpc3RyeUVudHJ5R2V0Q2hpbGRF
bnRyeShjaGlsZCwga0lPU2VydmljZVBsYW5lLCAmY2hpbGQpICE9IEtFUk5fU1VDQ0VTUykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChJT1JlZ2lzdHJ5RW50cnlHZXRSZWdpc3RyeUVudHJ5SUQoY2hpbGQsICZy
ZWdpc3RyeUlEKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHNlcnZpY2VDbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDb3B5U2Vydmlj
ZUZvclJlZ2lzdHJ5SUQoZXZlbnRTeXN0ZW1DbGllbnQuZ2V0KCksIHJlZ2lzdHJ5SUQpKTsKKyAg
ICBpZiAoIXNlcnZpY2VDbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBDb250cm9sbGVyQ2xhc3NGb3JTZXJ2aWNlKHNlcnZpY2VDbGllbnQuZ2V0KCkpOworfQorCiB2
b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNl
KQogeworICAgIGlmIChtX2lnbm9yZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya0RldmljZXMgJiYg
Z2FtZUNvbnRyb2xsZXJGcmFtZXdvcmtXaWxsSGFuZGxlSElERGV2aWNlKGRldmljZSkpIHsKKyAg
ICAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlciBmcmFtZXdvcmsgd2lsbCBoYW5kbGUg
YXR0YWNoZWQgZGV2aWNlICVwIC0gSElER2FtZXBhZFByb3ZpZGVyIGlnbm9yaW5nIGl0IiwgZGV2
aWNlKTsKKyAgICAgICAgbV9nYW1lQ29udHJvbGxlck1hbmFnZWRHYW1lcGFkcy5hZGQoZGV2aWNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVCghbV9nYW1lcGFkTWFwLmdl
dChkZXZpY2UpKTsKIAogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmlj
ZSAlcCBhZGRlZCIsIGRldmljZSk7CkBAIC0yMDEsMTYgKzI1NCwyOCBAQCB2b2lkIEhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgICAgICAg
ICAgbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAg
ICB9CiAKKyAgICBhdXRvIGV2ZW50VmlzaWJpbGl0eSA9IG1faW5pdGlhbEdhbWVwYWRzQ29ubmVj
dGVkID8gRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZTo6WWVzIDogRXZlbnRNYWtlc0dhbWVwYWRz
VmlzaWJsZTo6Tm87CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAg
IGNsaWVudC0+cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKCptX2dhbWVwYWRWZWN0b3JbaW5kZXhd
LCBtX2luaXRpYWxHYW1lcGFkc0Nvbm5lY3RlZCA/IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6
OlllcyA6IEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGU6Ok5vKTsKKyAgICAgICAgY2xpZW50LT5w
bGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0sIGV2ZW50Vmlz
aWJpbGl0eSk7CisKKyAgICAvLyBJZiB3ZSBhcmUgd29ya2luZyB0b2dldGhlciB3aXRoIHRoZSBH
YW1lQ29udHJvbGxlciBwcm92aWRlciwgbGV0IGl0IGtub3cKKyAgICAvLyB0aGF0IGdhbWVwYWRz
IHNob3VsZCBub3cgYmUgdmlzaWJsZS4KKyAgICBpZiAobV9pZ25vcmVzR2FtZUNvbnRyb2xsZXJG
cmFtZXdvcmtEZXZpY2VzICYmIGV2ZW50VmlzaWJpbGl0eSA9PSBFdmVudE1ha2VzR2FtZXBhZHNW
aXNpYmxlOjpZZXMpCisgICAgICAgIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5tYWtlSW52aXNpYmxlR2FtZXBhZHNWaXNpYmxlKCk7CiB9CiAKIHZvaWQgSElER2Ft
ZXBhZFByb3ZpZGVyOjpkZXZpY2VSZW1vdmVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAg
ICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgcmVtb3ZlZCIsIGRl
dmljZSk7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gcmVtb3ZlZEdhbWVwYWQg
PSByZW1vdmVHYW1lcGFkRm9yRGV2aWNlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJlbW92ZWRHYW1l
cGFkKTsKKworICAgIGlmICghcmVtb3ZlZEdhbWVwYWQpIHsKKyAgICAgICAgYXV0byB0YWtlbiA9
IG1fZ2FtZUNvbnRyb2xsZXJNYW5hZ2VkR2FtZXBhZHMudGFrZShkZXZpY2UpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbik7CisgICAgICAgIExPRyhHYW1lcGFkLCAiSElER2Ft
ZXBhZFByb3ZpZGVyIGluZm9ybWVkIG9mIHJlbW92YWwgb2YgZGV2aWNlICVwLCB3aGljaCBpcyBt
YW5hZ2VkIGJ5IEdhbWVDb250cm9sbGVyIGZyYW1ld29yay4gSWdub3JpbmcuIiwgZGV2aWNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFBy
b3ZpZGVyIGRldmljZSAlcCByZW1vdmVkIiwgZGV2aWNlKTsKIAogICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQogICAgICAgICBjbGllbnQtPnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5l
Y3RlZCgqcmVtb3ZlZEdhbWVwYWQpOwpAQCAtMjMyLDcgKzI5Nyw3IEBAIHZvaWQgSElER2FtZXBh
ZFByb3ZpZGVyOjp2YWx1ZXNDaGFuZ2VkKElPSElEVmFsdWVSZWYgdmFsdWUpCiAgICAgLy8gVGhp
cyBpc0FjdGl2ZSBjaGVjayBpcyBuZWNlc3NhcnkgYXMgd2Ugd2FudCB0byBkZWxheSBpbnB1dCBu
b3RpZmljYXRpb25zIGZyb20gdGhlIHRpbWUgb2YgdGhlIGZpcnN0IGlucHV0LAogICAgIC8vIGFu
ZCBub3QgcHVzaCB0aGUgbm90aWZpY2F0aW9uIG91dCBvbiBldmVyeSBzdWJzZXF1ZW50IGlucHV0
LgogICAgIGlmICghbV9pbnB1dE5vdGlmaWNhdGlvblRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAg
IG1faW5wdXROb3RpZmljYXRpb25UaW1lci5zdGFydE9uZVNob3QoaW5wdXROb3RpZmljYXRpb25E
ZWxheSk7CisgICAgICAgIG1faW5wdXROb3RpZmljYXRpb25UaW1lci5zdGFydE9uZVNob3QoaGlk
SW5wdXROb3RpZmljYXRpb25EZWxheSk7CiB9CiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpp
bnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQpAQCAtMjQ5LDcgKzMxNCw4IEBAIHZvaWQgSElE
R2FtZXBhZFByb3ZpZGVyOjppbnB1dE5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQogc3RkOjp1bmlx
dWVfcHRyPEhJREdhbWVwYWQ+IEhJREdhbWVwYWRQcm92aWRlcjo6cmVtb3ZlR2FtZXBhZEZvckRl
dmljZShJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+IHJlc3VsdCA9IG1fZ2FtZXBhZE1hcC50YWtlKGRldmljZSk7Ci0gICAgQVNTRVJUKHJl
c3VsdCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBpID0gbV9nYW1lcGFkVmVjdG9yLmZpbmQocmVzdWx0LmdldCgpKTsKICAgICBpZiAoaSAh
PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9NdWx0aUdhbWVwYWRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi4xYjgxMmFiMDc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCAr
MSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdBTUVQQUQp
ICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkdhbWVwYWRQcm92aWRlci5oIgorI2luY2x1
ZGUgIkdhbWVwYWRQcm92aWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
dWx0aUdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBHYW1lcGFkUHJvdmlkZXIsIHB1YmxpYyBHYW1l
cGFkUHJvdmlkZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk11bHRpR2FtZXBhZFBy
b3ZpZGVyKCkgPSBkZWZhdWx0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE11bHRpR2Ft
ZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKworICAgIC8vIEdhbWVwYWRQcm92aWRlcgorICAg
IHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmlu
YWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVu
dCYpIGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1H
YW1lcGFkcygpIGZpbmFsIHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQorICAgIGJvb2wgaXNN
b2NrR2FtZXBhZFByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEdh
bWVwYWRQcm92aWRlckNsaWVudAorICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBs
YXRmb3JtR2FtZXBhZCYsIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUpIGZpbmFsOworICAgIHZv
aWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOwor
ICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNW
aXNpYmxlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlz
cGF0Y2hQbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOworCisgICAgYm9vbCBtX3Nob3Vs
ZE1ha2VHYW1lcGFkc1Zpc2libGUgeyBmYWxzZSB9OworICAgIHNpemVfdCBtX2luaXRpYWxHYW1l
cGFkc0NvdW50IHsgMCB9OworICAgIFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiBtX2dhbWVwYWRW
ZWN0b3I7CisKKyAgICAvLyBXZSBjcmVhdGUgb3VyIG93biBHYW1lcGFkIHR5cGUgLSB0byB3cmFw
IGJvdGggSElEIGFuZCBHYW1lQ29udHJvbGVyIGdhbWVwYWRzIC0KKyAgICAvLyBiZWNhdXNlIE11
bHRpR2FtZXBhZFByb3ZpZGVyIG5lZWRzIHRvIG1hbmFnZSB0aGUgaW5kZXhlcyBvZiBpdHMgb3du
IGdhbWVwYWRzCisgICAgLy8gbm8gbWF0dGVyIHdoYXQgdGhlIEhJRCBvciBHYW1lQ29udHJvbGxl
ciBpbmRleCBpcy4KKyAgICBjbGFzcyBQbGF0Zm9ybUdhbWVwYWRXcmFwcGVyIDogcHVibGljIFBs
YXRmb3JtR2FtZXBhZCB7CisgICAgcHVibGljOgorICAgICAgICBQbGF0Zm9ybUdhbWVwYWRXcmFw
cGVyKHVuc2lnbmVkIGluZGV4LCBQbGF0Zm9ybUdhbWVwYWQqIHdyYXBwZWQpCisgICAgICAgICAg
ICA6IFBsYXRmb3JtR2FtZXBhZChpbmRleCkKKyAgICAgICAgICAgICwgbV9wbGF0Zm9ybUdhbWVw
YWQod3JhcHBlZCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pZCA9IHdyYXBwZWQtPmlkKCk7
CisgICAgICAgICAgICBtX21hcHBpbmcgPSB3cmFwcGVkLT5tYXBwaW5nKCk7CisgICAgICAgICAg
ICBtX2Nvbm5lY3RUaW1lID0gd3JhcHBlZC0+Y29ubmVjdFRpbWUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3BsYXRmb3JtR2FtZXBhZC0+bGFzdFVwZGF0ZVRpbWUoKTsgfQorICAgICAgICBjb25zdCBW
ZWN0b3I8ZG91YmxlPiYgYXhpc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZv
cm1HYW1lcGFkLT5heGlzVmFsdWVzKCk7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4m
IGJ1dHRvblZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5i
dXR0b25WYWx1ZXMoKTsgfQorCisgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1HYW1lcGFkLT5zb3VyY2UoKTsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgUGxhdGZvcm1HYW1lcGFkKiBtX3BsYXRmb3JtR2FtZXBhZDsKKyAgICB9Owor
CisgICAgSGFzaE1hcDxQbGF0Zm9ybUdhbWVwYWQqLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1H
YW1lcGFkV3JhcHBlcj4+IG1fZ2FtZXBhZE1hcDsKKyAgICBib29sIG1faGlkSW1wb3J0Q29tcGxl
dGUgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL011bHRpR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRkNTUzNjdhNTIzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvTXVsdGlHYW1l
cGFkUHJvdmlkZXIubW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJM
RShHQU1FUEFEKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0ICJISURHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQg
IkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtR2FtZXBhZC5oIgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHNpemVfdCBu
dW1iZXJPZkdhbWVwYWRQcm92aWRlcnMgPSAyOworCitNdWx0aUdhbWVwYWRQcm92aWRlciYgTXVs
dGlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE11bHRpR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hh
cmVkUHJvdmlkZXI7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRv
cmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wg
bW9uaXRvck90aGVyUHJvdmlkZXJzID0gbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VS
VCghbV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGll
bnQpOworCisgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5pZ25vcmVHYW1lQ29u
dHJvbGxlckZyYW1ld29ya0RldmljZXMoKTsKKyAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkucHJld2FybUdhbWVDb250cm9sbGVyRGV2aWNlc0lmTmVjZXNzYXJ5
KCk7CisKKyAgICBpZiAobW9uaXRvck90aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOwor
ICAgICAgICBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRN
b25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBNdWx0aUdhbWVwYWRQ
cm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNs
aWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKworICAg
IGJvb2wgc2hvdWxkU3RvcE1vbml0b3JpbmdPdGhlclByb3ZpZGVycyA9IG1fY2xpZW50cy5yZW1v
dmUoJmNsaWVudCkgJiYgbV9jbGllbnRzLmlzRW1wdHkoKTsKKworICAgIGlmIChzaG91bGRTdG9w
TW9uaXRvcmluZ090aGVyUHJvdmlkZXJzKSB7CisgICAgICAgIEhJREdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CisgICAgICAgIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVw
YWRzKCp0aGlzKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIE11bHRpR2FtZXBhZFByb3ZpZGVyOjpp
bmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgd2hpbGUgKGluZGV4IDwgbV9nYW1lcGFkVmVjdG9yLnNpemUoKSAmJiBtX2dhbWVwYWRW
ZWN0b3JbaW5kZXhdKQorICAgICAgICArK2luZGV4OworCisgICAgQVNTRVJUKGluZGV4IDw9IG1f
Z2FtZXBhZFZlY3Rvci5zaXplKCkpOworCisgICAgaWYgKGluZGV4ID09IG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkpCisgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5yZXNpemUoaW5kZXggKyAxKTsKKwor
ICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCwgRXZlbnRNYWtlc0dh
bWVwYWRzVmlzaWJsZSBldmVudFZpc2liaWxpdHkpCit7CisgICAgYXV0byBpbmRleCA9IGluZGV4
Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKKworICAgIExPRyhHYW1lcGFkLCAiTXVsdGlHYW1l
cGFkUHJvdmlkZXIgYWRkaW5nIG5ldyBwbGF0Zm9ybSBnYW1lcGFkIHRvIGluZGV4ICVpIGZyb20g
YSAlcyBzb3VyY2UiLCBpbmRleCwgZ2FtZXBhZC5zb3VyY2UoKSk7CisKKyAgICBBU1NFUlQobV9n
YW1lcGFkVmVjdG9yLnNpemUoKSA+IGluZGV4KTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9n
YW1lcGFkTWFwLnNldCgmZ2FtZXBhZCwgV1RGOjptYWtlVW5pcXVlPFBsYXRmb3JtR2FtZXBhZFdy
YXBwZXI+KGluZGV4LCAmZ2FtZXBhZCkpOworICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoKm1fZ2FtZXBhZFZlY3RvcltpbmRleF0s
IGV2ZW50VmlzaWJpbGl0eSk7Cit9CisKK3ZvaWQgTXVsdGlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCit7CisgICAg
TE9HKEdhbWVwYWQsICJNdWx0aUdhbWVwYWRQcm92aWRlciBkaXNjb25uZWN0aW5nIGdhbWVwYWQg
ZnJvbSBhICVzIHNvdXJjZSIsIGdhbWVwYWQuc291cmNlKCkpOworCisgICAgYXV0byBnYW1lcGFk
V3JhcHBlciA9IG1fZ2FtZXBhZE1hcC50YWtlKCZnYW1lcGFkKTsKKworICAgIEFTU0VSVChnYW1l
cGFkV3JhcHBlcik7CisgICAgQVNTRVJUKGdhbWVwYWRXcmFwcGVyLT5pbmRleCgpIDwgbV9nYW1l
cGFkVmVjdG9yLnNpemUoKSk7CisgICAgQVNTRVJUKG1fZ2FtZXBhZFZlY3RvcltnYW1lcGFkV3Jh
cHBlci0+aW5kZXgoKV0gPT0gZ2FtZXBhZFdyYXBwZXIuZ2V0KCkpOworCisgICAgbV9nYW1lcGFk
VmVjdG9yW2dhbWVwYWRXcmFwcGVyLT5pbmRleCgpXSA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5wbGF0Zm9ybUdhbWVwYWRE
aXNjb25uZWN0ZWQoKmdhbWVwYWRXcmFwcGVyKTsKK30KKwordm9pZCBNdWx0aUdhbWVwYWRQcm92
aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eShFdmVudE1ha2VzR2FtZXBhZHNWaXNp
YmxlIGV2ZW50VmlzaWJpbGl0eSkKK3sKKyAgICBpZiAoZXZlbnRWaXNpYmlsaXR5ID09IEV2ZW50
TWFrZXNHYW1lcGFkc1Zpc2libGU6OlllcykKKyAgICAgICAgR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXI6OnNpbmdsZXRvbigpLm1ha2VJbnZpc2libGVHYW1lcGFkc1Zpc2libGUoKTsKKwor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnBsYXRm
b3JtR2FtZXBhZElucHV0QWN0aXZpdHkoZXZlbnRWaXNpYmlsaXR5KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMzM0ZGExNjViYmYuLjFhMGM2ODVmNWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTA3LTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBNdWx0aXBsZXggdGhlIEhJRCBhbmQgR2FtZUNvbnRyb2xsZXIgZ2FtZXBhZCBw
cm92aWRlcnMgb24gTWFjLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMxOTI1MzI+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL2Nv
Y29hL1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVNldERlZmF1bHRHYW1lcGFkUHJvdmlkZXIpOgorCiAyMDIwLTA3
LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZ2dyZXNz
aXZlbHkgcHJpbWUgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIGdhbWVwYWQgcHJvdmlkZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2FtZXBh
ZFByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29h
L1VJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0KaW5kZXggYWIyYzdmYjg4ZDMuLjE5NGFhMzU2NTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL2NvY29hL1VJR2Ft
ZXBhZFByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Nb2NrR2FtZXBh
ZFByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL011bHRpR2FtZXBhZFByb3ZpZGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Myw3ICs1
NCw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU2V0RGVmYXVsdEdhbWVwYWRQ
cm92aWRlcigpCiAgICAgaWYgKHVzZUdhbWVDb250cm9sbGVyRnJhbWV3b3JrKQogICAgICAgICBH
YW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKEdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKSk7CiAgICAgZWxzZQotICAgICAgICBHYW1lcGFkUHJvdmlkZXI6
OnNldFNoYXJlZFByb3ZpZGVyKEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworICAg
ICAgICBHYW1lcGFkUHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE11bHRpR2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>