<?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>43181</bug_id>
          
          <creation_ts>2010-07-29 02:09:22 -0700</creation_ts>
          <short_desc>Hook up LayoutTestController.setMockDeviceOrientation() on Mac.</short_desc>
          <delta_ts>2010-09-02 14:23:56 -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 API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39589</dependson>
          <blocked>30335</blocked>
    
    <blocked>39590</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>257591</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 02:09:22 -0700</bug_when>
    <thetext>This new LayoutTestCotroller method is being added in Bug 39589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257914</commentid>
    <comment_count>1</comment_count>
      <attachid>62998</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 15:22:48 -0700</bug_when>
    <thetext>Created attachment 62998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257921</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 15:29:27 -0700</bug_when>
    <thetext>Note that this patch will fail to apply, let alone build, until the Chromium problems are sorted out and the patch in Bug 39589 is re-landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258200</commentid>
    <comment_count>3</comment_count>
      <attachid>63060</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-30 08:22:48 -0700</bug_when>
    <thetext>Created attachment 63060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258202</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 08:24:33 -0700</bug_when>
    <thetext>Attachment 63060 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/mac/WebView/WebDeviceOrientationInternal.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/mac/WebView/WebDeviceOrientationControllerInternal.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/mac/WebView/WebViewPrivate.h:610:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258204</commentid>
    <comment_count>5</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-30 08:28:39 -0700</bug_when>
    <thetext>&gt; Attachment 63060 [details] did not pass style-queue:
This is a false positive. Filed Bug 43252.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258206</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-30 08:31:37 -0700</bug_when>
    <thetext>Attachment 63060 did not build on mac:
Build output: http://queues.webkit.org/results/3615342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258801</commentid>
    <comment_count>7</comment_count>
      <attachid>63195</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-02 05:26:31 -0700</bug_when>
    <thetext>Created attachment 63195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258803</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 05:27:52 -0700</bug_when>
    <thetext>Attachment 63195 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/mac/WebView/WebDeviceOrientationControllerInternal.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/mac/WebView/WebViewPrivate.h:610:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/mac/WebView/WebDeviceOrientationInternal.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262820</commentid>
    <comment_count>9</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-10 12:46:18 -0700</bug_when>
    <thetext>Dean, do you know anybody who could review this? It&apos;s been in the queue for over a week now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263162</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-08-11 04:06:03 -0700</bug_when>
    <thetext>Chris, can you look at this with your new reviewing power?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266043</commentid>
    <comment_count>11</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-18 04:58:01 -0700</bug_when>
    <thetext>Ping!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266380</commentid>
    <comment_count>12</comment_count>
      <attachid>63195</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-18 14:36:05 -0700</bug_when>
    <thetext>Comment on attachment 63195
Patch

I&apos;m a little surprised that there are so many classes here: WebDeviceOrientationClient, WebDeviceOrientation, WebDeviceOrientationInternal , WebDeviceOrientationInternal, WebDeviceOrientationController, WebDeviceOrientationControllerInternal, WebDeviceOrientationProvider, WebDeviceOrientationProviderMock and WebDeviceOrientationProviderMockInternal. Are they really all needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266740</commentid>
    <comment_count>13</comment_count>
      <attachid>64853</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-19 07:56:41 -0700</bug_when>
    <thetext>Created attachment 64853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266742</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-19 07:58:13 -0700</bug_when>
    <thetext>Attachment 64853 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/mac/WebView/WebViewPrivate.h:609:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/mac/WebView/WebDeviceOrientationProviderMockInternal.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
WebKit/mac/WebView/WebDeviceOrientationInternal.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266743</commentid>
    <comment_count>15</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-19 07:59:00 -0700</bug_when>
    <thetext>Thanks for the review Simon. The reason for the numerous classes is that we&apos;re  implementing a WebCore client interface for which we need both a real and a mock implementation.

I&apos;ve uploaded a new patch which eliminates the need for WebDeviceOrientationController by doing a runtime check. I think all of the other classes are required. I&apos;m no expert on Mac, but I&apos;ve followed the pattern used by Geolocation. Here&apos;s a summary of the new classes ...

- WebDeviceOrientationClient - Mac implementation of WebCore::DeviceOrientationClient. Acts a proxy to either the mock or real provider.
- WebDeviceOrientationProvider - New interface used by WebDeviceOrientationClient and implemented by the real and mock providers.
- WebDeviceOrientationProviderMock - Mock provider, wrapper around WebCore::DeviceOrientationClientMock
- WebDeviceOrientation - Wrapper around WebCore::DeviceOrientation. Required by DRT to configure the mock, without exposing WebCore types.

Where these classes are wrappers around WebCore types, I&apos;ve used a FooInternal internal class to hide the WebCore types from the WebKit API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272595</commentid>
    <comment_count>16</comment_count>
      <attachid>64853</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-31 20:02:41 -0700</bug_when>
    <thetext>Comment on attachment 64853
Patch

This patch might be a bit outside my area (since I don&apos;t really have more than a passing understanding of ObjectiveC), but this looks reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272685</commentid>
    <comment_count>17</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-09-01 01:04:10 -0700</bug_when>
    <thetext>Thanks for the review Adam.

Unless anybody else has comments, I&apos;ll submit tomorrow, as this has now been in the review queue for some time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273574</commentid>
    <comment_count>18</comment_count>
      <attachid>64853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 14:23:50 -0700</bug_when>
    <thetext>Comment on attachment 64853
Patch

Clearing flags on attachment: 64853

Committed r66685: &lt;http://trac.webkit.org/changeset/66685&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273575</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 14:23:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62998</attachid>
            <date>2010-07-29 15:22:48 -0700</date>
            <delta_ts>2010-07-30 08:22:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43181-20100729232245.patch</filename>
            <type>text/plain</type>
            <size>51118</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjQzMDkpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhv
b2sgdXAgTGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24g
TWFjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMx
ODEKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEw
LTA3LTI2ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY0MjcxKQorKysgV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0
LDE4IEBACiAJCTUxRkRDNEQzMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkRD
NEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjQxQURGNTBCMUJDNDhB
MDA0MDEyQkQgLyogV2ViQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNDFBREY2MEIx
QkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREY0MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5t
bSAqLzsgfTsKKwkJNTk4QUQ5MUExMjAxQ0VDOTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aCAqLzsgfTsKKwkJNTk4QUQ5MUUxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
Lm1tICovOyB9OworCQk1OThBRDkyMDEyMDFDRjA3MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
OEFEOTFGMTIwMUNGMDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5OEFEOTIyMTIwMUNG
MTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTIxMTIwMUNGMTAwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvbi5tbSAqLzsgfTsKKwkJNTk4QUQ5MjQxMjAxQ0YxOTAwQUJBRTRF
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTIzMTIwMUNGMTkwMEFCQUU0RSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmggKi87IH07CisJCTU5OEFEOTI2MTIwMUNGMjUwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjUxMjAxQ0YyNTAwQUJBRTRF
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTk4QUQ5MjgxMjAxQ0YzMjAwQUJBRTRF
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovOyB9OworCQk1OThBRDkyQTEy
MDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5
MjkxMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50
ZXJuYWwuaCAqLzsgfTsKKwkJNTk4QURBNDYxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTk4QURBNjMxMjAyMkI0RDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTk4QURBNjIxMjAyMkI0RDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5oICovOyB9OworCQk1OThBREE2NTEyMDIyQjU2MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTk4QURBNjQxMjAyMkI1NjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5tbSAqLzsgfTsKKwkJNTk4QURBNjcxMjAyMkI1RjAwQUJBRTRFIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBREE2NjEyMDIyQjVGMDBBQkFFNEUgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaCAqLzsgfTsKIAkJNUQ3QkY4MTQw
QzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYklu
c3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMzBDMkExRDkwMDA4
Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9OwogCQk1REU4M0E3QTBEMEY3Rjk0MDBDQUQx
MkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURFODNBNzQwRDBGN0Y5NDAwQ0FEMTJBIC8q
IFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgKi87IH07CkBAIC01MTcsNiArNTI5LDE4
IEBACiAJCTUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSGlzdG9yeUl0ZW1Qcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNDFBREYzMEIxQkM0OEEwMDQwMTJC
RCAvKiBXZWJDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0MUFERjQwQjFCQzQ4QTAwNDAx
MkJEIC8qIFdlYkNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBRDkxOTEy
MDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU5OEFEOTFGMTIwMUNGMDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmll
bnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBRDkyMTEyMDFDRjEw
MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MjMxMjAxQ0YxOTAwQUJBRTRFIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1OThBRDkyNTEyMDFDRjI1MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5
MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5OEFE
OTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0lu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBREE2MjEyMDIy
QjREMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBREE2NDEyMDIyQjU2MDBBQkFFNEUg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBREE2NjEyMDIyQjVGMDBBQkFFNEUgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZE
IC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0JGODEzMEMyQTFE
OTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1REU4M0E3NTBEMEY3Rjk0MDBDQUQxMkEgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1lID0gRW5n
bGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5p
Yjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTEwNCw2ICsxMTI4LDE2IEBACiAJ
CTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJWaWV3ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OThBREE2NjEyMDIyQjVGMDBBQkFFNEUgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaCAqLywKKwkJCQk1OThBREE2
NDEyMDIyQjU2MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tICov
LAorCQkJCTU5OEFEQTYyMTIwMjJCNEQwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuaCAqLywKKwkJCQk1OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlci5oICovLAorCQkJCTU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi8sCisJCQkJNTk4
QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lm1tICovLAorCQkJCTU5OEFEOTI1MTIwMUNGMjUwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5oICovLAorCQkJCTU5OEFEOTIzMTIwMUNGMTkwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmggKi8sCisJCQkJNTk4QUQ5MjExMjAxQ0YxMDAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uLm1tICovLAorCQkJCTU5OEFEOTFGMTIwMUNG
MDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5oICovLAogCQkJCUY1MkNBNkJEMDJE
RjlEMEYwMTg2MzVDQSAvKiBIVE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAv
KiBQREYgKi8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAq
LywKQEAgLTEyMjksNiArMTI2Myw4IEBACiAJCUY1QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBX
ZWJDb3JlU3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50Lm1tICovLAorCQkJCTU5OEFEOTE5MTIwMUNFQzkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudC5oICovLAogCQkJCUI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJB
cHBsaWNhdGlvbkNhY2hlLmggKi8sCiAJCQkJQjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYyIC8qIFdl
YkFwcGxpY2F0aW9uQ2FjaGUubW0gKi8sCiAJCQkJNTFDQkZDQUMwRDEwRTZDNTAwMkRCRjUxIC8q
IFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi8sCkBAIC0xNTU3LDYgKzE1OTMsMTQgQEAK
IAkJCQk5Mzk4MTA3MTA4MjRCRjAxMDA4REYwMzggLyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNCMEY4MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQ0ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJX
b3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk4QUQ5MUExMjAxQ0VDOTAwQUJB
RTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1
OThBRDkyMDEyMDFDRjA3MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU5OEFEOTI0MTIwMUNGMTkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OThBRDkyNjEyMDFDRjI1MDBBQkFF
NEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTU5OEFEOTJBMTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OThBREE0NjEyMDIyNzUwMDBB
QkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTk4QURBNjMxMjAyMkI0RDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk4QURBNjcxMjAyMkI1RjAwQUJBRTRFIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTE5MTYsNiArMTk2MCwxMCBAQAogCQkJCTkzOTgxMEU4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJW
aWV3RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNCMEY5MTA3NkMzRjcwMDAzOUI5
NiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQ0ODUwMTAz
MzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTU5OEFEOTFFMTIwMUNFQ0YwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTU5OEFEOTIyMTIwMUNGMTAwMEFCQUU0RSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU5OEFEOTI4MTIwMUNGMzIwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTU5OEFEQTY1MTIwMjJCNTYwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDMwOSkKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTAt
MDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgTGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24gTWFjLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEKKworICAgICAgICBUaGlz
IHBhdGNoIGhvb2tzIHVwIHRoZSBtb2NrIGRldmljZSBvcmllbnRhdGlvbiBjbGllbnQgb24gTWFj
IGZvciB1c2UKKyAgICAgICAgaW4gRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgVGhlIHBhdGNo
IGFkZHMgYSBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgZm9yIE1hYy4gVGhpcyBjbGll
bnQgYWN0cworICAgICAgICBhcyBhIHByb3h5IHRvIGVpdGhlciBhIHJlYWwgb3IgbW9jayBkZXZp
Y2Ugb3JpZW50YXRpb24gcHJvdmlkZXIsIGJvdGggb2YKKyAgICAgICAgd2hpY2ggaW1wbGVtZW50
IGEgbmV3IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgaW50ZXJmYWNlLgorCisgICAgICAg
IFRoZSBwcm92aWRlciBpcyBjcmVhdGVkIGJ5IHRoZSBlbWJlZGRlciBhbmQgcGFzc2VkIHRvIHRo
ZSBXZWJWaWV3LCBmcm9tCisgICAgICAgIHdoZXJlIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
IGNhbiBhY2Nlc3MgaXQuCisKKyAgICAgICAgVGhlIG1vY2sgcHJvdmlkZXIsIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLCBpcyBhIHdyYXBwZXIgYXJvdW5kCisgICAgICAgIHRoZSBl
eGlzdGluZyBXZWJDb3JlIG1vY2suCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbTogQWRkZWQuCisgICAgICAgIChXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAo
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDo6bGFzdE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBXZWJLaXQuZXhw
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaDogQWRkZWQuCisgICAg
ICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkRldmljZU9yaWVudGF0aW9uIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOldlYkNv
cmU6Ol0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9u
IGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmFscGhhOmNhblByb3ZpZGVCZXRhOmJldGE6Y2FuUHJv
dmlkZUdhbW1hOmdhbW1hOl0pOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbiBkZWFs
bG9jXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIg
aW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOl0pOgorICAgICAgICAoY29y
ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uSW50
ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2suaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgc2V0T3JpZW50YXRpb246XSk6CisgICAgICAgICgtW1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgc2V0Q29udHJvbGxlcjpdKToK
KyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCBzdGFy
dFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
SW50ZXJuYWwgc3RvcFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrSW50ZXJuYWwgbGFzdE9yaWVudGF0aW9uXSk6CisgICAgICAgICgtW1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIGluaXRdKToKKyAgICAgICAgKC1bV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2sgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9jayBzZXRPcmllbnRhdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc2V0Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc3RhcnRVcGRhdGluZ10pOgorICAg
ICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayBzdG9wVXBkYXRpbmddKToK
KyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgbGFzdE9yaWVudGF0
aW9uXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
a0ludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFt
ZTp1c2VzRG9jdW1lbnRWaWV3czpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0RGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8
c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxv
dy4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYktpdC5leHAJKHJldmlzaW9uIDY0MjcxKQorKysgV2ViS2l0L21hYy9XZWJLaXQuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJEYXRhU291
cmNlCiAub2JqY19jbGFzc19uYW1lX1dlYkRhdGFiYXNlTWFuYWdlcgogLm9iamNfY2xhc3NfbmFt
ZV9XZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUKKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3Jp
ZW50YXRpb24KKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2sKIC5vYmpjX2NsYXNzX25hbWVfV2ViRG93bmxvYWQKIC5vYmpjX2NsYXNzX25hbWVfV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3CiAub2JqY19jbGFzc19uYW1lX1dlYkZvcm1EZWxlZ2F0ZQpJbmRl
eDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaD4K
KworQGNsYXNzIFdlYlZpZXc7CisKKy8vIFRoaXMgY2xhc3MgaXMgdGhlIE1hYyBpbXBsZW1lbnRh
dGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC4gSXQgaXMKKy8vIHBhc3NlZCB0byB0aGUg
UGFnZSBjb25zdHJ1Y3RvciBieSB0aGUgV2ViVmlldy4gSXQgaXMgYSBzaW1wbGUgcHJveHkgdG8K
Ky8vIGVpdGhlciB0aGUgcmVhbCBvciBtb2NrIGNsaWVudCB3aGljaCBpcyBwYXNzZWQgdG8gdGhl
IFdlYlZpZXcuIEl0IGlzCisvLyByZXF1aXJlZCBiZWNhdXNlIHRoZSBXZWJWaWV3IG11c3QgcGFz
cyBhIGNsaWVudCB0byB0aGUgUGFnZSBjb25zdHJ1Y3RvciwKKy8vIGJ1dCB0aGUgcmVhbCBvciBt
b2NrIGNsaWVudCBjYW4gbm90IGJlIHNwZWNpZmllZCB1bnRpbCBhZnRlciB0aGUgUGFnZSBoYXMK
Ky8vIGJlZW4gY29uc3RydWN0ZWQuCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAg
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoV2ViVmlldyopOworCisgICAgLy8gRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgbWV0aG9kcworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKFdl
YkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBz
dGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0
OworCitwcml2YXRlOgorICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKK307CkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKworI2ltcG9ydCAi
V2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlci5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6V2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQoV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJW
aWV3KQoreworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzZXRDb250cm9s
bGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICAvLyBU
aGlzIGlzIGNhbGxlZCBieSB0aGUgUGFnZSBjb25zdHJ1Y3RvciBiZWZvcmUgb3VyIFdlYlZpZXcg
aGFzIHRoZSBwcm92aWRlciBzZXQgdXAuCisgICAgLy8gSWdub3JlIHRoaXMgY2FsbC4gV2UgbWF1
bmFsbHkgc2V0IHRoZSBjb250cm9sbGVyIG9uIHRoZSBwcm92aWRlciBsYXRlci4KK30KKwordm9p
ZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgW1tt
X3dlYlZpZXcgX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJdIHN0YXJ0VXBkYXRpbmddOworfQor
Cit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQoreworICAg
IFtbbV93ZWJWaWV3IF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyXSBzdG9wVXBkYXRpbmddOwor
fQorCitEZXZpY2VPcmllbnRhdGlvbiogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6Omxhc3RP
cmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcmUoW1ttX3dlYlZpZXcgX2Rldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJdIGxhc3RPcmllbnRhdGlvbl0pOworfQpJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJu
YWw7CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb24gOiBOU09iamVjdCB7CisgICAg
V2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCogbV9pbnRlcm5hbDsKK30KKworLSAoaWQpaW5p
dFdpdGhDYW5Qcm92aWRlQWxwaGE6KGJvb2wpY2FuUHJvdmlkZUFscGhhIGFscGhhOihkb3VibGUp
YWxwaGEgY2FuUHJvdmlkZUJldGE6KGJvb2wpY2FuUHJvdmlkZUJldGEgYmV0YTooZG91YmxlKWJl
dGEgY2FuUHJvdmlkZUdhbW1hOihib29sKWNhblByb3ZpZGVHYW1tYSBnYW1tYTooZG91YmxlKWdh
bW1hOworCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0
aW9uLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwKKwor
LSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBhc3NSZWZQdHI8RGV2aWNlT3Jp
ZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIG1fb3JpZW50YXRp
b24gPSBjb3JlRGV2aWNlT3JpZW50YXRpb247CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uIChJbnRlcm5hbCkKKworLSAo
aWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2
aWNlT3JpZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgoreworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIG1faW50
ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29y
ZURldmljZU9yaWVudGF0aW9uOmNvcmVEZXZpY2VPcmllbnRhdGlvbl07CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uCisK
K0RldmljZU9yaWVudGF0aW9uKiBjb3JlKFdlYkRldmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlv
bikKK3sKKyAgICByZXR1cm4gb3JpZW50YXRpb24gPyBvcmllbnRhdGlvbi0+bV9pbnRlcm5hbC0+
bV9vcmllbnRhdGlvbi5nZXQoKSA6IDA7Cit9CisKKy0gKGlkKWluaXRXaXRoQ2FuUHJvdmlkZUFs
cGhhOihib29sKWNhblByb3ZpZGVBbHBoYSBhbHBoYTooZG91YmxlKWFscGhhIGNhblByb3ZpZGVC
ZXRhOihib29sKWNhblByb3ZpZGVCZXRhIGJldGE6KGRvdWJsZSliZXRhIGNhblByb3ZpZGVHYW1t
YTooYm9vbCljYW5Qcm92aWRlR2FtbWEgZ2FtbWE6KGRvdWJsZSlnYW1tYQoreworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRX
aXRoQ29yZURldmljZU9yaWVudGF0aW9uOkRldmljZU9yaWVudGF0aW9uOjpjcmVhdGUoY2FuUHJv
dmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwg
Z2FtbWEpXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
W21faW50ZXJuYWwgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCitAZW5kCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsOworCitA
aW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0IHsKKyAg
ICBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbCogbV9pbnRlcm5hbDsKK30K
KworQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ckludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRp
b24gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwKKworLSAoaWQpaW5pdFdp
dGhDb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOihEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIqKWNvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2Nv
bnRyb2xsZXIgPSBjb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOworICAgIHJldHVybiBz
ZWxmOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyIChJbnRlcm5hbCkKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvcmVEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2Vs
ZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2ludGVybmFsID0gW1tXZWJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOmNvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJdOworICAgIHJl
dHVybiBzZWxmOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyCisKK0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29yZShXZWJEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgcmV0dXJuIGNvbnRy
b2xsZXIgPyBjb250cm9sbGVyLT5tX2ludGVybmFsLT5tX2NvbnRyb2xsZXIgOiAwOworfQorCitA
ZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVySW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKK30KKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXJJbnRlcm5hbCA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKK30KKworQGVuZAor
CitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciAoSW50ZXJuYWwpCisK
Ky0gKGlkKWluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjooV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29y
ZShXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKTsKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VP
cmllbnRhdGlvbi5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uLmg+Cisj
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb25J
bnRlcm5hbCA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGV2aWNl
T3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247Cit9CisKKy0gKGlkKWluaXRXaXRoQ29yZURldmlj
ZU9yaWVudGF0aW9uOihQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiljb3Jl
RGV2aWNlT3JpZW50YXRpb247CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRp
b24gKEludGVybmFsKQorCistIChpZClpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjooUGFz
c1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4pY29yZURldmljZU9yaWVudGF0aW9u
OworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBjb3JlKFdlYkRldmljZU9y
aWVudGF0aW9uKik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uOworQGNsYXNzIFdlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKKworQHByb3RvY29sIFdlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXIgPE5TT2JqZWN0PgorLSAodm9pZClzZXRDb250cm9sbGVyOihXZWJEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CistICh2b2lkKXN0YXJ0VXBkYXRpbmc7
CistICh2b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRldmljZU9yaWVudGF0aW9uKilsYXN0T3Jp
ZW50YXRpb247CitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXIuaCIKKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
SW50ZXJuYWw7CitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CitAY2xhc3MgV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyOworCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrIDogTlNPYmplY3Q8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gewor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwqIG1faW50ZXJuYWw7
Cit9CisKKy0gKGlkKWluaXQ7CistICh2b2lkKXNldE9yaWVudGF0aW9uOihXZWJEZXZpY2VPcmll
bnRhdGlvbiopb3JpZW50YXRpb247CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0JKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2subW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViRGV2
aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
QGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwK
KworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOihEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2sqKWNvcmVDbGllbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2NvcmUuc2V0
KGNvcmVDbGllbnQpOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldE9yaWVudGF0
aW9uOihXZWJEZXZpY2VPcmllbnRhdGlvbiopb3JpZW50YXRpb24KK3sKKyAgICBtX2NvcmUtPnNl
dE9yaWVudGF0aW9uKGNvcmUob3JpZW50YXRpb24pKTsKK30KKworLSAodm9pZClzZXRDb250cm9s
bGVyOihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXIKK3sKKyAgICBt
X2NvcmUtPnNldENvbnRyb2xsZXIoY29yZShjb250cm9sbGVyKSk7Cit9CisKKy0gKHZvaWQpc3Rh
cnRVcGRhdGluZworeworICAgIG1fY29yZS0+c3RhcnRVcGRhdGluZygpOworfQorCistICh2b2lk
KXN0b3BVcGRhdGluZworeworICAgIG1fY29yZS0+c3RvcFVwZGF0aW5nKCk7Cit9CisKKy0gKFdl
YkRldmljZU9yaWVudGF0aW9uKilsYXN0T3JpZW50YXRpb24KK3sKKyAgICByZXR1cm4gW1tXZWJE
ZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9j
b3JlLT5sYXN0T3JpZW50YXRpb24oKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrCisKKy0gKGlkKWluaXQ7Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0gbmV3IERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jaygpOworICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jazptb2NrQ2xpZW50XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClkZWFsbG9jCit7CisgICAgW3N1cGVyIGRlYWxsb2NdOworICAgIFttX2ludGVybmFsIHJl
bGVhc2VdOworfQorCistICh2b2lkKXNldE9yaWVudGF0aW9uOihXZWJEZXZpY2VPcmllbnRhdGlv
biopb3JpZW50YXRpb24KK3sKKyAgICBbbV9pbnRlcm5hbCBzZXRPcmllbnRhdGlvbjpvcmllbnRh
dGlvbl07Cit9CisKKy0gKHZvaWQpc2V0Q29udHJvbGxlcjooV2ViRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKiljb250cm9sbGVyCit7CisgICAgW21faW50ZXJuYWwgc2V0Q29udHJvbGxlcjpj
b250cm9sbGVyXTsKK30KKworLSAodm9pZClzdGFydFVwZGF0aW5nCit7CisgICAgW21faW50ZXJu
YWwgc3RhcnRVcGRhdGluZ107Cit9CisKKy0gKHZvaWQpc3RvcFVwZGF0aW5nCit7CisgICAgW21f
aW50ZXJuYWwgc3RvcFVwZGF0aW5nXTsKK30KKworLSAoV2ViRGV2aWNlT3JpZW50YXRpb24qKWxh
c3RPcmllbnRhdGlvbgoreworICAgIHJldHVybiBbbV9pbnRlcm5hbCBsYXN0T3JpZW50YXRpb25d
OworfQorCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2tJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJ
bnRlcm5hbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCIKKworI2ltcG9ydCA8V2ViQ29y
ZS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KKyNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4K
KworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIDog
TlNPYmplY3QgeworQHB1YmxpYworICAgIE93blB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2s+IG1fY29yZTsKK30KKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrOihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqKWNv
cmVDbGllbnQ7CisKKy0gKHZvaWQpc2V0T3JpZW50YXRpb246KFdlYkRldmljZU9yaWVudGF0aW9u
KilvcmllbnRhdGlvbjsKKworLSAodm9pZClzZXRDb250cm9sbGVyOihXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CistICh2b2lkKXN0YXJ0VXBkYXRpbmc7CistICh2
b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRldmljZU9yaWVudGF0aW9uKilsYXN0T3JpZW50YXRp
b247CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2NDI3MSkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw5IEBACiAjaW1wb3J0ICJXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YkRlZmF1bHRVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbXBv
cnQgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJEb2N1bWVudC5oIgog
I2ltcG9ydCAiV2ViRG9jdW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRG93bmxvYWQuaCIK
QEAgLTY4Miw2ICs2ODUsOSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBwYWdlQ2xpZW50
cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50KHNlbGYpOwogI2VuZGlmCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
KyAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudChzZWxmKTsKKyNlbmRpZgogICAgIF9wcml2YXRlLT5wYWdlID0gbmV3
IFBhZ2UocGFnZUNsaWVudHMpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0YXJ0TWVk
aWEoW3NlbGYgd2luZG93XSk7CkBAIC01ODYwLDYgKzU4NjYsMjcgQEAgLSAodm9pZClfc2NoZWR1
bGVHbGliQ29udGV4dEl0ZXJhdGlvbnMKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV2ViVmll
dyAoV2ViVmlld0RldmljZU9yaWVudGF0aW9uKQorCistICh2b2lkKV9zZXREZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyOihpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPilkZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKSB7CisgICAgICAgIF9wcml2YXRl
LT5tX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgPSBkZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
OworICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvcmVDb250cm9sbGVyID0g
X3ByaXZhdGUtPnBhZ2UtPmRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpOworICAgICAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBbW1dlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOmNvcmVDb250cm9sbGVyXTsKKyAgICAgICAgW19wcml2YXRlLT5tX2RldmljZU9y
aWVudGF0aW9uUHJvdmlkZXIgc2V0Q29udHJvbGxlcjpjb250cm9sbGVyXTsKKyAgICB9Cit9CisK
Ky0gKGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+KV9kZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKQorICAgICAgICByZXR1cm4gX3ByaXZhdGUtPm1f
ZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCisK
IEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3R2VvbG9jYXRpb24pCiAKIC0gKHZvaWQp
X3NldEdlb2xvY2F0aW9uUHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KWdlb2xv
Y2F0aW9uUHJvdmlkZXIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiA2
NDI3MSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwxMiArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7
CiB9CiAKK0BjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIEBjbGFzcyBXZWJJbnNw
ZWN0b3I7CiBAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIEBjbGFzcyBXZWJQbHVnaW5EYXRhYmFz
ZTsKIEBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIEBjbGFzcyBXZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXI7CiBAcHJvdG9jb2wgV2ViRm9ybURlbGVnYXRlOworQHByb3RvY29sIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXI7CiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Qcm92aWRlcjsKICNp
ZiBFTkFCTEUoVklERU8pCiBAY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcjsKQEAg
LTE3NCw1ICsxNzYsNiBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3Qgewog
ICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIGdsaWJSdW5Mb29wT2JzZXJ2ZXI7CiAjZW5kaWYKICAg
ICBpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBfZ2VvbG9jYXRpb25Qcm92aWRlcjsKKyAgICBp
ZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPiBtX2RldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXI7CiB9CiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNp
b24gNjQyNzEpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDE1IEBACiAKIEBjbGFzcyBOU0Vycm9yOwogQGNsYXNzIFdl
YkZyYW1lOworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uOworQGNsYXNzIFdlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjsKIEBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogQGNs
YXNzIFdlYkluc3BlY3RvcjsKIEBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIEBjbGFzcyBXZWJTY3Jp
cHRXb3JsZDsKIEBjbGFzcyBXZWJUZXh0SXRlcmF0b3I7CiAKK0Bwcm90b2NvbCBXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOwogQHByb3RvY29sIFdlYkZvcm1EZWxlZ2F0ZTsKIAogZXh0ZXJu
IE5TU3RyaW5nICpfV2ViQ2FuR29CYWNrS2V5OwpAQCAtNjA0LDYgKzYwNywxMSBAQCBAaW50ZXJm
YWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWlsCiAtIChCT09MKV9zZWxlY3Rpb25Jc0Fs
bDsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RGV2aWNlT3JpZW50YXRpb24p
CistICh2b2lkKV9zZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOihpZDxXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyPilkZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOworLSAoaWQ8V2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlcj4pX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CitAZW5k
CisKIEBwcm90b2NvbCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyIDxOU09iamVjdD4KIC0gKHZvaWQp
cmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpdW5yZWdpc3Rlcldl
YlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQzMDkpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wNy0yOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCBMYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oKSBvbiBNYWMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzE4MQorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoY3JlYXRlV2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMjkgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVu
LgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkocmV2aXNpb24gNjQyNzEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNp
bXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkVkaXRpbmdEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxSZXByZXNlbnRhdGlv
bkludGVybmFsLmg+CkBAIC0yOTQsNiArMjk1LDcgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5n
RGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNl
TG9hZERlbGVnYXRlXTsKICAgICBbd2ViVmlldyBfc2V0R2VvbG9jYXRpb25Qcm92aWRlcjpbTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXV07CisgICAgW3dlYlZpZXcgX3NldERldmljZU9y
aWVudGF0aW9uUHJvdmlkZXI6W1tXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayBhbGxv
Y10gaW5pdF1dOwogCiAgICAgLy8gUmVnaXN0ZXIgdGhlIHNhbWUgc2NoZW1lcyB0aGF0IFNhZmFy
aSBkb2VzCiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZCJdOwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNjQyNzEpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDkgKzQ0LDExIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViQXBwbGljYXRpb25DYWNo
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkJhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkNvcmVTdGF0aXN0aWNzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRE9NT3BlcmF0aW9u
c1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRP
TU9wZXJhdGlvbnNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVW
aWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaD4K
QEAgLTMyMiw5ICszMjQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RG9tYWlu
UmVsYQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3Rz
LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAz
MzUuCi0KKyAgICAvLyBEdW1wUmVuZGVyVHJlZSBjb25maWd1cmVkIHRoZSBXZWJWaWV3IHRvIHVz
ZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay4KKyAgICBpZDxXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyPiBwcm92aWRlciA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIF9kZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyXTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ayogbW9ja1Byb3ZpZGVyID0gc3RhdGljX2Nhc3Q8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2sqPihwcm92aWRlcik7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9u
ID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDYW5Qcm92aWRlQWxwaGE6
Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblByb3ZpZGVCZXRhOmNhblByb3ZpZGVCZXRh
IGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJvdmlkZUdhbW1hIGdhbW1hOmdhbW1hXTsK
KyAgICBbbW9ja1Byb3ZpZGVyIHNldE9yaWVudGF0aW9uOm9yaWVudGF0aW9uXTsKIH0KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63060</attachid>
            <date>2010-07-30 08:22:48 -0700</date>
            <delta_ts>2010-08-02 05:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43181-20100730162245.patch</filename>
            <type>text/plain</type>
            <size>51118</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjQzNTYpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhv
b2sgdXAgTGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24g
TWFjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMx
ODEKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEw
LTA3LTI2ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9sbGlAcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY0MzU2KQorKysgV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0
LDE4IEBACiAJCTUxRkRDNEQzMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkRD
NEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjQxQURGNTBCMUJDNDhB
MDA0MDEyQkQgLyogV2ViQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNDFBREY2MEIx
QkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREY0MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5t
bSAqLzsgfTsKKwkJNTk4QUQ5MUExMjAxQ0VDOTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aCAqLzsgfTsKKwkJNTk4QUQ5MUUxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
Lm1tICovOyB9OworCQk1OThBRDkyMDEyMDFDRjA3MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
OEFEOTFGMTIwMUNGMDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5OEFEOTIyMTIwMUNG
MTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTIxMTIwMUNGMTAwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvbi5tbSAqLzsgfTsKKwkJNTk4QUQ5MjQxMjAxQ0YxOTAwQUJBRTRF
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTIzMTIwMUNGMTkwMEFCQUU0RSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmggKi87IH07CisJCTU5OEFEOTI2MTIwMUNGMjUwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjUxMjAxQ0YyNTAwQUJBRTRF
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTk4QUQ5MjgxMjAxQ0YzMjAwQUJBRTRF
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovOyB9OworCQk1OThBRDkyQTEy
MDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5
MjkxMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50
ZXJuYWwuaCAqLzsgfTsKKwkJNTk4QURBNDYxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTk4QURBNjMxMjAyMkI0RDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTk4QURBNjIxMjAyMkI0RDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5oICovOyB9OworCQk1OThBREE2NTEyMDIyQjU2MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTk4QURBNjQxMjAyMkI1NjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5tbSAqLzsgfTsKKwkJNTk4QURBNjcxMjAyMkI1RjAwQUJBRTRFIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBREE2NjEyMDIyQjVGMDBBQkFFNEUgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaCAqLzsgfTsKIAkJNUQ3QkY4MTQw
QzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYklu
c3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMzBDMkExRDkwMDA4
Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9OwogCQk1REU4M0E3QTBEMEY3Rjk0MDBDQUQx
MkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURFODNBNzQwRDBGN0Y5NDAwQ0FEMTJBIC8q
IFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgKi87IH07CkBAIC01MTcsNiArNTI5LDE4
IEBACiAJCTUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSGlzdG9yeUl0ZW1Qcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNDFBREYzMEIxQkM0OEEwMDQwMTJC
RCAvKiBXZWJDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0MUFERjQwQjFCQzQ4QTAwNDAx
MkJEIC8qIFdlYkNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBRDkxOTEy
MDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU5OEFEOTFGMTIwMUNGMDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmll
bnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBRDkyMTEyMDFDRjEw
MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MjMxMjAxQ0YxOTAwQUJBRTRFIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1OThBRDkyNTEyMDFDRjI1MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5
MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5OEFE
OTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0lu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBREE2MjEyMDIy
QjREMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBREE2NDEyMDIyQjU2MDBBQkFFNEUg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThBREE2NjEyMDIyQjVGMDBBQkFFNEUgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZE
IC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0JGODEzMEMyQTFE
OTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1REU4M0E3NTBEMEY3Rjk0MDBDQUQxMkEgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1lID0gRW5n
bGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5p
Yjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTEwNCw2ICsxMTI4LDE2IEBACiAJ
CTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJWaWV3ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OThBREE2NjEyMDIyQjVGMDBBQkFFNEUgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaCAqLywKKwkJCQk1OThBREE2
NDEyMDIyQjU2MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tICov
LAorCQkJCTU5OEFEQTYyMTIwMjJCNEQwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuaCAqLywKKwkJCQk1OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlci5oICovLAorCQkJCTU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi8sCisJCQkJNTk4
QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lm1tICovLAorCQkJCTU5OEFEOTI1MTIwMUNGMjUwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5oICovLAorCQkJCTU5OEFEOTIzMTIwMUNGMTkwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmggKi8sCisJCQkJNTk4QUQ5MjExMjAxQ0YxMDAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uLm1tICovLAorCQkJCTU5OEFEOTFGMTIwMUNG
MDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5oICovLAogCQkJCUY1MkNBNkJEMDJE
RjlEMEYwMTg2MzVDQSAvKiBIVE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAv
KiBQREYgKi8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAq
LywKQEAgLTEyMjksNiArMTI2Myw4IEBACiAJCUY1QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBX
ZWJDb3JlU3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50Lm1tICovLAorCQkJCTU5OEFEOTE5MTIwMUNFQzkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudC5oICovLAogCQkJCUI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJB
cHBsaWNhdGlvbkNhY2hlLmggKi8sCiAJCQkJQjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYyIC8qIFdl
YkFwcGxpY2F0aW9uQ2FjaGUubW0gKi8sCiAJCQkJNTFDQkZDQUMwRDEwRTZDNTAwMkRCRjUxIC8q
IFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi8sCkBAIC0xNTU3LDYgKzE1OTMsMTQgQEAK
IAkJCQk5Mzk4MTA3MTA4MjRCRjAxMDA4REYwMzggLyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNCMEY4MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQ0ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJX
b3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk4QUQ5MUExMjAxQ0VDOTAwQUJB
RTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1
OThBRDkyMDEyMDFDRjA3MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU5OEFEOTI0MTIwMUNGMTkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OThBRDkyNjEyMDFDRjI1MDBBQkFF
NEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTU5OEFEOTJBMTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OThBREE0NjEyMDIyNzUwMDBB
QkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTk4QURBNjMxMjAyMkI0RDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk4QURBNjcxMjAyMkI1RjAwQUJBRTRFIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTE5MTYsNiArMTk2MCwxMCBAQAogCQkJCTkzOTgxMEU4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJW
aWV3RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNCMEY5MTA3NkMzRjcwMDAzOUI5
NiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQ0ODUwMTAz
MzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTU5OEFEOTFFMTIwMUNFQ0YwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTU5OEFEOTIyMTIwMUNGMTAwMEFCQUU0RSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU5OEFEOTI4MTIwMUNGMzIwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTU5OEFEQTY1MTIwMjJCNTYwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDM1NikKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTAt
MDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgTGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24gTWFjLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEKKworICAgICAgICBUaGlz
IHBhdGNoIGhvb2tzIHVwIHRoZSBtb2NrIGRldmljZSBvcmllbnRhdGlvbiBjbGllbnQgb24gTWFj
IGZvciB1c2UKKyAgICAgICAgaW4gRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgVGhlIHBhdGNo
IGFkZHMgYSBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgZm9yIE1hYy4gVGhpcyBjbGll
bnQgYWN0cworICAgICAgICBhcyBhIHByb3h5IHRvIGVpdGhlciBhIHJlYWwgb3IgbW9jayBkZXZp
Y2Ugb3JpZW50YXRpb24gcHJvdmlkZXIsIGJvdGggb2YKKyAgICAgICAgd2hpY2ggaW1wbGVtZW50
IGEgbmV3IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgaW50ZXJmYWNlLgorCisgICAgICAg
IFRoZSBwcm92aWRlciBpcyBjcmVhdGVkIGJ5IHRoZSBlbWJlZGRlciBhbmQgcGFzc2VkIHRvIHRo
ZSBXZWJWaWV3LCBmcm9tCisgICAgICAgIHdoZXJlIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
IGNhbiBhY2Nlc3MgaXQuCisKKyAgICAgICAgVGhlIG1vY2sgcHJvdmlkZXIsIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLCBpcyBhIHdyYXBwZXIgYXJvdW5kCisgICAgICAgIHRoZSBl
eGlzdGluZyBXZWJDb3JlIG1vY2suCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbTogQWRkZWQuCisgICAgICAgIChXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAgICAo
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDo6bGFzdE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBXZWJLaXQuZXhw
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaDogQWRkZWQuCisgICAg
ICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkRldmljZU9yaWVudGF0aW9uIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOldlYkNv
cmU6Ol0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9u
IGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmFscGhhOmNhblByb3ZpZGVCZXRhOmJldGE6Y2FuUHJv
dmlkZUdhbW1hOmdhbW1hOl0pOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbiBkZWFs
bG9jXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIg
aW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOl0pOgorICAgICAgICAoY29y
ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uSW50
ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2suaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgc2V0T3JpZW50YXRpb246XSk6CisgICAgICAgICgtW1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgc2V0Q29udHJvbGxlcjpdKToK
KyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbCBzdGFy
dFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
SW50ZXJuYWwgc3RvcFVwZGF0aW5nXSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrSW50ZXJuYWwgbGFzdE9yaWVudGF0aW9uXSk6CisgICAgICAgICgtW1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIGluaXRdKToKKyAgICAgICAgKC1bV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2sgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9jayBzZXRPcmllbnRhdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc2V0Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc3RhcnRVcGRhdGluZ10pOgorICAg
ICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayBzdG9wVXBkYXRpbmddKToK
KyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgbGFzdE9yaWVudGF0
aW9uXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
a0ludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFt
ZTp1c2VzRG9jdW1lbnRWaWV3czpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0RGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8
c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxv
dy4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYktpdC5leHAJKHJldmlzaW9uIDY0MzU2KQorKysgV2ViS2l0L21hYy9XZWJLaXQuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJEYXRhU291
cmNlCiAub2JqY19jbGFzc19uYW1lX1dlYkRhdGFiYXNlTWFuYWdlcgogLm9iamNfY2xhc3NfbmFt
ZV9XZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUKKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3Jp
ZW50YXRpb24KKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2sKIC5vYmpjX2NsYXNzX25hbWVfV2ViRG93bmxvYWQKIC5vYmpjX2NsYXNzX25hbWVfV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3CiAub2JqY19jbGFzc19uYW1lX1dlYkZvcm1EZWxlZ2F0ZQpJbmRl
eDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaD4K
KworQGNsYXNzIFdlYlZpZXc7CisKKy8vIFRoaXMgY2xhc3MgaXMgdGhlIE1hYyBpbXBsZW1lbnRh
dGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC4gSXQgaXMKKy8vIHBhc3NlZCB0byB0aGUg
UGFnZSBjb25zdHJ1Y3RvciBieSB0aGUgV2ViVmlldy4gSXQgaXMgYSBzaW1wbGUgcHJveHkgdG8K
Ky8vIGVpdGhlciB0aGUgcmVhbCBvciBtb2NrIGNsaWVudCB3aGljaCBpcyBwYXNzZWQgdG8gdGhl
IFdlYlZpZXcuIEl0IGlzCisvLyByZXF1aXJlZCBiZWNhdXNlIHRoZSBXZWJWaWV3IG11c3QgcGFz
cyBhIGNsaWVudCB0byB0aGUgUGFnZSBjb25zdHJ1Y3RvciwKKy8vIGJ1dCB0aGUgcmVhbCBvciBt
b2NrIGNsaWVudCBjYW4gbm90IGJlIHNwZWNpZmllZCB1bnRpbCBhZnRlciB0aGUgUGFnZSBoYXMK
Ky8vIGJlZW4gY29uc3RydWN0ZWQuCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAg
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoV2ViVmlldyopOworCisgICAgLy8gRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgbWV0aG9kcworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKFdl
YkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBz
dGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0
OworCitwcml2YXRlOgorICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKK307CkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKworI2ltcG9ydCAi
V2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlci5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6V2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQoV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJW
aWV3KQoreworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzZXRDb250cm9s
bGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICAvLyBU
aGlzIGlzIGNhbGxlZCBieSB0aGUgUGFnZSBjb25zdHJ1Y3RvciBiZWZvcmUgb3VyIFdlYlZpZXcg
aGFzIHRoZSBwcm92aWRlciBzZXQgdXAuCisgICAgLy8gSWdub3JlIHRoaXMgY2FsbC4gV2UgbWF1
bmFsbHkgc2V0IHRoZSBjb250cm9sbGVyIG9uIHRoZSBwcm92aWRlciBsYXRlci4KK30KKwordm9p
ZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgW1tt
X3dlYlZpZXcgX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJdIHN0YXJ0VXBkYXRpbmddOworfQor
Cit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQoreworICAg
IFtbbV93ZWJWaWV3IF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyXSBzdG9wVXBkYXRpbmddOwor
fQorCitEZXZpY2VPcmllbnRhdGlvbiogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6Omxhc3RP
cmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcmUoW1ttX3dlYlZpZXcgX2Rldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJdIGxhc3RPcmllbnRhdGlvbl0pOworfQpJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJu
YWw7CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb24gOiBOU09iamVjdCB7CisgICAg
V2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCogbV9pbnRlcm5hbDsKK30KKworLSAoaWQpaW5p
dFdpdGhDYW5Qcm92aWRlQWxwaGE6KGJvb2wpY2FuUHJvdmlkZUFscGhhIGFscGhhOihkb3VibGUp
YWxwaGEgY2FuUHJvdmlkZUJldGE6KGJvb2wpY2FuUHJvdmlkZUJldGEgYmV0YTooZG91YmxlKWJl
dGEgY2FuUHJvdmlkZUdhbW1hOihib29sKWNhblByb3ZpZGVHYW1tYSBnYW1tYTooZG91YmxlKWdh
bW1hOworCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0
aW9uLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwKKwor
LSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBhc3NSZWZQdHI8RGV2aWNlT3Jp
ZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIG1fb3JpZW50YXRp
b24gPSBjb3JlRGV2aWNlT3JpZW50YXRpb247CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uIChJbnRlcm5hbCkKKworLSAo
aWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2
aWNlT3JpZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgoreworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIG1faW50
ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29y
ZURldmljZU9yaWVudGF0aW9uOmNvcmVEZXZpY2VPcmllbnRhdGlvbl07CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uCisK
K0RldmljZU9yaWVudGF0aW9uKiBjb3JlKFdlYkRldmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlv
bikKK3sKKyAgICByZXR1cm4gb3JpZW50YXRpb24gPyBvcmllbnRhdGlvbi0+bV9pbnRlcm5hbC0+
bV9vcmllbnRhdGlvbi5nZXQoKSA6IDA7Cit9CisKKy0gKGlkKWluaXRXaXRoQ2FuUHJvdmlkZUFs
cGhhOihib29sKWNhblByb3ZpZGVBbHBoYSBhbHBoYTooZG91YmxlKWFscGhhIGNhblByb3ZpZGVC
ZXRhOihib29sKWNhblByb3ZpZGVCZXRhIGJldGE6KGRvdWJsZSliZXRhIGNhblByb3ZpZGVHYW1t
YTooYm9vbCljYW5Qcm92aWRlR2FtbWEgZ2FtbWE6KGRvdWJsZSlnYW1tYQoreworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRX
aXRoQ29yZURldmljZU9yaWVudGF0aW9uOkRldmljZU9yaWVudGF0aW9uOjpjcmVhdGUoY2FuUHJv
dmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwg
Z2FtbWEpXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
W21faW50ZXJuYWwgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCitAZW5kCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsOworCitA
aW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0IHsKKyAg
ICBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbCogbV9pbnRlcm5hbDsKK30K
KworQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ckludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRp
b24gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwKKworLSAoaWQpaW5pdFdp
dGhDb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOihEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIqKWNvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2Nv
bnRyb2xsZXIgPSBjb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOworICAgIHJldHVybiBz
ZWxmOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyIChJbnRlcm5hbCkKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvcmVEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2Vs
ZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2ludGVybmFsID0gW1tXZWJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOmNvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJdOworICAgIHJl
dHVybiBzZWxmOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyCisKK0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29yZShXZWJEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgcmV0dXJuIGNvbnRy
b2xsZXIgPyBjb250cm9sbGVyLT5tX2ludGVybmFsLT5tX2NvbnRyb2xsZXIgOiAwOworfQorCitA
ZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVySW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKK30KKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXJJbnRlcm5hbCA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKK30KKworQGVuZAor
CitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciAoSW50ZXJuYWwpCisK
Ky0gKGlkKWluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjooV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29y
ZShXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKTsKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VP
cmllbnRhdGlvbi5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uLmg+Cisj
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb25J
bnRlcm5hbCA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGV2aWNl
T3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247Cit9CisKKy0gKGlkKWluaXRXaXRoQ29yZURldmlj
ZU9yaWVudGF0aW9uOihQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiljb3Jl
RGV2aWNlT3JpZW50YXRpb247CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRp
b24gKEludGVybmFsKQorCistIChpZClpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjooUGFz
c1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4pY29yZURldmljZU9yaWVudGF0aW9u
OworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBjb3JlKFdlYkRldmljZU9y
aWVudGF0aW9uKik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uOworQGNsYXNzIFdlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKKworQHByb3RvY29sIFdlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXIgPE5TT2JqZWN0PgorLSAodm9pZClzZXRDb250cm9sbGVyOihXZWJEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CistICh2b2lkKXN0YXJ0VXBkYXRpbmc7
CistICh2b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRldmljZU9yaWVudGF0aW9uKilsYXN0T3Jp
ZW50YXRpb247CitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXIuaCIKKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
SW50ZXJuYWw7CitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247CitAY2xhc3MgV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyOworCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrIDogTlNPYmplY3Q8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gewor
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwqIG1faW50ZXJuYWw7
Cit9CisKKy0gKGlkKWluaXQ7CistICh2b2lkKXNldE9yaWVudGF0aW9uOihXZWJEZXZpY2VPcmll
bnRhdGlvbiopb3JpZW50YXRpb247CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0JKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2subW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViRGV2
aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
QGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwK
KworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOihEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2sqKWNvcmVDbGllbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2NvcmUuc2V0
KGNvcmVDbGllbnQpOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldE9yaWVudGF0
aW9uOihXZWJEZXZpY2VPcmllbnRhdGlvbiopb3JpZW50YXRpb24KK3sKKyAgICBtX2NvcmUtPnNl
dE9yaWVudGF0aW9uKGNvcmUob3JpZW50YXRpb24pKTsKK30KKworLSAodm9pZClzZXRDb250cm9s
bGVyOihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXIKK3sKKyAgICBt
X2NvcmUtPnNldENvbnRyb2xsZXIoY29yZShjb250cm9sbGVyKSk7Cit9CisKKy0gKHZvaWQpc3Rh
cnRVcGRhdGluZworeworICAgIG1fY29yZS0+c3RhcnRVcGRhdGluZygpOworfQorCistICh2b2lk
KXN0b3BVcGRhdGluZworeworICAgIG1fY29yZS0+c3RvcFVwZGF0aW5nKCk7Cit9CisKKy0gKFdl
YkRldmljZU9yaWVudGF0aW9uKilsYXN0T3JpZW50YXRpb24KK3sKKyAgICByZXR1cm4gW1tXZWJE
ZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9j
b3JlLT5sYXN0T3JpZW50YXRpb24oKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrCisKKy0gKGlkKWluaXQ7Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0gbmV3IERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jaygpOworICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jazptb2NrQ2xpZW50XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClkZWFsbG9jCit7CisgICAgW3N1cGVyIGRlYWxsb2NdOworICAgIFttX2ludGVybmFsIHJl
bGVhc2VdOworfQorCistICh2b2lkKXNldE9yaWVudGF0aW9uOihXZWJEZXZpY2VPcmllbnRhdGlv
biopb3JpZW50YXRpb24KK3sKKyAgICBbbV9pbnRlcm5hbCBzZXRPcmllbnRhdGlvbjpvcmllbnRh
dGlvbl07Cit9CisKKy0gKHZvaWQpc2V0Q29udHJvbGxlcjooV2ViRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyKiljb250cm9sbGVyCit7CisgICAgW21faW50ZXJuYWwgc2V0Q29udHJvbGxlcjpj
b250cm9sbGVyXTsKK30KKworLSAodm9pZClzdGFydFVwZGF0aW5nCit7CisgICAgW21faW50ZXJu
YWwgc3RhcnRVcGRhdGluZ107Cit9CisKKy0gKHZvaWQpc3RvcFVwZGF0aW5nCit7CisgICAgW21f
aW50ZXJuYWwgc3RvcFVwZGF0aW5nXTsKK30KKworLSAoV2ViRGV2aWNlT3JpZW50YXRpb24qKWxh
c3RPcmllbnRhdGlvbgoreworICAgIHJldHVybiBbbV9pbnRlcm5hbCBsYXN0T3JpZW50YXRpb25d
OworfQorCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2tJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJ
bnRlcm5hbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCIKKworI2ltcG9ydCA8V2ViQ29y
ZS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KKyNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4K
KworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIDog
TlNPYmplY3QgeworQHB1YmxpYworICAgIE93blB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2s+IG1fY29yZTsKK30KKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrOihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqKWNv
cmVDbGllbnQ7CisKKy0gKHZvaWQpc2V0T3JpZW50YXRpb246KFdlYkRldmljZU9yaWVudGF0aW9u
KilvcmllbnRhdGlvbjsKKworLSAodm9pZClzZXRDb250cm9sbGVyOihXZWJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CistICh2b2lkKXN0YXJ0VXBkYXRpbmc7CistICh2
b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRldmljZU9yaWVudGF0aW9uKilsYXN0T3JpZW50YXRp
b247CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2NDM1NikKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw5IEBACiAjaW1wb3J0ICJXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YkRlZmF1bHRVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbXBv
cnQgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJEb2N1bWVudC5oIgog
I2ltcG9ydCAiV2ViRG9jdW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRG93bmxvYWQuaCIK
QEAgLTY4Miw2ICs2ODUsOSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBwYWdlQ2xpZW50
cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50KHNlbGYpOwogI2VuZGlmCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
KyAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudChzZWxmKTsKKyNlbmRpZgogICAgIF9wcml2YXRlLT5wYWdlID0gbmV3
IFBhZ2UocGFnZUNsaWVudHMpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0YXJ0TWVk
aWEoW3NlbGYgd2luZG93XSk7CkBAIC01ODYwLDYgKzU4NjYsMjcgQEAgLSAodm9pZClfc2NoZWR1
bGVHbGliQ29udGV4dEl0ZXJhdGlvbnMKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV2ViVmll
dyAoV2ViVmlld0RldmljZU9yaWVudGF0aW9uKQorCistICh2b2lkKV9zZXREZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyOihpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPilkZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKSB7CisgICAgICAgIF9wcml2YXRl
LT5tX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgPSBkZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
OworICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvcmVDb250cm9sbGVyID0g
X3ByaXZhdGUtPnBhZ2UtPmRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpOworICAgICAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBbW1dlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOmNvcmVDb250cm9sbGVyXTsKKyAgICAgICAgW19wcml2YXRlLT5tX2RldmljZU9y
aWVudGF0aW9uUHJvdmlkZXIgc2V0Q29udHJvbGxlcjpjb250cm9sbGVyXTsKKyAgICB9Cit9CisK
Ky0gKGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+KV9kZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKQorICAgICAgICByZXR1cm4gX3ByaXZhdGUtPm1f
ZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCisK
IEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3R2VvbG9jYXRpb24pCiAKIC0gKHZvaWQp
X3NldEdlb2xvY2F0aW9uUHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KWdlb2xv
Y2F0aW9uUHJvdmlkZXIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiA2
NDM1NikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwxMiArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7
CiB9CiAKK0BjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIEBjbGFzcyBXZWJJbnNw
ZWN0b3I7CiBAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIEBjbGFzcyBXZWJQbHVnaW5EYXRhYmFz
ZTsKIEBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIEBjbGFzcyBXZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXI7CiBAcHJvdG9jb2wgV2ViRm9ybURlbGVnYXRlOworQHByb3RvY29sIFdlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXI7CiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Qcm92aWRlcjsKICNp
ZiBFTkFCTEUoVklERU8pCiBAY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcjsKQEAg
LTE3NCw1ICsxNzYsNiBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3Qgewog
ICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIGdsaWJSdW5Mb29wT2JzZXJ2ZXI7CiAjZW5kaWYKICAg
ICBpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBfZ2VvbG9jYXRpb25Qcm92aWRlcjsKKyAgICBp
ZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPiBtX2RldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXI7CiB9CiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNp
b24gNjQzNTYpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDE1IEBACiAKIEBjbGFzcyBOU0Vycm9yOwogQGNsYXNzIFdl
YkZyYW1lOworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uOworQGNsYXNzIFdlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjsKIEBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogQGNs
YXNzIFdlYkluc3BlY3RvcjsKIEBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIEBjbGFzcyBXZWJTY3Jp
cHRXb3JsZDsKIEBjbGFzcyBXZWJUZXh0SXRlcmF0b3I7CiAKK0Bwcm90b2NvbCBXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOwogQHByb3RvY29sIFdlYkZvcm1EZWxlZ2F0ZTsKIAogZXh0ZXJu
IE5TU3RyaW5nICpfV2ViQ2FuR29CYWNrS2V5OwpAQCAtNjA0LDYgKzYwNywxMSBAQCBAaW50ZXJm
YWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWlsCiAtIChCT09MKV9zZWxlY3Rpb25Jc0Fs
bDsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RGV2aWNlT3JpZW50YXRpb24p
CistICh2b2lkKV9zZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOihpZDxXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyPilkZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOworLSAoaWQ8V2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlcj4pX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CitAZW5k
CisKIEBwcm90b2NvbCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyIDxOU09iamVjdD4KIC0gKHZvaWQp
cmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpdW5yZWdpc3Rlcldl
YlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQzNTYpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wNy0yOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCBMYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oKSBvbiBNYWMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzE4MQorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoY3JlYXRlV2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMzAgIFN0ZXZlIEJsb2NrICA8
c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2Nr
LgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkocmV2aXNpb24gNjQzNTYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNp
bXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkVkaXRpbmdEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxSZXByZXNlbnRhdGlv
bkludGVybmFsLmg+CkBAIC0yOTQsNiArMjk1LDcgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5n
RGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNl
TG9hZERlbGVnYXRlXTsKICAgICBbd2ViVmlldyBfc2V0R2VvbG9jYXRpb25Qcm92aWRlcjpbTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXV07CisgICAgW3dlYlZpZXcgX3NldERldmljZU9y
aWVudGF0aW9uUHJvdmlkZXI6W1tXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayBhbGxv
Y10gaW5pdF1dOwogCiAgICAgLy8gUmVnaXN0ZXIgdGhlIHNhbWUgc2NoZW1lcyB0aGF0IFNhZmFy
aSBkb2VzCiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZCJdOwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNjQzNTYpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDkgKzQ0LDExIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViQXBwbGljYXRpb25DYWNo
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkJhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkNvcmVTdGF0aXN0aWNzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRE9NT3BlcmF0aW9u
c1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRP
TU9wZXJhdGlvbnNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVW
aWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaD4K
QEAgLTMyMiw5ICszMjQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RG9tYWlu
UmVsYQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3Rz
LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAz
MzUuCi0KKyAgICAvLyBEdW1wUmVuZGVyVHJlZSBjb25maWd1cmVkIHRoZSBXZWJWaWV3IHRvIHVz
ZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay4KKyAgICBpZDxXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyPiBwcm92aWRlciA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIF9kZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyXTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ayogbW9ja1Byb3ZpZGVyID0gc3RhdGljX2Nhc3Q8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2sqPihwcm92aWRlcik7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9u
ID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDYW5Qcm92aWRlQWxwaGE6
Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblByb3ZpZGVCZXRhOmNhblByb3ZpZGVCZXRh
IGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJvdmlkZUdhbW1hIGdhbW1hOmdhbW1hXTsK
KyAgICBbbW9ja1Byb3ZpZGVyIHNldE9yaWVudGF0aW9uOm9yaWVudGF0aW9uXTsKIH0KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63195</attachid>
            <date>2010-08-02 05:26:31 -0700</date>
            <delta_ts>2010-08-19 07:56:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43181-20100802132628.patch</filename>
            <type>text/plain</type>
            <size>41029</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjQ0NTQpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhv
b2sgdXAgTGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24g
TWFjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMx
ODEKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEw
LTA3LTMxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0
dHA6Ly93ZWJraXQub3JnL2IvNDMzMDc+IE1ha2Ugc3VyZSBhbGwgcHJpdmF0ZSBoZWFkZXJzIGFy
ZSBjb3BpZWQgdG8gUHJpdmF0ZUhlYWRlcnMgZGlyZWN0b3J5CkluZGV4OiBXZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjQ0
NTQpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2
IEBACisyMDEwLTA3LTI5ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIExh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbigpIG9uIE1hYy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTgxCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBob29rcyB1cCB0aGUgbW9jayBkZXZpY2Ugb3JpZW50YXRpb24gY2xp
ZW50IG9uIE1hYyBmb3IgdXNlCisgICAgICAgIGluIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAg
IFRoZSBwYXRjaCBhZGRzIGEgbmV3IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IGZvciBNYWMu
IFRoaXMgY2xpZW50IGFjdHMKKyAgICAgICAgYXMgYSBwcm94eSB0byBlaXRoZXIgYSByZWFsIG9y
IG1vY2sgZGV2aWNlIG9yaWVudGF0aW9uIHByb3ZpZGVyLCBib3RoIG9mCisgICAgICAgIHdoaWNo
IGltcGxlbWVudCBhIG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyIGludGVyZmFjZS4K
KworICAgICAgICBUaGUgcHJvdmlkZXIgaXMgY3JlYXRlZCBieSB0aGUgZW1iZWRkZXIgYW5kIHBh
c3NlZCB0byB0aGUgV2ViVmlldywgZnJvbQorICAgICAgICB3aGVyZSBXZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudCBjYW4gYWNjZXNzIGl0LgorCisgICAgICAgIFRoZSBtb2NrIHByb3ZpZGVyLCBX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jaywgaXMgYSB3cmFwcGVyIGFyb3VuZAorICAg
ICAgICB0aGUgZXhpc3RpbmcgV2ViQ29yZSBtb2NrLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW06IEFkZGVkLgorICAgICAgICAo
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KToK
KyAgICAgICAgKFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzZXRDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzdGFydFVwZGF0aW5nKToKKyAgICAg
ICAgKFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAo
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgICog
V2ViS2l0LmV4cDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW06IEFkZGVkLgor
ICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbiBpbml0V2l0aENvcmVEZXZpY2VPcmllbnRh
dGlvbjpXZWJDb3JlOjpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoLVtXZWJEZXZpY2VP
cmllbnRhdGlvbiBpbml0V2l0aENhblByb3ZpZGVBbHBoYTphbHBoYTpjYW5Qcm92aWRlQmV0YTpi
ZXRhOmNhblByb3ZpZGVHYW1tYTpnYW1tYTpdKToKKyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50
YXRpb24gZGVhbGxvY10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjpdKToKKyAg
ICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmll
bnRhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIHNldE9yaWVudGF0aW9uOl0pOgorICAg
ICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIHNldENvbnRy
b2xsZXI6XSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50
ZXJuYWwgc3RhcnRVcGRhdGluZ10pOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsIHN0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIGxhc3RPcmllbnRhdGlvbl0pOgorICAgICAg
ICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayBpbml0XSk6CisgICAgICAgICgt
W1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIGRlYWxsb2NdKToKKyAgICAgICAgKC1b
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc2V0T3JpZW50YXRpb246XSk6CisgICAg
ICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIHNldENvbnRyb2xsZXI6XSk6
CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIHN0YXJ0VXBkYXRp
bmddKToKKyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc3RvcFVw
ZGF0aW5nXSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIGxh
c3RPcmllbnRhdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2tJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFt
ZTpncm91cE5hbWU6dXNlc0RvY3VtZW50Vmlld3M6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Nl
dERldmljZU9yaWVudGF0aW9uUHJvdmlkZXI6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Rldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEwLTA3LTI3ICBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0LmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYktpdC5leHAJKHJldmlzaW9uIDY0NDU0KQorKysgV2ViS2l0
L21hYy9XZWJLaXQuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogLm9iamNfY2xh
c3NfbmFtZV9XZWJEYXRhU291cmNlCiAub2JqY19jbGFzc19uYW1lX1dlYkRhdGFiYXNlTWFuYWdl
cgogLm9iamNfY2xhc3NfbmFtZV9XZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUKKy5vYmpjX2NsYXNz
X25hbWVfV2ViRGV2aWNlT3JpZW50YXRpb24KKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlck1vY2sKIC5vYmpjX2NsYXNzX25hbWVfV2ViRG93bmxvYWQKIC5vYmpj
X2NsYXNzX25hbWVfV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3CiAub2JqY19jbGFzc19uYW1lX1dl
YkZvcm1EZWxlZ2F0ZQpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaD4KKworQGNsYXNzIFdlYlZpZXc7CisKKy8vIFRoaXMgY2xhc3MgaXMg
dGhlIE1hYyBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC4gSXQgaXMK
Ky8vIHBhc3NlZCB0byB0aGUgUGFnZSBjb25zdHJ1Y3RvciBieSB0aGUgV2ViVmlldy4gSXQgaXMg
YSBzaW1wbGUgcHJveHkgdG8KKy8vIGVpdGhlciB0aGUgcmVhbCBvciBtb2NrIGNsaWVudCB3aGlj
aCBpcyBwYXNzZWQgdG8gdGhlIFdlYlZpZXcuIEl0IGlzCisvLyByZXF1aXJlZCBiZWNhdXNlIHRo
ZSBXZWJWaWV3IG11c3QgcGFzcyBhIGNsaWVudCB0byB0aGUgUGFnZSBjb25zdHJ1Y3RvciwKKy8v
IGJ1dCB0aGUgcmVhbCBvciBtb2NrIGNsaWVudCBjYW4gbm90IGJlIHNwZWNpZmllZCB1bnRpbCBh
ZnRlciB0aGUgUGFnZSBoYXMKKy8vIGJlZW4gY29uc3RydWN0ZWQuCitjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCB7CitwdWJsaWM6CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoV2ViVmlldyopOwor
CisgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQgbWV0aG9kcworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250cm9sbGVyKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOwor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BV
cGRhdGluZygpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RP
cmllbnRhdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYlZpZXcgKm1fd2ViVmlldzsK
K307CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQuaCIKKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorI2ltcG9y
dCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVy
bmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoV2ViVmlldyogd2ViVmlldykKKyAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50OjpzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJv
bGxlcikKK3sKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCBieSB0aGUgUGFnZSBjb25zdHJ1Y3RvciBi
ZWZvcmUgb3VyIFdlYlZpZXcgaGFzIHRoZSBwcm92aWRlciBzZXQgdXAuCisgICAgLy8gSWdub3Jl
IHRoaXMgY2FsbC4gV2UgbWF1bmFsbHkgc2V0IHRoZSBjb250cm9sbGVyIG9uIHRoZSBwcm92aWRl
ciBsYXRlci4KK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6c3RhcnRVcGRh
dGluZygpCit7CisgICAgW1ttX3dlYlZpZXcgX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJdIHN0
YXJ0VXBkYXRpbmddOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpzdG9w
VXBkYXRpbmcoKQoreworICAgIFtbbV93ZWJWaWV3IF9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
XSBzdG9wVXBkYXRpbmddOworfQorCitEZXZpY2VPcmllbnRhdGlvbiogV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQ6Omxhc3RPcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcmUo
W1ttX3dlYlZpZXcgX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJdIGxhc3RPcmllbnRhdGlvbl0p
OworfQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworQGNsYXNzIFdlYkRldmlj
ZU9yaWVudGF0aW9uSW50ZXJuYWw7CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb24g
OiBOU09iamVjdCB7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCogbV9pbnRlcm5h
bDsKK30KKworLSAoaWQpaW5pdFdpdGhDYW5Qcm92aWRlQWxwaGE6KGJvb2wpY2FuUHJvdmlkZUFs
cGhhIGFscGhhOihkb3VibGUpYWxwaGEgY2FuUHJvdmlkZUJldGE6KGJvb2wpY2FuUHJvdmlkZUJl
dGEgYmV0YTooZG91YmxlKWJldGEgY2FuUHJvdmlkZUdhbW1hOihib29sKWNhblByb3ZpZGVHYW1t
YSBnYW1tYTooZG91YmxlKWdhbW1hOworCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVu
dGF0aW9uSW50ZXJuYWwKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBh
c3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgoreworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmls
OworICAgIG1fb3JpZW50YXRpb24gPSBjb3JlRGV2aWNlT3JpZW50YXRpb247CisgICAgcmV0dXJu
IHNlbGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9u
IChJbnRlcm5hbCkKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgor
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwg
YWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOmNvcmVEZXZpY2VPcmllbnRhdGlv
bl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkRl
dmljZU9yaWVudGF0aW9uCisKK0RldmljZU9yaWVudGF0aW9uKiBjb3JlKFdlYkRldmljZU9yaWVu
dGF0aW9uKiBvcmllbnRhdGlvbikKK3sKKyAgICByZXR1cm4gb3JpZW50YXRpb24gPyBvcmllbnRh
dGlvbi0+bV9pbnRlcm5hbC0+bV9vcmllbnRhdGlvbi5nZXQoKSA6IDA7Cit9CisKKy0gKGlkKWlu
aXRXaXRoQ2FuUHJvdmlkZUFscGhhOihib29sKWNhblByb3ZpZGVBbHBoYSBhbHBoYTooZG91Ymxl
KWFscGhhIGNhblByb3ZpZGVCZXRhOihib29sKWNhblByb3ZpZGVCZXRhIGJldGE6KGRvdWJsZSli
ZXRhIGNhblByb3ZpZGVHYW1tYTooYm9vbCljYW5Qcm92aWRlR2FtbWEgZ2FtbWE6KGRvdWJsZSln
YW1tYQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50
ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOkRldmljZU9yaWVudGF0
aW9uOjpjcmVhdGUoY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEs
IGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgW21faW50ZXJuYWwgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxs
b2NdOworfQorCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlckludGVybmFsOworCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ciA6IE5TT2JqZWN0IHsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5h
bCogbV9pbnRlcm5hbDsKK30KKworQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5tbQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlckludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJu
YWwKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOihEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIK
K3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBtX2NvbnRyb2xsZXIgPSBjb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOworICAgIHJldHVybiBzZWxmOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyIChJbnRlcm5hbCkKKworLSAoaWQpaW5pdFdpdGhDb3Jl
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIq
KWNvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2ludGVybmFs
ID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbCBhbGxvY10gaW5pdFdp
dGhDb3JlRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOmNvcmVEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXJdOworICAgIHJldHVybiBzZWxmOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyCisKK0RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlciogY29yZShXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7
CisgICAgcmV0dXJuIGNvbnRyb2xsZXIgPyBjb250cm9sbGVyLT5tX2ludGVybmFsLT5tX2NvbnRy
b2xsZXIgOiAwOworfQorCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW50ZXJuYWwuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXJJbnRlcm5hbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKK30KKworQGludGVyZmFj
ZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbCA6IE5TT2JqZWN0IHsKK0Bw
dWJsaWMKKyAgICBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJv
bGxlcjsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlciAoSW50ZXJuYWwpCisKKy0gKGlkKWluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjooV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb3JlRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyOworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlciogY29yZShXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKTsKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJu
YWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvbkludGVybmFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0Rldmlj
ZU9yaWVudGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK0BpbnRlcmZhY2UgV2Vi
RGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247Cit9CisKKy0gKGlk
KWluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOihQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uPiljb3JlRGV2aWNlT3JpZW50YXRpb247CitAZW5kCisKK0BpbnRlcmZhY2Ug
V2ViRGV2aWNlT3JpZW50YXRpb24gKEludGVybmFsKQorCistIChpZClpbml0V2l0aENvcmVEZXZp
Y2VPcmllbnRhdGlvbjooUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4pY29y
ZURldmljZU9yaWVudGF0aW9uOworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
KiBjb3JlKFdlYkRldmljZU9yaWVudGF0aW9uKik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0
aW9uOworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKKworQHByb3RvY29s
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgPE5TT2JqZWN0PgorLSAodm9pZClzZXRDb250
cm9sbGVyOihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CistICh2
b2lkKXN0YXJ0VXBkYXRpbmc7CistICh2b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRldmljZU9y
aWVudGF0aW9uKilsYXN0T3JpZW50YXRpb247CitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
IldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCIKKworQGNsYXNzIFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWw7CitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb247
CitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOworCitAaW50ZXJmYWNlIFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIDogTlNPYmplY3Q8V2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlcj4geworICAgIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50
ZXJuYWwqIG1faW50ZXJuYWw7Cit9CisKKy0gKGlkKWluaXQ7CistICh2b2lkKXNldE9yaWVudGF0
aW9uOihXZWJEZXZpY2VPcmllbnRhdGlvbiopb3JpZW50YXRpb247CisKK0BlbmQKSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlck1vY2subW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5h
bC5oIgorCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJJbnRlcm5hbC5o
IgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJNb2NrSW50ZXJuYWwKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrOihEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqKWNvcmVDbGllbnQKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICBtX2NvcmUuc2V0KGNvcmVDbGllbnQpOworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKXNldE9yaWVudGF0aW9uOihXZWJEZXZpY2VPcmllbnRhdGlvbiopb3JpZW50YXRpb24K
K3sKKyAgICBtX2NvcmUtPnNldE9yaWVudGF0aW9uKGNvcmUob3JpZW50YXRpb24pKTsKK30KKwor
LSAodm9pZClzZXRDb250cm9sbGVyOihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNv
bnRyb2xsZXIKK3sKKyAgICBtX2NvcmUtPnNldENvbnRyb2xsZXIoY29yZShjb250cm9sbGVyKSk7
Cit9CisKKy0gKHZvaWQpc3RhcnRVcGRhdGluZworeworICAgIG1fY29yZS0+c3RhcnRVcGRhdGlu
ZygpOworfQorCistICh2b2lkKXN0b3BVcGRhdGluZworeworICAgIG1fY29yZS0+c3RvcFVwZGF0
aW5nKCk7Cit9CisKKy0gKFdlYkRldmljZU9yaWVudGF0aW9uKilsYXN0T3JpZW50YXRpb24KK3sK
KyAgICByZXR1cm4gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlRGV2
aWNlT3JpZW50YXRpb246bV9jb3JlLT5sYXN0T3JpZW50YXRpb24oKV07Cit9CisKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrCisKKy0gKGlk
KWluaXQ7Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBtb2NrQ2xp
ZW50ID0gbmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOworICAgIG1faW50ZXJuYWwg
PSBbW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgYWxsb2NdIGluaXRX
aXRoQ29yZURldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazptb2NrQ2xpZW50XTsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
ICAgIFttX2ludGVybmFsIHJlbGVhc2VdOworfQorCistICh2b2lkKXNldE9yaWVudGF0aW9uOihX
ZWJEZXZpY2VPcmllbnRhdGlvbiopb3JpZW50YXRpb24KK3sKKyAgICBbbV9pbnRlcm5hbCBzZXRP
cmllbnRhdGlvbjpvcmllbnRhdGlvbl07Cit9CisKKy0gKHZvaWQpc2V0Q29udHJvbGxlcjooV2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb250cm9sbGVyCit7CisgICAgW21faW50ZXJu
YWwgc2V0Q29udHJvbGxlcjpjb250cm9sbGVyXTsKK30KKworLSAodm9pZClzdGFydFVwZGF0aW5n
Cit7CisgICAgW21faW50ZXJuYWwgc3RhcnRVcGRhdGluZ107Cit9CisKKy0gKHZvaWQpc3RvcFVw
ZGF0aW5nCit7CisgICAgW21faW50ZXJuYWwgc3RvcFVwZGF0aW5nXTsKK30KKworLSAoV2ViRGV2
aWNlT3JpZW50YXRpb24qKWxhc3RPcmllbnRhdGlvbgoreworICAgIHJldHVybiBbbV9pbnRlcm5h
bCBsYXN0T3JpZW50YXRpb25dOworfQorCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVy
bmFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCIK
KworI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KKyNpbXBv
cnQgPHd0Zi9Pd25QdHIuaD4KKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsIDogTlNPYmplY3QgeworQHB1YmxpYworICAgIE93blB0cjxXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+IG1fY29yZTsKK30KKworLSAoaWQpaW5pdFdp
dGhDb3JlRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOihXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2sqKWNvcmVDbGllbnQ7CisKKy0gKHZvaWQpc2V0T3JpZW50YXRpb246KFdl
YkRldmljZU9yaWVudGF0aW9uKilvcmllbnRhdGlvbjsKKworLSAodm9pZClzZXRDb250cm9sbGVy
OihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CistICh2b2lkKXN0
YXJ0VXBkYXRpbmc7CistICh2b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRldmljZU9yaWVudGF0
aW9uKilsYXN0T3JpZW50YXRpb247CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiA2NDQ1NCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw2ICs0Nyw5IEBACiAjaW1wb3J0ICJXZWJEZWZhdWx0UG9saWN5RGVsZWdh
dGUuaCIKICNpbXBvcnQgIldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaCIKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckludGVy
bmFsLmgiCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmgiCiAjaW1wb3J0
ICJXZWJEb2N1bWVudC5oIgogI2ltcG9ydCAiV2ViRG9jdW1lbnRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV2ViRG93bmxvYWQuaCIKQEAgLTY4Myw2ICs2ODYsOSBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikKICAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KHNlbGYpOwogI2VuZGlmCisjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKKyAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCA9IG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChzZWxmKTsKKyNlbmRpZgogICAgIF9w
cml2YXRlLT5wYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOwogCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldENhblN0YXJ0TWVkaWEoW3NlbGYgd2luZG93XSk7CkBAIC01ODY0LDYgKzU4NzAsMjkg
QEAgLSAodm9pZClfc2NoZWR1bGVHbGliQ29udGV4dEl0ZXJhdGlvbnMKIAogQGVuZAogCitAaW1w
bGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0RldmljZU9yaWVudGF0aW9uKQorCistICh2b2lk
KV9zZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOihpZDxXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyPilkZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKSB7
CisgICAgICAgIF9wcml2YXRlLT5tX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgPSBkZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAg
ICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29yZUNvbnRyb2xsZXIgPSBfcHJpdmF0
ZS0+cGFnZS0+ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCk7CisgICAgICAgIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IFtbV2ViRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI6Y29yZUNvbnRyb2xsZXJdOworICAgICAgICBbX3ByaXZhdGUtPm1fZGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlciBzZXRDb250cm9sbGVyOmNvbnRyb2xsZXJdOworI2VuZGlmCisgICAgfQorfQor
CistIChpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPilfZGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlcgoreworICAgIGlmIChfcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIF9wcml2YXRlLT5t
X2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZAor
CiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0dlb2xvY2F0aW9uKQogCiAtICh2b2lk
KV9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOihpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilnZW9s
b2NhdGlvblByb3ZpZGVyCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkocmV2aXNpb24g
NjQ0NTQpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMTIgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBQYWdl
OwogfQogCitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBAY2xhc3MgV2ViSW5z
cGVjdG9yOwogQGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBAY2xhc3MgV2ViUGx1Z2luRGF0YWJh
c2U7CiBAY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBAY2xhc3MgV2ViVGV4dENvbXBsZXRpb25Db250
cm9sbGVyOwogQHByb3RvY29sIFdlYkZvcm1EZWxlZ2F0ZTsKK0Bwcm90b2NvbCBXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOwogQHByb3RvY29sIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI7CiAj
aWYgRU5BQkxFKFZJREVPKQogQGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI7CkBA
IC0xNzQsNSArMTc2LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsK
ICAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBnbGliUnVuTG9vcE9ic2VydmVyOwogI2VuZGlmCiAg
ICAgaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CisgICAg
aWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gbV9kZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyOwogfQogQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlz
aW9uIDY0NDU0KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDEyICs0NCwxNSBAQAogCiBAY2xhc3MgTlNFcnJvcjsKIEBjbGFzcyBX
ZWJGcmFtZTsKK0BjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbjsKK0BjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI7CiBAY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBj
bGFzcyBXZWJJbnNwZWN0b3I7CiBAY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBAY2xhc3MgV2ViU2Ny
aXB0V29ybGQ7CiBAY2xhc3MgV2ViVGV4dEl0ZXJhdG9yOwogCitAcHJvdG9jb2wgV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlcjsKIEBwcm90b2NvbCBXZWJGb3JtRGVsZWdhdGU7CiAKIGV4dGVy
biBOU1N0cmluZyAqX1dlYkNhbkdvQmFja0tleTsKQEAgLTYwNCw2ICs2MDcsMTEgQEAgQGludGVy
ZmFjZSBXZWJWaWV3IChXZWJWaWV3RWRpdGluZ0luTWFpbAogLSAoQk9PTClfc2VsZWN0aW9uSXNB
bGw7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0RldmljZU9yaWVudGF0aW9u
KQorLSAodm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjooaWQ8V2ViRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlcj4pZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKKy0gKGlkPFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXI+KV9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOworQGVu
ZAorCiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Qcm92aWRlciA8TlNPYmplY3Q+CiAtICh2b2lk
KXJlZ2lzdGVyV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXc7CiAtICh2b2lkKXVucmVnaXN0ZXJX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NDU0KQorKysg
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgTGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24gTWFjLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGNyZWF0ZVdl
YlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorCiAyMDEwLTA4LTAyICBGdW1pdG9zaGkgVWth
aSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkocmV2aXNpb24gNjQ0NTQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNp
bXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ay5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkVkaXRpbmdEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxSZXByZXNlbnRhdGlv
bkludGVybmFsLmg+CkBAIC0yOTQsNiArMjk1LDcgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5n
RGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNl
TG9hZERlbGVnYXRlXTsKICAgICBbd2ViVmlldyBfc2V0R2VvbG9jYXRpb25Qcm92aWRlcjpbTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXV07CisgICAgW3dlYlZpZXcgX3NldERldmljZU9y
aWVudGF0aW9uUHJvdmlkZXI6W1tXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayBhbGxv
Y10gaW5pdF1dOwogCiAgICAgLy8gUmVnaXN0ZXIgdGhlIHNhbWUgc2NoZW1lcyB0aGF0IFNhZmFy
aSBkb2VzCiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZCJdOwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNjQ0NTQpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDkgKzQ0LDExIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViQXBwbGljYXRpb25DYWNo
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkJhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkNvcmVTdGF0aXN0aWNzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRE9NT3BlcmF0aW9u
c1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRP
TU9wZXJhdGlvbnNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVW
aWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaD4K
QEAgLTMyMiw5ICszMjQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RG9tYWlu
UmVsYQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3Rz
LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAz
MzUuCi0KKyAgICAvLyBEdW1wUmVuZGVyVHJlZSBjb25maWd1cmVkIHRoZSBXZWJWaWV3IHRvIHVz
ZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay4KKyAgICBpZDxXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyPiBwcm92aWRlciA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIF9kZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyXTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
ayogbW9ja1Byb3ZpZGVyID0gc3RhdGljX2Nhc3Q8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2sqPihwcm92aWRlcik7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9u
ID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDYW5Qcm92aWRlQWxwaGE6
Y2FuUHJvdmlkZUFscGhhIGFscGhhOmFscGhhIGNhblByb3ZpZGVCZXRhOmNhblByb3ZpZGVCZXRh
IGJldGE6YmV0YSBjYW5Qcm92aWRlR2FtbWE6Y2FuUHJvdmlkZUdhbW1hIGdhbW1hOmdhbW1hXTsK
KyAgICBbbW9ja1Byb3ZpZGVyIHNldE9yaWVudGF0aW9uOm9yaWVudGF0aW9uXTsKIH0KIAogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64853</attachid>
            <date>2010-08-19 07:56:41 -0700</date>
            <delta_ts>2010-09-02 14:23:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43181-20100819155638.patch</filename>
            <type>text/plain</type>
            <size>42396</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjU2NjUpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhv
b2sgdXAgTGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24g
TWFjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMx
ODEKKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEw
LTA4LTE3ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY1NjY1KQorKysgV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
NiArMTExLDE1IEBACiAJCTUxRkRDNEQzMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRl
bVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjQxQURGNTBC
MUJDNDhBMDA0MDEyQkQgLyogV2ViQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNDFB
REY2MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREY0MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJD
YWNoZS5tbSAqLzsgfTsKKwkJNTk4QUQ5MUExMjAxQ0VDOTAwQUJBRTRFIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCAqLzsgfTsKKwkJNTk4QUQ5MUUxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTk4QUQ5MUQxMjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50Lm1tICovOyB9OworCQk1OThBRDkyMDEyMDFDRjA3MDBBQkFFNEUgLyogV2ViRGV2aWNl
T3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5OEFEOTFGMTIwMUNGMDcwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5OEFEOTIy
MTIwMUNGMTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTIxMTIwMUNGMTAwMEFCQUU0
RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbSAqLzsgfTsKKwkJNTk4QUQ5MjQxMjAxQ0YxOTAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTIzMTIwMUNGMTkwMEFCQUU0RSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmggKi87IH07CisJCTU5OEFEOTI2MTIwMUNG
MjUwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjUxMjAxQ0YyNTAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTk4QUQ5MjgxMjAxQ0YzMjAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjcxMjAxQ0YzMjAwQUJB
RTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovOyB9OworCQk1OThB
RDkyQTEyMDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTk4QUQ5MjkxMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrSW50ZXJuYWwuaCAqLzsgfTsKKwkJNTk4QURBNDYxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNUQ3QkY4MTQwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTIwQzJB
MUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJ
bnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9OwogCQk1
REU4M0E3QTBEMEY3Rjk0MDBDQUQxMkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5p
YiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURFODNB
NzQwRDBGN0Y5NDAwQ0FEMTJBIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgKi87
IH07CkBAIC01MjMsNiArNTMyLDE1IEBACiAJCTUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBX
ZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
NDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTI0MUFERjQwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1OThBRDkxOTEyMDFDRUM5MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MUQx
MjAxQ0VDRjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5OEFEOTFGMTIwMUNGMDcwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1OThBRDkyMTEyMDFDRjEwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MjMxMjAxQ0YxOTAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1OThBRDkyNTEyMDFDRjI1MDBBQkFFNEUgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTk4QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0
b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVERTgzQTc1MEQwRjdGOTQwMENB
RDEyQSAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5uaWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJv
ai9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubmliOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CkBAIC0xMTI0LDYgKzExNDIsMTMgQEAKIAkJOUM3Q0FCQkIwMTkwQTM3QzBFQ0ExNkVB
IC8qIFdlYlZpZXcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyLmggKi8sCisJCQkJNTk4QUQ5MjkxMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCAqLywKKwkJCQk1OThBRDkyNzEyMDFDRjMyMDBB
QkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gKi8sCisJCQkJNTk4
QUQ5MjUxMjAxQ0YyNTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
LmggKi8sCisJCQkJNTk4QUQ5MjMxMjAxQ0YxOTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uSW50ZXJuYWwuaCAqLywKKwkJCQk1OThBRDkyMTEyMDFDRjEwMDBBQkFFNEUgLyogV2ViRGV2
aWNlT3JpZW50YXRpb24ubW0gKi8sCisJCQkJNTk4QUQ5MUYxMjAxQ0YwNzAwQUJBRTRFIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uLmggKi8sCiAJCQkJRjUyQ0E2QkQwMkRGOUQwRjAxODYzNUNBIC8q
IEhUTUwgKi8sCiAJCQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlFIC8qIFBERiAqLywKIAkJCQk4
MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLApAQCAtMTI0OSw2ICsx
Mjc0LDggQEAKIAkJRjVCMzZCNDAwMjgxREU4NzAxODYzNUNCIC8qIFdlYkNvcmVTdXBwb3J0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OThBRDkxRDEy
MDFDRUNGMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0gKi8sCisJCQkJ
NTk4QUQ5MTkxMjAxQ0VDOTAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lmgg
Ki8sCiAJCQkJQjY4MDQ5NzEwRkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUu
aCAqLywKIAkJCQlCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNo
ZS5tbSAqLywKIAkJCQlBNURFRkMxMTExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25D
YWNoZVF1b3RhTWFuYWdlci5oICovLApAQCAtMTU4OSw2ICsxNjE2LDEyIEBACiAJCQkJQTU3RTJG
MjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzkxRjI3NTEyMUIzOEJEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTk4QUQ5MUExMjAxQ0VDOTAwQUJB
RTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1
OThBRDkyMDEyMDFDRjA3MDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU5OEFEOTI0MTIwMUNGMTkwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OThBRDkyNjEyMDFDRjI1MDBBQkFF
NEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTU5OEFEOTJBMTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OThBREE0NjEyMDIyNzUwMDBB
QkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0xOTUyLDYgKzE5ODUsOSBAQAogCQkJCUE1REVGQzE0MTFENTM0NEIwMDg4NTI3MyAvKiBXZWJB
cHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjgwNDE3
NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5MUYyNzYxMjFCMzhCRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQubW0gaW4gU291cmNlcyAqLywKKwkJCQk1OThBRDkxRTEyMDFDRUNGMDBBQkFFNEUgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk1OThBRDky
MjEyMDFDRjEwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gaW4gU291cmNlcyAq
LywKKwkJCQk1OThBRDkyODEyMDFDRjMyMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2subW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTY2NSkKKysr
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjEgQEAKKzIw
MTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgTGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKCkgb24gTWFjLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEKKworICAgICAgICBU
aGlzIHBhdGNoIGhvb2tzIHVwIHRoZSBtb2NrIGRldmljZSBvcmllbnRhdGlvbiBjbGllbnQgb24g
TWFjIGZvciB1c2UKKyAgICAgICAgaW4gRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgVGhlIHBh
dGNoIGFkZHMgYSBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgZm9yIE1hYy4gVGhpcyBj
bGllbnQgYWN0cworICAgICAgICBhcyBhIHByb3h5IHRvIGVpdGhlciBhIHJlYWwgb3IgbW9jayBk
ZXZpY2Ugb3JpZW50YXRpb24gcHJvdmlkZXIsIGJvdGggb2YKKyAgICAgICAgd2hpY2ggaW1wbGVt
ZW50IGEgbmV3IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIgaW50ZXJmYWNlLgorCisgICAg
ICAgIFRoZSBwcm92aWRlciBpcyBjcmVhdGVkIGJ5IHRoZSBlbWJlZGRlciBhbmQgcGFzc2VkIHRv
IHRoZSBXZWJWaWV3LCBmcm9tCisgICAgICAgIHdoZXJlIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50IGNhbiBhY2Nlc3MgaXQuCisKKyAgICAgICAgVGhlIG1vY2sgcHJvdmlkZXIsIFdlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLCBpcyBhIHdyYXBwZXIgYXJvdW5kCisgICAgICAgIHRo
ZSBleGlzdGluZyBXZWJDb3JlIG1vY2suCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbTogQWRkZWQuCisgICAgICAgIChXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOgorICAgICAg
ICAoV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudDo6bGFzdE9yaWVudGF0aW9uKToKKyAgICAgICAgKiBXZWJLaXQu
ZXhwOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaDogQWRkZWQuCisg
ICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbTogQWRkZWQuCisgICAgICAg
ICgtW1dlYkRldmljZU9yaWVudGF0aW9uIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOldl
YkNvcmU6Ol0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0
aW9uIGluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOmFscGhhOmNhblByb3ZpZGVCZXRhOmJldGE6Y2Fu
UHJvdmlkZUdhbW1hOmdhbW1hOl0pOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvbiBk
ZWFsbG9jXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFs
Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsIHNldE9yaWVudGF0aW9uOl0pOgorICAgICAgICAoLVtXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIHNldENvbnRyb2xsZXI6XSk6CisgICAg
ICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgc3RhcnRVcGRh
dGluZ10pOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVy
bmFsIHN0b3BVcGRhdGluZ10pOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsIGxhc3RPcmllbnRhdGlvbl0pOgorICAgICAgICAoLVtXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9jayBpbml0XSk6CisgICAgICAgICgtW1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2sgc2V0T3JpZW50YXRpb246XSk6CisgICAgICAgICgtW1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIHNldENvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIHN0YXJ0VXBkYXRpbmddKToKKyAgICAgICAg
KC1bV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2sgc3RvcFVwZGF0aW5nXSk6CisgICAg
ICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIGxhc3RPcmllbnRhdGlvbl0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6dXNl
c0RvY3VtZW50Vmlld3M6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldERldmljZU9yaWVudGF0
aW9uUHJvdmlkZXI6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2RldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEwLTA4LTE3ICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0LmV4cAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYktpdC5leHAJKHJldmlzaW9uIDY1NjY1KQorKysgV2ViS2l0L21hYy9X
ZWJLaXQuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogLm9iamNfY2xhc3NfbmFt
ZV9XZWJEYXRhU291cmNlCiAub2JqY19jbGFzc19uYW1lX1dlYkRhdGFiYXNlTWFuYWdlcgogLm9i
amNfY2xhc3NfbmFtZV9XZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUKKy5vYmpjX2NsYXNzX25hbWVf
V2ViRGV2aWNlT3JpZW50YXRpb24KKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2sKIC5vYmpjX2NsYXNzX25hbWVfV2ViRG93bmxvYWQKIC5vYmpjX2NsYXNz
X25hbWVfV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3CiAub2JqY19jbGFzc19uYW1lX1dlYkZvcm1E
ZWxlZ2F0ZQpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXIuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwor
fQorCitAY2xhc3MgV2ViVmlldzsKKworLy8gVGhpcyBjbGFzcyBpcyB0aGUgTWFjIGltcGxlbWVu
dGF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uQ2xpZW50LiBJdCBpcworLy8gcGFzc2VkIHRvIHRo
ZSBQYWdlIGNvbnN0cnVjdG9yIGJ5IHRoZSBXZWJWaWV3LiBJdCBpcyBhIHNpbXBsZSBwcm94eSB0
bworLy8gZWl0aGVyIHRoZSByZWFsIG9yIG1vY2sgY2xpZW50IHdoaWNoIGlzIHBhc3NlZCB0byB0
aGUgV2ViVmlldy4gSXQgaXMKKy8vIHJlcXVpcmVkIGJlY2F1c2UgdGhlIFdlYlZpZXcgbXVzdCBw
YXNzIGEgY2xpZW50IHRvIHRoZSBQYWdlIGNvbnN0cnVjdG9yLAorLy8gYnV0IHRoZSByZWFsIG9y
IG1vY2sgY2xpZW50IGNhbiBub3QgYmUgc3BlY2lmaWVkIHVudGlsIGFmdGVyIHRoZSBQYWdlIGhh
cworLy8gYmVlbiBjb25zdHJ1Y3RlZC4KK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChXZWJWaWV3Kik7CisKKyAgICAvLyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCBtZXRob2RzCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIo
V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gZ2V0
UHJvdmlkZXIoKSBjb25zdDsKKworICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKKyAgICBtdXRhYmxl
IGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7Cit9OwpJbmRleDog
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisKKyNp
bXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgorI2lt
cG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChX
ZWJWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2NvbnRy
b2xsZXIoMCkKK3sKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6c2V0Q29u
dHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAg
Ly8gVGhpcyBpcyBjYWxsZWQgYnkgdGhlIFBhZ2UgY29uc3RydWN0b3IgYmVmb3JlIG91ciBXZWJW
aWV3IGhhcyB0aGUgcHJvdmlkZXIgc2V0IHVwLgorICAgIC8vIENhY2hlIHRoZSBjb250cm9sbGVy
IGZvciBsYXRlciB1c2UuCisgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKK30KKwordm9p
ZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgW2dl
dFByb3ZpZGVyKCkgc3RhcnRVcGRhdGluZ107Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQ6OnN0b3BVcGRhdGluZygpCit7CisgICAgW2dldFByb3ZpZGVyKCkgc3RvcFVwZGF0
aW5nXTsKK30KKworRGV2aWNlT3JpZW50YXRpb24qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
OjpsYXN0T3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBjb3JlKFtnZXRQcm92aWRl
cigpIGxhc3RPcmllbnRhdGlvbl0pOworfQorCitpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyPiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDo6Z2V0UHJvdmlkZXIoKSBjb25zdAorewor
ICAgIGlmICghbV9wcm92aWRlcikgeworICAgICAgICBtX3Byb3ZpZGVyID0gW21fd2ViVmlldyBf
ZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcl07CisgICAgICAgIGlmIChbbV9wcm92aWRlciByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldENvbnRyb2xsZXI6KV0pCisgICAgICAgICAgICBv
YmpjX21zZ1NlbmQobV9wcm92aWRlciwgQHNlbGVjdG9yKHNldENvbnRyb2xsZXI6KSwgbV9jb250
cm9sbGVyKTsKKyAgICB9CisgICAgcmV0dXJuIG1fcHJvdmlkZXI7Cit9CkluZGV4OiBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworCitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5h
bDsKKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvbiA6IE5TT2JqZWN0IHsKKyAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsKiBtX2ludGVybmFsOworfQorCistIChpZClpbml0
V2l0aENhblByb3ZpZGVBbHBoYTooYm9vbCljYW5Qcm92aWRlQWxwaGEgYWxwaGE6KGRvdWJsZSlh
bHBoYSBjYW5Qcm92aWRlQmV0YTooYm9vbCljYW5Qcm92aWRlQmV0YSBiZXRhOihkb3VibGUpYmV0
YSBjYW5Qcm92aWRlR2FtbWE6KGJvb2wpY2FuUHJvdmlkZUdhbW1hIGdhbW1hOihkb3VibGUpZ2Ft
bWE7CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b24ubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb24ubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbAorCist
IChpZClpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjooUGFzc1JlZlB0cjxEZXZpY2VPcmll
bnRhdGlvbj4pY29yZURldmljZU9yaWVudGF0aW9uCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgbV9vcmllbnRhdGlv
biA9IGNvcmVEZXZpY2VPcmllbnRhdGlvbjsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb24gKEludGVybmFsKQorCistIChp
ZClpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjooUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbj4pY29yZURldmljZU9yaWVudGF0aW9uCit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgbV9pbnRl
cm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3Jl
RGV2aWNlT3JpZW50YXRpb246Y29yZURldmljZU9yaWVudGF0aW9uXTsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb24KKwor
RGV2aWNlT3JpZW50YXRpb24qIGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9u
KQoreworICAgIHJldHVybiBvcmllbnRhdGlvbiA/IG9yaWVudGF0aW9uLT5tX2ludGVybmFsLT5t
X29yaWVudGF0aW9uLmdldCgpIDogMDsKK30KKworLSAoaWQpaW5pdFdpdGhDYW5Qcm92aWRlQWxw
aGE6KGJvb2wpY2FuUHJvdmlkZUFscGhhIGFscGhhOihkb3VibGUpYWxwaGEgY2FuUHJvdmlkZUJl
dGE6KGJvb2wpY2FuUHJvdmlkZUJldGEgYmV0YTooZG91YmxlKWJldGEgY2FuUHJvdmlkZUdhbW1h
Oihib29sKWNhblByb3ZpZGVHYW1tYSBnYW1tYTooZG91YmxlKWdhbW1hCit7CisgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
bV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdp
dGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb246OmNyZWF0ZShjYW5Qcm92
aWRlQWxwaGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBn
YW1tYSldOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBb
bV9pbnRlcm5hbCByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJu
YWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvbkludGVybmFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0Rldmlj
ZU9yaWVudGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK0BpbnRlcmZhY2UgV2Vi
RGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247Cit9CisKKy0gKGlk
KWluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOihQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uPiljb3JlRGV2aWNlT3JpZW50YXRpb247CitAZW5kCisKK0BpbnRlcmZhY2Ug
V2ViRGV2aWNlT3JpZW50YXRpb24gKEludGVybmFsKQorCistIChpZClpbml0V2l0aENvcmVEZXZp
Y2VPcmllbnRhdGlvbjooUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4pY29y
ZURldmljZU9yaWVudGF0aW9uOworCitAZW5kCisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
KiBjb3JlKFdlYkRldmljZU9yaWVudGF0aW9uKik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0
aW9uOworCitAcHJvdG9jb2wgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlciA8TlNPYmplY3Q+
CistICh2b2lkKXN0YXJ0VXBkYXRpbmc7CistICh2b2lkKXN0b3BVcGRhdGluZzsKKy0gKFdlYkRl
dmljZU9yaWVudGF0aW9uKilsYXN0T3JpZW50YXRpb247CitAZW5kCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2suaAko
cmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIgorCitAY2xhc3MgV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbDsKK0BjbGFzcyBXZWJEZXZpY2VPcmllbnRh
dGlvbjsKKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jayA6IE5T
T2JqZWN0PFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+IHsKKyAgICBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsKiBtX2ludGVybmFsOworfQorCistIChpZClpbml0
OworLSAodm9pZClzZXRPcmllbnRhdGlvbjooV2ViRGV2aWNlT3JpZW50YXRpb24qKW9yaWVudGF0
aW9uOworCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRp
b25JbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0
aW9uIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwKKworLSAoaWQpaW5p
dAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIG1fY29yZS5zZXQobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
aygpKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZXRPcmllbnRhdGlvbjooV2Vi
RGV2aWNlT3JpZW50YXRpb24qKW9yaWVudGF0aW9uCit7CisgICAgbV9jb3JlLT5zZXRPcmllbnRh
dGlvbihjb3JlKG9yaWVudGF0aW9uKSk7Cit9CisKKy0gKHZvaWQpc2V0Q29udHJvbGxlcjooRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb250cm9sbGVyCit7CisgICAgbV9jb3JlLT5zZXRD
b250cm9sbGVyKGNvbnRyb2xsZXIpOworfQorCistICh2b2lkKXN0YXJ0VXBkYXRpbmcKK3sKKyAg
ICBtX2NvcmUtPnN0YXJ0VXBkYXRpbmcoKTsKK30KKworLSAodm9pZClzdG9wVXBkYXRpbmcKK3sK
KyAgICBtX2NvcmUtPnN0b3BVcGRhdGluZygpOworfQorCistIChXZWJEZXZpY2VPcmllbnRhdGlv
biopbGFzdE9yaWVudGF0aW9uCit7CisgICAgcmV0dXJuIFtbV2ViRGV2aWNlT3JpZW50YXRpb24g
YWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOm1fY29yZS0+bGFzdE9yaWVudGF0
aW9uKCldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyTW9jayAoSW50ZXJuYWwpCisKKy0gKHZvaWQpc2V0Q29udHJvbGxlcjooV2ViQ29y
ZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb250cm9sbGVyCit7CisgICBbbV9pbnRl
cm5hbCBzZXRDb250cm9sbGVyOmNvbnRyb2xsZXJdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jaworCistIChpZClpbml0Oworewor
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
SW50ZXJuYWwgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRl
YWxsb2MKK3sKKyAgICBbc3VwZXIgZGVhbGxvY107CisgICAgW21faW50ZXJuYWwgcmVsZWFzZV07
Cit9CisKKy0gKHZvaWQpc2V0T3JpZW50YXRpb246KFdlYkRldmljZU9yaWVudGF0aW9uKilvcmll
bnRhdGlvbgoreworICAgIFttX2ludGVybmFsIHNldE9yaWVudGF0aW9uOm9yaWVudGF0aW9uXTsK
K30KKworLSAodm9pZClzdGFydFVwZGF0aW5nCit7CisgICAgW21faW50ZXJuYWwgc3RhcnRVcGRh
dGluZ107Cit9CisKKy0gKHZvaWQpc3RvcFVwZGF0aW5nCit7CisgICAgW21faW50ZXJuYWwgc3Rv
cFVwZGF0aW5nXTsKK30KKworLSAoV2ViRGV2aWNlT3JpZW50YXRpb24qKWxhc3RPcmllbnRhdGlv
bgoreworICAgIHJldHVybiBbbV9pbnRlcm5hbCBsYXN0T3JpZW50YXRpb25dOworfQorCitAZW5k
CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2tJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2suaCIKKworI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaD4KKyNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KKworQGludGVyZmFj
ZSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsIDogTlNPYmplY3Qgewor
ICAgIE93blB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+IG1fY29yZTsK
K30KKworLSAoaWQpaW5pdDsKKworLSAodm9pZClzZXRPcmllbnRhdGlvbjooV2ViRGV2aWNlT3Jp
ZW50YXRpb24qKW9yaWVudGF0aW9uOworCistICh2b2lkKXNldENvbnRyb2xsZXI6KFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopY29udHJvbGxlcjsKKworLSAodm9pZClzdGFy
dFVwZGF0aW5nOworLSAodm9pZClzdG9wVXBkYXRpbmc7CistIChXZWJEZXZpY2VPcmllbnRhdGlv
biopbGFzdE9yaWVudGF0aW9uOworQGVuZAorCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJNb2NrIChJbnRlcm5hbCkKKy0gKHZvaWQpc2V0Q29udHJvbGxlcjooV2ViQ29y
ZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiljb250cm9sbGVyOworQGVuZApJbmRleDog
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDY1NjY1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAKICNpbXBvcnQgIldl
YkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiV2ViRG9jdW1lbnQuaCIKICNpbXBvcnQgIldlYkRv
Y3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRvd25sb2FkLmgiCkBAIC02ODMsNiArNjg1
LDkgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogI2lmIEVOQUJM
RShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25D
b250cm9sbGVyQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudChzZWxm
KTsKICNlbmRpZgorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgcGFnZUNsaWVu
dHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQoc2VsZik7CisjZW5kaWYKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGll
bnRzKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRDYW5TdGFydE1lZGlhKFtzZWxmIHdpbmRv
d10pOwpAQCAtNTg2NCw2ICs1ODY5LDIzIEBAIC0gKHZvaWQpX3NjaGVkdWxlR2xpYkNvbnRleHRJ
dGVyYXRpb25zCiAKIEBlbmQKIAorQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdEZXZp
Y2VPcmllbnRhdGlvbikKKworLSAodm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjoo
aWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4pZGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
cgoreworICAgIGlmIChfcHJpdmF0ZSkKKyAgICAgICAgX3ByaXZhdGUtPm1fZGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlciA9IGRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7Cit9CisKKy0gKGlkPFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI+KV9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyCit7
CisgICAgaWYgKF9wcml2YXRlKQorICAgICAgICByZXR1cm4gX3ByaXZhdGUtPm1fZGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlcjsKKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCisKIEBpbXBsZW1l
bnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3R2VvbG9jYXRpb24pCiAKIC0gKHZvaWQpX3NldEdlb2xv
Y2F0aW9uUHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KWdlb2xvY2F0aW9uUHJv
dmlkZXIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiA2NTY2NSkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwx
MiArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7CiB9CiAKK0Bj
bGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIEBjbGFzcyBXZWJJbnNwZWN0b3I7CiBA
Y2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIEBjbGFzcyBXZWJQbHVnaW5EYXRhYmFzZTsKIEBjbGFz
cyBXZWJQcmVmZXJlbmNlczsKIEBjbGFzcyBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXI7CiBA
cHJvdG9jb2wgV2ViRm9ybURlbGVnYXRlOworQHByb3RvY29sIFdlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXI7CiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Qcm92aWRlcjsKICNpZiBFTkFCTEUo
VklERU8pCiBAY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcjsKQEAgLTE3NCw1ICsx
NzYsNiBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIENGUnVu
TG9vcE9ic2VydmVyUmVmIGdsaWJSdW5Mb29wT2JzZXJ2ZXI7CiAjZW5kaWYKICAgICBpZDxXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPiBfZ2VvbG9jYXRpb25Qcm92aWRlcjsKKyAgICBpZDxXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyPiBtX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CiB9CiBA
ZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gNjU2NjUp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTIgKzQ0LDE0IEBACiAKIEBjbGFzcyBOU0Vycm9yOwogQGNsYXNzIFdlYkZyYW1lOwor
QGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uOwogQGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b247CiBAY2xhc3MgV2ViSW5zcGVjdG9yOwogQGNsYXNzIFdlYlByZWZlcmVuY2VzOwogQGNsYXNz
IFdlYlNjcmlwdFdvcmxkOwogQGNsYXNzIFdlYlRleHRJdGVyYXRvcjsKIAorQHByb3RvY29sIFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CiBAcHJvdG9jb2wgV2ViRm9ybURlbGVnYXRlOwog
CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tLZXk7CkBAIC02MDQsNiArNjA2LDExIEBA
IEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0VkaXRpbmdJbk1haWwKIC0gKEJPT0wpX3NlbGVj
dGlvbklzQWxsOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdEZXZpY2VPcmll
bnRhdGlvbikKKy0gKHZvaWQpX3NldERldmljZU9yaWVudGF0aW9uUHJvdmlkZXI6KGlkPFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXI+KWRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CistIChp
ZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPilfZGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
cjsKK0BlbmQKKwogQHByb3RvY29sIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIgPE5TT2JqZWN0Pgog
LSAodm9pZClyZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZCl1bnJl
Z2lzdGVyV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXc7CkluZGV4OiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTY2
NSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEwLTA3LTI5ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIExh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbigpIG9uIE1hYy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTgxCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChj
cmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKwogMjAxMC0wOC0xOCAgTWFyayBS
b3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCShyZXZpc2lvbiA2NTY2NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2lt
cG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRvY3VtZW50UHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRWRpdGluZ0RlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSFRNTFJlcHJlc2VudGF0aW9u
SW50ZXJuYWwuaD4KQEAgLTI5NCw2ICsyOTUsNyBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5k
T2Zmc2NyZWVuV2luZG93CiAgICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdE
ZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VM
b2FkRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IF9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOltNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKKyAgICBbd2ViVmlldyBfc2V0RGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlcjpbW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrIGFsbG9j
XSBpbml0XV07CiAKICAgICAvLyBSZWdpc3RlciB0aGUgc2FtZSBzY2hlbWVzIHRoYXQgU2FmYXJp
IGRvZXMKICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkIl07Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA2NTY2NSkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDUsOSArNDUsMTEgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJBcHBsaWNhdGlvbkNhY2hl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViQ29yZVN0YXRpc3RpY3MuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJET01PcGVyYXRpb25z
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2UuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRE9N
T3BlcmF0aW9uc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlv
bi5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgpA
QCAtMzM2LDkgKzMzOCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREb21haW5S
ZWxhCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRh
LCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKIHsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMu
Ci0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMz
NS4KLQorICAgIC8vIER1bXBSZW5kZXJUcmVlIGNvbmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNl
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLgorICAgIGlkPFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXI+IHByb3ZpZGVyID0gW1ttYWluRnJhbWUgd2ViVmlld10gX2RldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJdOworICAgIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
KiBtb2NrUHJvdmlkZXIgPSBzdGF0aWNfY2FzdDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayo+KHByb3ZpZGVyKTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiogb3JpZW50YXRpb24g
PSBbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0V2l0aENhblByb3ZpZGVBbHBoYTpj
YW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJvdmlkZUJldGE6Y2FuUHJvdmlkZUJldGEg
YmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92aWRlR2FtbWEgZ2FtbWE6Z2FtbWFdOwor
ICAgIFttb2NrUHJvdmlkZXIgc2V0T3JpZW50YXRpb246b3JpZW50YXRpb25dOwogfQogCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>