<?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>188521</bug_id>
          
          <creation_ts>2018-08-13 10:28:02 -0700</creation_ts>
          <short_desc>[MediaStream] Move capture device monitoring to WebKit</short_desc>
          <delta_ts>2018-08-28 07:48:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449671</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-13 10:28:02 -0700</bug_when>
    <thetext>Monitor capture device changes in the UI process and inform the web process when changes are detected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449757</commentid>
    <comment_count>1</comment_count>
      <attachid>347035</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-13 13:51:08 -0700</bug_when>
    <thetext>Created attachment 347035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449765</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-13 14:19:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/43251787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449775</commentid>
    <comment_count>3</comment_count>
      <attachid>347035</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-13 14:32:19 -0700</bug_when>
    <thetext>Comment on attachment 347035
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaDevices.cpp:189
&gt; +                    return;

Do we need weak pointers there? It seems not if we are unregistering the callback when MediaDevices is being stopped and/or destroyed.

&gt; Source/WebCore/Modules/mediastream/MediaDevices.cpp:191
&gt; +                m_scheduledEventTimer.startOneShot(Seconds(randomNumber() / 2));

It is not totally clear to me what this protects against. Spec says &quot;These events are potentially triggered simultaneously across browsing contexts on different origins; user agents may add fuzzing on the timing of events to avoid cross-origin activity correlation.&quot;

&gt; Source/WebCore/Modules/mediastream/UserMediaClient.h:52
&gt; +    using DeviceChangeObserverToken = unsigned;

You can use something like:
enum DeviceChangeObserverTokenType { };
using DeviceChangeObserverToken = ObjectIdentifier&lt;DeviceChangeObserverTokenType&gt;;

&gt; Source/WebCore/Modules/mediastream/UserMediaClient.h:53
&gt; +    virtual DeviceChangeObserverToken addDeviceChangeObserver(std::function&lt;void()&gt;&amp;&amp;) = 0;

WTF::Function?

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:57
&gt; +            return;

Do we need that weakThis check?

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:58
&gt; +    void refreshAudioCaptureDevices(bool);

Maybe an enum would be clearer?

&gt; Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:-58
&gt; -    singleton().captureDevicesChanged();

We should probably keep these and make sure they trigger the necessary IPC calls.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:98
&gt; +    m_pendingDeviceChangeEvent = false;

This pending logic seems better suited in the web process.
Since the spec is about the active document, it probably goes well in Document.

I am not sure there is a need to go through UserMediaPermissionRequestManagerProxy.
Maybe UserMediaProcessManager could directly fo the IPC to WebProcess.

There is the issue with a document that has persistent access.
One possibility would be for UIProcess/UserMediaProcessManager to get a list of all documents that have MediaDevices.ondevicechange being registered.
Then UIProcess could send a Messages::CaptureDevicesChanged with a boolean stating whether the document has (persistent) access or not.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1735
&gt; +    captureDevicesChanged();

These should not be needed.
The MockRealtimeMediaSourceCenter singleton in UIProcess should send captureDevicesChanged and trigger IPC calls like would do the regular RealtimeMediaSourceCenter.
That will allow us to validate the whole IPC path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450541</commentid>
    <comment_count>4</comment_count>
      <attachid>347229</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-15 17:16:39 -0700</bug_when>
    <thetext>Created attachment 347229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450550</commentid>
    <comment_count>5</comment_count>
      <attachid>347229</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-15 17:57:40 -0700</bug_when>
    <thetext>Comment on attachment 347229
Patch

Nice patch!
A couple of nits and questions below.

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:252
&gt; +        }

This is another patch so should probably be removed ;)

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:199
&gt; +    m_deviceChangedObserver = WTFMove(observer);

Maybe we should ASSERT(!m_deviceChangedObserver)

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h:103
&gt; +    std::function&lt;void()&gt; m_deviceChangedObserver;

Maybe WTF::Function in case we need it in the future?

&gt; Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:145
&gt; +    deviceChanged();

Potential preexisting issue and probably not a big deal, but is there a risk that we generate device change events more than needed?
Let&apos;s say we call refreshAudioCaptureDevices but m_devices/m_audioSessionCaptureDevices remain the same for instance.

&gt; Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp:100
&gt; +    RealtimeMediaSourceCenter::singleton().captureDevicesChanged();

Why is this change needed? Ditto for other changes.

&gt; Source/WebKit/UIProcess/UserMediaProcessManager.cpp:286
&gt; +            auto oldDevices = m_captureDevices;

WTFMove(m_captureDevices)

&gt; Source/WebKit/UIProcess/UserMediaProcessManager.cpp:295
&gt; +                    auto oldDevice = std::find_if(oldDevices.begin(), oldDevices.end(), [&amp;newDevice] (auto&amp; device) {

can be written as:
if (oldDevices.findMatching([&amp;newDevice] (auto&amp; device) {...} == notFound)
  haveChanges = true;

&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:43
&gt; +static WebCore::ActivityState::Flags focusedActiveWindow = WebCore::ActivityState::IsFocused | WebCore::ActivityState::WindowIsActive | WebCore::ActivityState::IsVisible;

We are adding IsVisible while the spec and name of the variable sats focused and active. Is there a reason for that?

&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:232
&gt; +    m_deviceChangeObserverMap.set(identifier, WTFMove(observer));

s/set/add/

&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:275
&gt; +    }

I guess the idea is to protect for the case of the map being modified while iterating through it.
s/it/iterator.
Another approach would be to make modifications to the map happening asynchronously in addDeviceChangeObserver/removeDeviceChangeObserver.

&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:289
&gt; +    });

Why does it need to be asynchronously removed? We could also do that lazily and never remove the observer until it gets destroyed.

&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:72
&gt; +    void activityStateDidChange(WebCore::ActivityState::Flags oldActivityState, WebCore::ActivityState::Flags newActivityState) override;

final?

&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:91
&gt; +    bool m_monitoringStateChanges { false };

m_monitoringStateChanges without an s? maybe m_monitoringActivityStateChange?

&gt; LayoutTests/fast/mediastream/device-change-event-2.html:74
&gt; +        await new Promise((resolve, reject) =&gt; {

Maybe add assert_true(document.hidden) here.

&gt; LayoutTests/fast/mediastream/device-change-event-2.html:108
&gt; +        assert_equals(eventCount, 1, &quot;one one event fired&quot;);

s/one one/one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451149</commentid>
    <comment_count>6</comment_count>
      <attachid>347229</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-17 10:33:54 -0700</bug_when>
    <thetext>Comment on attachment 347229
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:252
&gt;&gt; +        }
&gt; 
&gt; This is another patch so should probably be removed ;)

Oops!

&gt;&gt; Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:145
&gt;&gt; +    deviceChanged();
&gt; 
&gt; Potential preexisting issue and probably not a big deal, but is there a risk that we generate device change events more than needed?
&gt; Let&apos;s say we call refreshAudioCaptureDevices but m_devices/m_audioSessionCaptureDevices remain the same for instance.

Rather than doing it here and in every capture manager, the device change observer in UserMediaProcessManager::beginMonitoringCaptureDevices does filtering.

&gt;&gt; Source/WebCore/platform/mock/MockRealtimeMediaSource.cpp:100
&gt;&gt; +    RealtimeMediaSourceCenter::singleton().captureDevicesChanged();
&gt; 
&gt; Why is this change needed? Ditto for other changes.

As we discussed, this is needed so the device change observer in UserMediaProcessManager::beginMonitoringCaptureDevices is notified of the change. This code also runs in the web process, but it is a noop.

&gt;&gt; Source/WebKit/UIProcess/UserMediaProcessManager.cpp:286
&gt;&gt; +            auto oldDevices = m_captureDevices;
&gt; 
&gt; WTFMove(m_captureDevices)

Fixed.

&gt;&gt; Source/WebKit/UIProcess/UserMediaProcessManager.cpp:295
&gt;&gt; +                    auto oldDevice = std::find_if(oldDevices.begin(), oldDevices.end(), [&amp;newDevice] (auto&amp; device) {
&gt; 
&gt; can be written as:
&gt; if (oldDevices.findMatching([&amp;newDevice] (auto&amp; device) {...} == notFound)
&gt;   haveChanges = true;

Fixed.

&gt;&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:43
&gt;&gt; +static WebCore::ActivityState::Flags focusedActiveWindow = WebCore::ActivityState::IsFocused | WebCore::ActivityState::WindowIsActive | WebCore::ActivityState::IsVisible;
&gt; 
&gt; We are adding IsVisible while the spec and name of the variable sats focused and active. Is there a reason for that?

Good point, fixed.

&gt;&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:232
&gt;&gt; +    m_deviceChangeObserverMap.set(identifier, WTFMove(observer));
&gt; 
&gt; s/set/add/

Fixed.

&gt;&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:275
&gt;&gt; +    }
&gt; 
&gt; I guess the idea is to protect for the case of the map being modified while iterating through it.
&gt; s/it/iterator.
&gt; Another approach would be to make modifications to the map happening asynchronously in addDeviceChangeObserver/removeDeviceChangeObserver.

Fixe /it/iterator, but I think it is important for removeDeviceChangeObserver to be synchronous so I left the rest the same

&gt;&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:289
&gt;&gt; +    });
&gt; 
&gt; Why does it need to be asynchronously removed? We could also do that lazily and never remove the observer until it gets destroyed.

It needs to be removed asynchronously because observers are called from a loop that iterates over a HashSet member variable (see Page::setActivityState), so removing it synchronously corrupts the hash and causes a crash. I decided to remove immediately because activityStateDidChange is called *very* frequently and we only care when we have a deferred notification.

&gt;&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:72
&gt;&gt; +    void activityStateDidChange(WebCore::ActivityState::Flags oldActivityState, WebCore::ActivityState::Flags newActivityState) override;
&gt; 
&gt; final?

Yep, fixed.

&gt;&gt; Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:91
&gt;&gt; +    bool m_monitoringStateChanges { false };
&gt; 
&gt; m_monitoringStateChanges without an s? maybe m_monitoringActivityStateChange?

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/device-change-event-2.html:74
&gt;&gt; +        await new Promise((resolve, reject) =&gt; {
&gt; 
&gt; Maybe add assert_true(document.hidden) here.

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/device-change-event-2.html:108
&gt;&gt; +        assert_equals(eventCount, 1, &quot;one one event fired&quot;);
&gt; 
&gt; s/one one/one

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451150</commentid>
    <comment_count>7</comment_count>
      <attachid>347366</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-17 10:36:05 -0700</bug_when>
    <thetext>Created attachment 347366
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451197</commentid>
    <comment_count>8</comment_count>
      <attachid>347382</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-17 12:39:46 -0700</bug_when>
    <thetext>Created attachment 347382
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451600</commentid>
    <comment_count>9</comment_count>
      <attachid>347496</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-20 07:23:36 -0700</bug_when>
    <thetext>Created attachment 347496
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451611</commentid>
    <comment_count>10</comment_count>
      <attachid>347501</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-20 09:19:40 -0700</bug_when>
    <thetext>Created attachment 347501
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451635</commentid>
    <comment_count>11</comment_count>
      <attachid>347501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-20 11:10:29 -0700</bug_when>
    <thetext>Comment on attachment 347501
Patch for landing

Clearing flags on attachment: 347501

Committed r235086: &lt;https://trac.webkit.org/changeset/235086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454096</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-27 14:45:50 -0700</bug_when>
    <thetext>Looking at landed patch, it seems it reverted part of https://trac.webkit.org/changeset/234949 in RealtimeMediaSource.
Can we get these changes back in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454368</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-28 07:48:28 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; Looking at landed patch, it seems it reverted part of
&gt; https://trac.webkit.org/changeset/234949 in RealtimeMediaSource.
&gt; Can we get these changes back in?

r235422</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347035</attachid>
            <date>2018-08-13 13:51:08 -0700</date>
            <delta_ts>2018-08-15 17:16:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188521-20180813135108.patch</filename>
            <type>text/plain</type>
            <size>52576</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM4Yzk1ZWQ4NmRjN2Vj
ZDE5ZmQ5ZGVkZjJlMGI2ODJmNDZlZjBhOS4uN2MzYzAxNmY2YWI4ZGZjOWE1ODAwYjU3NmVjYWM1
NGVhNTM5N2EzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE4LTA4LTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVk
IGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwgZm9yIHRoZSBjaGFu
Z2VzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpNZWRpYURldmljZXMpOiBEZXZpY2UgY2hh
bmdlIGxpc3RlbmVyIGlzIGFkZGVkIGluIGFkZEV2ZW50TGlzdGVuZXIuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYURldmljZXM6OnN0b3ApOiBEZXZpY2UgY2hhbmdlIGxpc3RlbmVyIGlzIG9uIHRo
ZSB1c2VyIG1lZGlhIGNvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6
OmFkZEV2ZW50TGlzdGVuZXIpOiBBZGQgdGhlIGRldmljZSBjaGFuZ2UgbGlzdGVuZXIgb25seSBv
bmNlIHRoZSBmaXJzdAorICAgICAgICBldmVudCBoYW5kbGVyIGlzIGFkZGVkLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6CisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlh
Q29udHJvbGxlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBQYXNzIHRocm91Z2ggdG8gdGhl
IGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRyb2xsZXI6OnJlbW92ZURl
dmljZUNoYW5nZU9ic2VydmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6ZGV2aWNlQ2hhbmdlZCk6IE5vdGlmeSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLgor
ICAgICAgICAobmV4dE9ic2VydmVyVG9rZW4pOiBEZWxldGVkLgorICAgICAgICAoQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlbW92ZUNhcHR1cmVEZXZpY2VDaGFuZ2Vk
T2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNldERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6Om9ic2VydmVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
cmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyk6IENhbGwgYmFzZSBjbGFzcy4KKworICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlQ29ubmVj
dGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpk
ZXZpY2VEaXNjb25uZWN0ZWQpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkZXZpY2VIYXNJbnB1dFN0cmVhbXMpOiBEcml2ZS1ieSBmaXgsIGNoZWNrIHRoZSBudW1i
ZXIgb2YgYnVmZmVycyB0byBzZWUgaWYgdGhlCisgICAgICAgIGRldmljZSBoYXMgaW5wdXQgc3Ry
ZWFtcy4KKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpj
b3JlQXVkaW9DYXB0dXJlRGV2aWNlcyk6IFVzZSBuZXcgYm9vbCBwYXJhbWV0ZXIKKyAgICAgICAg
YWRkZWQgdG8gcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMgc28gd2Ugd29uJ3QgdHJpZ2dlciBh
IGRldmljZSBjaGFuZ2UgZXZlbnQgb24gdGhlIGZpcnN0IHNjYW4uCisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmlj
ZXMpOiBBZGQgcGFyYW0uCisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6ZGV2aWNlc0NoYW5nZWQpOiBVc2UgbmV3IHBhcmFtLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2
aWNlcyk6IERvbid0IG5lZWQgdG8gY2FsbCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQsCisgICAgICAg
IGl0IGlzIGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRkRGV2aWNlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVtb3ZlRGV2aWNlKTogRGl0dG8u
CisKIDIwMTgtMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9y
Zz4KIAogICAgICAgICBFeHBvc2UgQ2xvc2VFdmVudCBhbmQgQ3VzdG9tRXZlbnQgdG8gd29ya2Vy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA5ZTExYjIzYzcwODE0N2JkNzJkNTRhYzhjNjQ0MDI5NGFkNDQ5YTExLi43
ZTk5OGVhYTc0NmEwNzU4NjZlYTVjNzY5OWQwNTdkNmM0NzVmZmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU2IEBACisyMDE4LTA4LTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9y
aW5nIHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKTogTm90aWZ5IGFzIGFwcHJvcHJpYXRlLgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6dmll
d0lzQmVjb21pbmdWaXNpYmxlKTogQ2hhbmdlIG5hbWUgZnJvbQorICAgICAgICB2aWV3SXNCZWNv
bWluZ1Zpc2libGUuIENhbGwgY2FwdHVyZURldmljZXNDaGFuZ2VkIGlmIGEgY2hhbmdlIGhhcHBl
bmVkIHdoZW4gbm90IHZpc2libGUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXRjaGRvZ1RpbWVyRmlyZWQpOiBDbGVhciBtX3BlbmRp
bmdEZXZpY2VDaGFuZ2VFdmVudC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nlc3NQcmVncmFudGVkUmVxdWVzdHMpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OlVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyKTogSW5pdGlhbGl6ZSB0aW1lci4KKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6IE5ldywgbm90aWZ5IGVh
Y2ggbWFuYWdlci4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmJl
Z2luTW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKTogQ2FjaGUgdGhlIGRldmljZSBsaXN0IGFuZCAK
KyAgICAgICAgcmVnaXN0ZXIgZGV2aWNlIGNoYW5nZSBsaXN0ZW5lciB0aGUgZmlyc3QgdGltZSBp
dCBpcyBjYWxsZWQuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmJlZ2luTW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjphZGREZXZpY2VDaGFuZ2VPYnNlcnZl
cik6IEFkZCBsaXN0ZW5lciwgdGVsbCBwYWdlCisgICAgICAgIHRvIHN0YXJ0IG1vbml0b3Jpbmcg
ZGV2aWNlIGNoYW5nZXMuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBSZW1vdmUgbGlzdGVuZXIu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2Fw
dHVyZURldmljZXNDaGFuZ2VkKTogQ2FsbCBsaXN0ZW5lcnMuCisgICAgICAgICogV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjphZGREZXZpY2VDaGFuZ2VPYnNl
cnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6cmVtb3ZlRGV2aWNl
Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
VXNlck1lZGlhQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZE1vY2tN
ZWRpYURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyTW9ja01lZGlh
RGV2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZU1vY2tNZWRpYURl
dmljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0TW9ja01lZGlhRGV2aWNl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTgtMDgtMTIgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQ29sb3Ig
d2VsbHMgc2hvdWxkIGFwcGVhciBwcmVzc2VkIHdoZW4gcHJlc2VudGluZyBhIGNvbG9yIHBpY2tl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuY3BwCmluZGV4IGJlOTA1MWM5Mzk5NGQ1YmJjMTBhMGQ4YWE2OTQxOWIxNzE0YWVlYWIuLjA2
MDljMjlkNzkzNTczYzkyN2YyYmNmODFkMGRmYmYxMjhiNDcyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKICNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+
CiAKQEAgLTUxLDE3ICs1Miw2IEBAIGlubGluZSBNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZN
ZWRpYURldmljZXM6OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fZXZlbnROYW1l
cyhldmVudE5hbWVzKCkpCiB7Ci0gICAgbV9kZXZpY2VDaGFuZ2VkVG9rZW4gPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oKSB7Ci0KLSAgICAgICAgaWYgKCF3
ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG9ubHkgZGlzcGF0Y2ggYW4gZXZlbnQgaWYgdGhlIHVzZXIgaGFzIGJlZW4gZ3JhbnRlZCBh
Y2Nlc3MgdG8gdGhlIHR5cGUgb2YKLSAgICAgICAgLy8gZGV2aWNlIHRoYXQgd2FzIGFkZGVkIG9y
IHJlbW92ZWQuCi0gICAgICAgIGlmICghbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkp
Ci0gICAgICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMo
cmFuZG9tTnVtYmVyKCkgLyAyKSk7Ci0gICAgfSk7Ci0KICAgICBzdXNwZW5kSWZOZWVkZWQoKTsK
IAogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYURldmljZXM6OkRp
c3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IpID09IHN0YXRpY19jYXN0PHNpemVfdD4o
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3Ip
LCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpNb25pdG9yIGlzIG5v
dCBlcXVhbCB0byBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlw
ZTo6TW9uaXRvciBhcyBleHBlY3RlZCIpOwpAQCAtNzQsOCArNjQsMTIgQEAgTWVkaWFEZXZpY2Vz
Ojp+TWVkaWFEZXZpY2VzKCkgPSBkZWZhdWx0OwogCiB2b2lkIE1lZGlhRGV2aWNlczo6c3RvcCgp
CiB7Ci0gICAgaWYgKG1fZGV2aWNlQ2hhbmdlZFRva2VuKQotICAgICAgICBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5yZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKG1f
ZGV2aWNlQ2hhbmdlZFRva2VuKTsKKyAgICBpZiAobV9kZXZpY2VDaGFuZ2VUb2tlbikgeworICAg
ICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNv
bnRyb2xsZXIgPSBkb2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQt
PnBhZ2UoKSkgOiBudWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQgJiYgY29udHJvbGxlcikK
KyAgICAgICAgICAgIGNvbnRyb2xsZXItPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKG1fZGV2
aWNlQ2hhbmdlVG9rZW4pOworICAgIH0KIH0KIAogUmVmPE1lZGlhRGV2aWNlcz4gTWVkaWFEZXZp
Y2VzOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTgxLDYgKzE3NSwyNyBAQCBib29s
IE1lZGlhRGV2aWNlczo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYg
KCFtX2xpc3RlbmluZ0ZvckRldmljZUNoYW5nZXMgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS5kZXZpY2VjaGFuZ2VFdmVudCkgeworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRv
Y3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBkb2N1bWVudCA/IFVzZXJNZWRp
YUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBudWxscHRyOworICAgICAgICBp
ZiAoZG9jdW1lbnQgJiYgY29udHJvbGxlcikgeworICAgICAgICAgICAgbV9saXN0ZW5pbmdGb3JE
ZXZpY2VDaGFuZ2VzID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9kZXZpY2VDaGFuZ2VUb2tlbiA9
IGNvbnRyb2xsZXItPmFkZERldmljZUNoYW5nZU9ic2VydmVyKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgdGhpc10oKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8
IG1fc2NoZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVT
aG90KFNlY29uZHMocmFuZG9tTnVtYmVyKCkgLyAyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmgKaW5kZXggMDJkMWFlZjlkNmYzMTc4NjdhOTdmMTk1YmU5MDYxNDg1OTU0OWNmNS4uMGQ0MDIw
OTYzNmJiYzY4ODRjZTU1ZWVjMmNhNjBjOTJiNWY1MWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC00MSwxMSArNDEsMTEg
QEAKICNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFEZXZpY2VJbmZvOwogY2xhc3Mg
TWVkaWFTdHJlYW07CiAKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYURldmljZXMoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZp
cmVkKCk7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIGZyaWVuZCBjbGFzcyBKU01lZGlhRGV2aWNlc093bmVyOwog
CkBAIC0xMDEsOCArMTAyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIFRpbWVyIG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsK
LSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9r
ZW4gbV9kZXZpY2VDaGFuZ2VkVG9rZW47CisgICAgVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFu
Z2VPYnNlcnZlclRva2VuIG1fZGV2aWNlQ2hhbmdlVG9rZW47CiAgICAgY29uc3QgRXZlbnROYW1l
cyYgbV9ldmVudE5hbWVzOyAvLyBOZWVkIHRvIGNhY2hlIHRoaXMgc28gd2UgY2FuIHVzZSBpdCBm
cm9tIEdDIHRocmVhZHMuCisgICAgYm9vbCBtX2xpc3RlbmluZ0ZvckRldmljZUNoYW5nZXMgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggM2UzYWRl
MWE4YzJiZDVlYTcwYzAyNzYzMmQ3NjBlM2EwMTczN2RiZi4uYjBjODY4NGZhZDUxOGVlOGU2ZjFm
YjM4M2MzYTQ1MjAxMDA3MTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC00OSw2ICs0OSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlcyhNZWRpYURldmljZXNFbnVt
ZXJhdGlvblJlcXVlc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1lZGlhRGV2aWNl
c0VudW1lcmF0aW9uUmVxdWVzdChNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKSA9IDA7
CiAKKyAgICB1c2luZyBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuID0gdW5zaWduZWQ7CisgICAg
dmlydHVhbCBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9ic2VydmVy
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURl
dmljZUNoYW5nZU9ic2VydmVyKERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4pID0gMDsKKwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudCgpID0gZGVmYXVsdDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q29udHJvbGxlci5oCmluZGV4IDIyNDlhYmYyNzg2YmQyMjM1YzQwMTg4YzRhYzQ0YWExODdkNjJi
ZjUuLmIwMmZiNTkzYTk0NWUwZGE1Y2NhMmFkNzk1NmU4MzU5MmE3MmZmZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJv
bGxlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDgsNiArNDgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmlj
ZXMoTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWxNZWRp
YURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0
Jik7CiAKKyAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRk
RGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQg
cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VP
YnNlcnZlclRva2VuKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogICAgIHN0YXRpYyBVc2VyTWVkaWFDb250cm9sbGVyKiBmcm9tKFBh
Z2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVzZXJNZWRpYUNvbnRyb2xsZXIqPihTdXBw
bGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQogCkBAIC03NSw2
ICs3OCwxNiBAQCBpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpjYW5jZWxNZWRpYURl
dmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZpYwogICAgIG1fY2xpZW50LT5jYW5jZWxN
ZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QocmVxdWVzdCk7CiB9CiAKK2lubGluZSBVc2Vy
TWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gVXNlck1lZGlhQ29udHJvbGxl
cjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2
ZXIpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5hZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEZN
b3ZlKG9ic2VydmVyKSk7Cit9CisKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnJl
bW92ZURldmljZUNoYW5nZU9ic2VydmVyKFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXJUb2tlbiB0b2tlbikKK3sKKyAgICBtX2NsaWVudC0+cmVtb3ZlRGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXIodG9rZW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IGNkMTQ3YTAy
YjRjZDdjMGU4MTI3Zjk3YWMwMzk4NjVhNGY2NzI4ZWQuLjQ3N2M1ODdhNTBhYTQxYWRiMWE4YWMw
NGNkYWViMzkxYzM5ZWU4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTUwLDI0ICs1
MCwxNCBAQCBDYXB0dXJlRGV2aWNlIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNl
RnJvbVBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3Rh
dGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIG5leHRPYnNlcnZlclRva2Vu
KCkKK3ZvaWQgQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNoYW5nZWQoKQogewotICAgIHN0
YXRpYyBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6T2JzZXJ2ZXJUb2tlbiBuZXh0VG9rZW4gPSAwOwot
ICAgIHJldHVybiArK25leHRUb2tlbjsKLX0KLQotQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2Vy
dmVyVG9rZW4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2Jz
ZXJ2ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayYmIG9ic2VydmVyKQotewotICAgIGF1
dG8gdG9rZW4gPSBuZXh0T2JzZXJ2ZXJUb2tlbigpOwotICAgIG1fb2JzZXJ2ZXJzLnNldCh0b2tl
biwgV1RGTW92ZShvYnNlcnZlcikpOwotICAgIHJldHVybiB0b2tlbjsKLX0KKyAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi12b2lkIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpyZW1vdmVDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKE9ic2VydmVyVG9rZW4gdG9r
ZW4pCi17Ci0gICAgQVNTRVJUKG1fb2JzZXJ2ZXJzLmNvbnRhaW5zKHRva2VuKSk7Ci0gICAgbV9v
YnNlcnZlcnMucmVtb3ZlKHRva2VuKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisgICAgfSk7CiB9CiAKLQog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCA0
NWVkYjMwMGMzYjcyZTg3NzM0NWM5ZjAwMjM2ZmQwNmQzNTQ5Y2RlLi5kYjZiZDY4MWY4YzAxZDlk
ZTM1YWU3YmZhYWI0NTljYTVmMGIxOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTI5LDIz
ICsyOSwxOSBAQAogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKK2NsYXNzIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENhcHR1cmVEZXZpY2VNYW5hZ2Vy
PiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBPYnNlcnZlclRva2VuID0gdWludDMyX3Q7
Ci0gICAgdmlydHVhbCBPYnNlcnZlclRva2VuIGFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2
ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayYmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuKTsKLQogICAgIHZp
cnR1YWwgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0gMDsK
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdp
dGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJikg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DYXB0
dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZUZyb21Q
ZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQpOwotICAgIEhhc2hNYXA8
T2JzZXJ2ZXJUb2tlbiwgQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjaz4gbV9vYnNlcnZlcnM7
CisgICAgdm9pZCBkZXZpY2VDaGFuZ2VkKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDM4ODZmZjg3NWNlODlmNWMx
MDhjNDM3YmI5Y2FhMmY0ZDdmMTYwMmEuLmQ4YmJiZWNlMmY0OTQzZDI3NWI2OWFlYWNjNGE4Y2Jk
MWRlNTQ5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC01MywxMiAr
NTMsNiBAQCBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciomIG1lZGlhU3RyZWFtQ2Vu
dGVyT3ZlcnJpZGUoKQogICAgIHJldHVybiBvdmVycmlkZTsKIH0KIAotc3RhdGljIEhhc2hNYXA8
dW5zaWduZWQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4mIG9ic2VydmVyTWFwKCkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+Pj4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpCiB7CiAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlciogb3ZlcnJpZGUgPSBtZWRpYVN0cmVhbUNlbnRlck92ZXJyaWRl
KCk7CkBAIC0xOTksMjUgKzE5MywxNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzZXREZXZpY2VFbmFibGVkKGNvbnN0IFN0cmluZyYgaWQsCiAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKIH0KIAotUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6RGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OmFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYg
b2JzZXJ2ZXIpCi17Ci0gICAgc3RhdGljIERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBuZXh0
VG9rZW4gPSAwOwotICAgIG9ic2VydmVyTWFwKCkuc2V0KCsrbmV4dFRva2VuLCBXVEZNb3ZlKG9i
c2VydmVyKSk7Ci0gICAgcmV0dXJuIG5leHRUb2tlbjsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKERldmljZXNDaGFuZ2Vk
T2JzZXJ2ZXJUb2tlbiB0b2tlbikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0
RGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikK
IHsKLSAgICBib29sIHdhc1JlbW92ZWQgPSBvYnNlcnZlck1hcCgpLnJlbW92ZSh0b2tlbik7Ci0g
ICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIG1fZGV2aWNlQ2hhbmdlZE9ic2VydmVyID0gV1RGTW92ZShvYnNl
cnZlcik7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y2FwdHVyZURldmlj
ZXNDaGFuZ2VkKCkKIHsKLSAgICAvLyBDb3B5IHRoZSBoYXNoIG1hcCBiZWNhdXNlIHRoZSBvYnNl
cnZlciBjYWxsYmFjayBtYXkgY2FsbCBiYWNrIGluIGFuZCBtb2RpZnkgdGhlIG1hcC4KLSAgICBh
dXRvIGNhbGxiYWNrcyA9IG9ic2VydmVyTWFwKCk7Ci0gICAgZm9yIChhdXRvJiBpdCA6IGNhbGxi
YWNrcykKLSAgICAgICAgaXQudmFsdWUoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2RldmljZUNoYW5nZWRPYnNlcnZlcikKKyAgICAgICAgbV9kZXZpY2VDaGFuZ2Vk
T2JzZXJ2ZXIoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhWYWxpZENvbnN0cmFpbnRzSGFuZGxlciYmIHZhbGlkSGFuZGxl
ciwgSW52YWxpZENvbnN0cmFpbnRzSGFuZGxlciYmIGludmFsaWRIYW5kbGVyLCBjb25zdCBNZWRp
YVN0cmVhbVJlcXVlc3QmIHJlcXVlc3QsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2Fs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCBlZjdiM2NmY2Q5MTZlZGNjYWU2
MjBlNDQyMWY4YzBiYWJlOGZlM2VjLi43NGE5MDAwNjY4MWMzNjFmMDE2NTA0M2I4YTNlZDFlMGJk
N2ViNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBAIC04NSwyMiArODUsMjIg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmlj
ZVdpdGhVbmlxdWVJRChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXREZXZpY2VFbmFibGVkKGNv
bnN0IFN0cmluZyYsIGJvb2wpOwogCi0gICAgdXNpbmcgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRv
a2VuID0gdW5zaWduZWQ7Ci0gICAgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIGFkZERldmlj
ZXNDaGFuZ2VkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVt
b3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShi
b29sLCBib29sKTsKIAorICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisKIHByb3Rl
Y3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCk7CiAKLSAgICB2b2lkIGNhcHR1
cmVEZXZpY2VzQ2hhbmdlZCgpOwotCiAgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXImIHBsYXRmb3JtQ2VudGVyKCk7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAKICAgICBDYXB0dXJlRGV2aWNlTWFu
YWdlciogbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVsbHB0ciB9OwogICAgIENhcHR1
cmVEZXZpY2VNYW5hZ2VyKiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgeyBudWxscHRyIH07
CisKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9kZXZpY2VDaGFuZ2VkT2JzZXJ2ZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDMyZTcwZTE2ZGNhMzA2ZjVmZDc5MGQy
ZTM0NTE1NzgxZjc3NzZmNGUuLjFiNDA4NzlkZGJjZGQ1M2E2MzUzMTkyNjY2ZjU3ZDM4NjEwMmM2
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9B
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oSU9TKQogCiAjaW5jbHVkZSAiQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLmgiCisj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgPEFWRm91bmRh
dGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0MSw4ICsxNDIsNyBAQCB2b2lkIEFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCkKICAg
ICBtX2F1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzID0gV1RGTW92ZShuZXdBdWRpb0RldmljZXMp
OwogICAgIG1fZGV2aWNlcyA9IFdURk1vdmUobmV3RGV2aWNlcyk7CiAKLSAgICBmb3IgKGF1dG8m
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIG9ic2VydmVyKCk7Cisg
ICAgZGV2aWNlQ2hhbmdlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGMwMTFiMjZlNjg2YjA1YzFmYTBiNjlhMGQ5
MWQ3Y2YwY2E2M2YzNDAuLjIzOWJlNjhmYjI4MDI2NzM2NTkyMjc3N2QyODRhZjUzOTFjN2I0ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xNzksOSArMTc5LDcgQEAg
dm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlv
bnMoKQogdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VDb25uZWN0ZWQoKQogewog
ICAgIHJlZnJlc2hDYXB0dXJlRGV2aWNlcygpOwotCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6
IG1fb2JzZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNo
YW5nZWQoKTsKIH0KIAogdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25u
ZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQpAQCAtMjAwLDggKzE5OCw3IEBA
IHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVy
ZURldmljZVR5cGVkZWYqIGRldmljZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0
byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgb2JzZXJ2ZXIoKTsK
KyAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDU0MTNhOGY4
NjcyMjIwNGU0YzQyZmFlNmVlZGIzMDZhNTJmNTUxYTguLjAwODllYzRhMTNiNzhhZmUyMmZjOWE3
NGIxM2ZhNGEzZDEwOGFhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2lu
Y2x1ZGUgPENvcmVNZWRpYS9DTVN5bmMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpA
QCAtNjQsMTAgKzY1LDE3IEBAIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiBzdGF0aWMgYm9vbCBk
ZXZpY2VIYXNJbnB1dFN0cmVhbXMoQXVkaW9PYmplY3RJRCBkZXZpY2VJRCkKIHsKICAgICBVSW50
MzIgZGF0YVNpemUgPSAwOwotICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3Mg
PSB7IGtBdWRpb0RldmljZVByb3BlcnR5U3RyZWFtcywga0F1ZGlvRGV2aWNlUHJvcGVydHlTY29w
ZUlucHV0LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVh
bUNvbmZpZ3VyYXRpb24sIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2Jq
ZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CiAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdl
dFByb3BlcnR5RGF0YVNpemUoZGV2aWNlSUQsICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNp
emUpOwogCi0gICAgcmV0dXJuICFlcnIgJiYgZGF0YVNpemU7CisgICAgaWYgKGVyciB8fCAhZGF0
YVNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyTGlzdCA9IHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KChBdWRpb0J1ZmZlckxpc3QqKSA6Om9wZXJh
dG9yIG5ldyAoZGF0YVNpemUpKTsKKyAgICBtZW1zZXQoYnVmZmVyTGlzdC5nZXQoKSwgMCwgZGF0
YVNpemUpOworICAgIGVyciA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRldmljZUlELCAm
YWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplLCBidWZmZXJMaXN0LmdldCgpKTsKKworICAg
IHJldHVybiAhZXJyICYmIGJ1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1ZhbGlkQ2FwdHVyZURldmljZShjb25zdCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlJiBk
ZXZpY2UpCkBAIC04MSw3ICs4OSw3IEBAIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYg
Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRpb0NhcHR1cmVECiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBp
bml0aWFsaXplZCA9IHRydWU7Ci0gICAgICAgIHJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7
CisgICAgICAgIHJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKHRydWUpOwogCiAgICAgICAgIEF1
ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVy
dHlEZXZpY2VzLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKICAgICAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEFk
ZFByb3BlcnR5TGlzdGVuZXIoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgZGV2
aWNlc0NoYW5nZWQsIHRoaXMpOwpAQCAtMTAyLDcgKzExMCw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29y
ZUF1ZGlvQ2FwdHVyZURldmljZT4gQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVB
dWRpb0RlCiB9CiAKIAotdm9pZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVz
aEF1ZGlvQ2FwdHVyZURldmljZXMoKQordm9pZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoYm9vbCBmaXJzdFJlZnJlc2gpCiB7CiAgICAg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9w
ZXJ0eURldmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVj
dFByb3BlcnR5RWxlbWVudE1hc3RlciB9OwogICAgIFVJbnQzMiBkYXRhU2l6ZSA9IDA7CkBAIC0x
NTYsMTMgKzE2NCwxMyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZy
ZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVy
ZURldmljZSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
LnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGlmICghZmlyc3RSZWZyZXNoKQor
ICAgICAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9CiAKIE9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0
IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgc3Rh
dGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJl
c2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKGZh
bHNlKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIuaAppbmRleCA4YzI4ZTgyNzk4NGNhZmY0ODZhNDU1NDE5MDU1MTAzNzVhNDU5
MDJkLi40MTdkYTE0NTIzOWZjYzM2ZmU3YjhkMjhjNjU3Nzc2YTg4NjAyODlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNTUsNyArNTUsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElE
LCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCopOwogICAg
IFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29yZUF1ZGlvQ2FwdHVyZURldmljZXMo
KTsKIAotICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICB2b2lkIHJl
ZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKGJvb2wpOwogCiAgICAgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+IG1fZGV2aWNlczsKICAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gbV9jb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGY5
MWViZTBmZTg1NDQxMTRhNjYyYzc2ZTQyYWZjYTdhNzAwZWRhYy4uZGViNWFjNWNhZmExOTEzMjgw
MGVkYTk2YWI1MDQ4MzczY2FmYjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAg
LTU1LDE5ICs1NSwxNiBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoYm9vbAogdm9pZCBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYm
IG5ld01vY2tEZXZpY2VzKQogewogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzZXREZXZp
Y2VzKFdURk1vdmUobmV3TW9ja0RldmljZXMpKTsKLSAgICBzaW5nbGV0b24oKS5jYXB0dXJlRGV2
aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQogewogICAgIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjphZGREZXZpY2UoZGV2aWNlKTsKLSAgICBzaW5nbGV0b24oKS5jYXB0
dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6cmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQogewogICAgIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKLSAgICBz
aW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDNjMDcyOTVm
MTA1M2ZjMTVkY2M4ODQ0NTYzMjkwNWI4YzNmY2I5NmIuLjZlOTY5MTBmMzllY2E2ODkzNmQ2N2Fk
MDVhNTc1OGU5NDE5MDc3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
QEAgLTc3LDYgKzc3LDI4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnN0b3BDYXB0dXJlKCkKICAgICBtX3BhZ2Uuc3RvcE1lZGlhQ2FwdHVyZSgpOwogfQog
Cit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjYXB0dXJlRGV2
aWNlc0NoYW5nZWQoKQoreworICAgIC8vIFdoZW4gbmV3IG1lZGlhIGlucHV0IGFuZC9vciBvdXRw
dXQgZGV2aWNlcyBhcmUgbWFkZSBhdmFpbGFibGUsIG9yIGFueSBhdmFpbGFibGUgaW5wdXQgYW5k
L29yCisgICAgLy8gb3V0cHV0IGRldmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlLCB0aGUgVXNlciBB
Z2VudCBNVVNUIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIGJyb3dzaW5nCisgICAgLy8gY29u
dGV4dHMgd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEgYXJlIG1l
dCwgYnV0IGluIG5vIG90aGVyIGNvbnRleHRzOgorCisgICAgLy8gKiBUaGUgcGVybWlzc2lvbiBz
dGF0ZSBvZiB0aGUgImRldmljZS1pbmZvIiBwZXJtaXNzaW9uIGlzICJncmFudGVkIiwKKyAgICAv
LyAqIGFueSBvZiB0aGUgaW5wdXQgZGV2aWNlcyBhcmUgYXR0YWNoZWQgdG8gYW4gYWN0aXZlIE1l
ZGlhU3RyZWFtIGluIHRoZSBicm93c2luZyBjb250ZXh0LCBvcgorICAgIC8vICogdGhlIGFjdGl2
ZSBkb2N1bWVudCBpcyBmdWxseSBhY3RpdmUgYW5kIGhhcyBmb2N1cy4KKworICAgIC8vIEZJWE1F
OiBhIHBhZ2Ugd2l0aCBwZXJzaXN0ZW50IGFjY2VzcyBzaG91bGQgYWx3YXlzIGdldCBkZXZpY2Ug
Y2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgYm9vbCBpc0FjdGl2ZSA9IG1fcGFnZS5pc1ZpZXdW
aXNpYmxlKCkgJiYgbV9wYWdlLmlzVmlld0ZvY3VzZWQoKSAmJiBtX3BhZ2UuaXNWaWV3V2luZG93
QWN0aXZlKCk7CisgICAgaWYgKCFpc0FjdGl2ZSAmJiAhKG1fY2FwdHVyZVN0YXRlICYgYWN0aXZl
Q2FwdHVyZU1hc2spKSB7CisgICAgICAgIGlmICghaXNBY3RpdmUpCisgICAgICAgICAgICBtX3Bl
bmRpbmdEZXZpY2VDaGFuZ2VFdmVudCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3BlbmRpbmdEZXZpY2VDaGFuZ2VFdmVudCA9IGZhbHNlOworICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCksIG1f
cGFnZS5wYWdlSUQoKSk7Cit9CisKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmNsZWFyQ2FjaGVkU3RhdGUoKQogewogICAgIGludmFsaWRhdGVQZW5kaW5nUmVx
dWVzdHMoKTsKQEAgLTQzNCwxMSArNDU2LDE0IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVTdGF0ZUNoYW5nZWQoTWVkaWFQcm9kdWNlcjo6CiAj
ZW5kaWYKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cHJvY2Vzc1ByZWdyYW50ZWRSZXF1ZXN0cygpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUoKQogewogICAgIGZvciAoYXV0
byYgcmVxdWVzdCA6IG1fcHJlZ3JhbnRlZFJlcXVlc3RzKQogICAgICAgICByZXF1ZXN0LT5hbGxv
dygpOwogICAgIG1fcHJlZ3JhbnRlZFJlcXVlc3RzLmNsZWFyKCk7CisKKyAgICBpZiAobV9wZW5k
aW5nRGV2aWNlQ2hhbmdlRXZlbnQpCisgICAgICAgIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwog
fQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXRjaGRv
Z1RpbWVyRmlyZWQoKQpAQCAtNDQ2LDYgKzQ3MSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OndhdGNoZG9nVGltZXJGaXJlZCgpCiAgICAgbV9ncmFudGVk
UmVxdWVzdHMuY2xlYXIoKTsKICAgICBtX3ByZWdyYW50ZWRSZXF1ZXN0cy5jbGVhcigpOwogICAg
IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSAwX3M7CisgICAgbV9wZW5kaW5nRGV2aWNlQ2hh
bmdlRXZlbnQgPSBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCA1NzNhZjA0ZDcxYjg1Mzk1NzUxMjQ5OWQ5MmM0MzA2
NDhiYmQxNzlmLi42ZWY2YzFlMWQ5NDIxMTFhNjMzMmY4ZjE0YzdhNTk2NjljNjhmYzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
ICB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
IHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVz
dCYpOwogCiAgICAgdm9pZCByZXNldEFjY2Vzcyh1aW50NjRfdCBtYWluRnJhbWVJRCk7Ci0gICAg
dm9pZCBwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKCk7CisgICAgdm9pZCB2aWV3SXNCZWNvbWlu
Z1Zpc2libGUoKTsKIAogICAgIHZvaWQgdXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1aW50NjRf
dCwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYmIGF1ZGlvRGV2aWNlLCBXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlJiYgdmlkZW9EZXZpY2UpOwogICAgIHZvaWQgdXNlck1lZGlhQWNjZXNzV2FzRGVuaWVk
KHVpbnQ2NF90LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb24pOwpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZU5leHRSZWplY3Rpb24oKTsKICAgICB2b2lkIHJlamVjdGlvblRpbWVyRmlyZWQoKTsKICAg
ICB2b2lkIGNsZWFyQ2FjaGVkU3RhdGUoKTsKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdl
ZCgpOwogCiAgICAgdm9pZCBjYXB0dXJlU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6Ok1lZGlhU3RhdGVGbGFncyBvbGRTdGF0ZSwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG5ld1N0YXRlKTsKIApAQCAtMTAxLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fY2FwdHVyZVN0YXRl
IHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgUnVuTG9vcDo6
VGltZXI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fd2F0Y2hkb2dU
aW1lcjsKICAgICBTZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBt
X3BlbmRpbmdEZXZpY2VDaGFuZ2VFdmVudCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcAppbmRleCA3YWU2OTA5NzQ2YmZkNzg5M2QxY2U5ZjMwOTg4NGRkMzE2M2Jj
NGMyLi5hNDkxZjU2MTcyMmRlYmQ1MDU5NWUxMzM2NDU4OTJlYmZiODk1OGI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzUsNiArMzYsOCBA
QCBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGF1ZGlvRXh0ZW5zaW9uUGF0aCB7ICJjb20uYXBw
bGUud2Via2l0Lm1pY3JvcGhvbmUiX3MgfQogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCB2aWRl
b0V4dGVuc2lvblBhdGggeyAiY29tLmFwcGxlLndlYmtpdC5jYW1lcmEiX3MgfTsKICNlbmRpZgog
CitzdGF0aWMgY29uc3QgU2Vjb25kcyBkZXZpY2VDaGFuZ2VEZWJvdW5jZVRpbWVyIHsgMTAwX21z
IH07CisKIGNsYXNzIFByb2Nlc3NTdGF0ZSB7CiBwdWJsaWM6CiAgICAgUHJvY2Vzc1N0YXRlKCkg
eyB9CkBAIC0xMDEsNiArMTA0LDExIEBAIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAor
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyKCkKKyAgICA6
IG1fZGVib3VuY2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKQoreworfQorCiB2b2lkIFVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyOjphZGRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCiB7CiAgICAgcHJv
Y2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpLmFkZFJlcXVlc3RNYW5hZ2VyKHByb3h5
KTsKQEAgLTI1NCw2ICsyNjIsNTcgQEAgdm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2V0
Q2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAordm9pZCBVc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKK3sKKyAgICBhdXRvJiBtYXAg
PSBzdGF0ZU1hcCgpOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtYXApIHsKKyAgICAgICAgYXV0
byogcHJvY2VzcyA9IHN0YXRlLmtleTsKKyAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogc3Rh
dGUudmFsdWUtPm1hbmFnZXJzKCkpIHsKKyAgICAgICAgICAgIGlmIChtYXAuZmluZChwcm9jZXNz
KSA9PSBtYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtYW5h
Z2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMo
KQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbdGhpc10geworICAgICAgICBtX2NhcHR1cmVEZXZpY2VzID0gV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJl
YW1EZXZpY2VzKCk7CisKKyAgICAgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuc2V0RGV2aWNlc0NoYW5nZWRPYnNlcnZlcihbdGhpc10oKSB7CisgICAg
ICAgICAgICBhdXRvIG9sZERldmljZXMgPSBtX2NhcHR1cmVEZXZpY2VzOworICAgICAgICAgICAg
bV9jYXB0dXJlRGV2aWNlcyA9IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNp
bmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOworCisgICAgICAgICAgICBpZiAobV9j
YXB0dXJlRGV2aWNlcy5zaXplKCkgPT0gb2xkRGV2aWNlcy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICBib29sIGhhdmVDaGFuZ2VzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yIChhdXRv
ICZuZXdEZXZpY2UgOiBtX2NhcHR1cmVEZXZpY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChuZXdEZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OkNhbWVyYSAmJiBuZXdEZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6Ok1pY3JvcGhvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgICAgICAgICBhdXRvIG9sZERldmljZSA9IHN0ZDo6ZmluZF9pZihvbGRE
ZXZpY2VzLmJlZ2luKCksIG9sZERldmljZXMuZW5kKCksIFsmbmV3RGV2aWNlXSAoYXV0byYgZGV2
aWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3RGV2aWNlLnBlcnNpc3Rl
bnRJZCgpID09IGRldmljZS5wZXJzaXN0ZW50SWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGREZXZpY2UgPT0gb2xkRGV2aWNlcy5lbmQoKSB8
fCBuZXdEZXZpY2UuZW5hYmxlZCgpICE9IG9sZERldmljZS0+ZW5hYmxlZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBoYXZlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmICghaGF2ZUNoYW5nZXMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2hlbiBhIGRldmljZSB3aXRo
IGNhbWVyYSBhbmQgbWljcm9waG9uZSBpcyBhdHRhY2hlZCBvciBkZXRhY2hlZCwgdGhlIENhcHR1
cmVEZXZpY2Ugbm90aWZpY2F0aW9uIGZvcgorICAgICAgICAgICAgLy8gdGhlIGRpZmZlcmVudCBk
ZXZpY2VzIHdvbid0IGFycml2ZSBhdCB0aGUgc2FtZSB0aW1lIHNvIGRlbGF5IGEgYml0IHNvIHdl
IGNhbiBjb2FsZXNjZSB0aGUgY2FsbGJhY2tzLgorICAgICAgICAgICAgaWYgKCFtX2RlYm91bmNl
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICBtX2RlYm91bmNlVGltZXIuc3RhcnRP
bmVTaG90KGRldmljZUNoYW5nZURlYm91bmNlVGltZXIpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggODE5OThiNGFjYjdk
ZGY5MWQ1MGE4M2M3OWQyZTVjYWMzZDE4NzQ3My4uNDg1Y2Q5OGYxOTBiMDFjMDFlY2E1YjZmMWZl
YWEwNTE2M2NmNGIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5oCkBAIC0yMSw2ICsyMSw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DYXB0dXJlRGV2aWNlLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTMxLDYgKzMzLDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBzaW5nbGV0b24oKTsKIAor
ICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyKCk7CisKICAgICB2b2lkIGFkZFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5Jik7CiAgICAgdm9pZCByZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOwogCkBA
IC00NSw3ICs0OSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbnlOZXh0VXNlck1lZGlhUmVx
dWVzdCgpIHsgbV9kZW55TmV4dFJlcXVlc3QgPSB0cnVlOyB9CiAKKyAgICB2b2lkIGJlZ2luTW9u
aXRvcmluZ0NhcHR1cmVEZXZpY2VzKCk7CisKIHByaXZhdGU6CisgICAgdm9pZCBjYXB0dXJlRGV2
aWNlc0NoYW5nZWQoKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiBtX2Nh
cHR1cmVEZXZpY2VzOworICAgIFJ1bkxvb3A6OlRpbWVyPFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
PiBtX2RlYm91bmNlVGltZXI7CiAgICAgYm9vbCBtX2NhcHR1cmVFbmFibGVkIHsgdHJ1ZSB9Owog
ICAgIGJvb2wgbV9kZW55TmV4dFJlcXVlc3QgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFjMTdiNDI0YzMyMDRlZjliMDgyYmExMTcx
YWE0MWU3ZWNjM2MyNzIuLmJhOTA0ZmU0YTEzMzliNWI0ZTViNjhiNTU1NjUxN2I3YmI5YjJkZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg5MCw3ICsz
ODkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRf
dCBmcmFtZUlEKQogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdJc0JlY29taW5nVmlzaWJsZSgpCiB7
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoKS5wcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKCk7CisgICAgdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkudmlld0lzQmVjb21pbmdWaXNpYmxlKCk7CiAjZW5kaWYK
IH0KIApAQCAtNjUyMSw2ICs2NTIxLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnVtZXJhdGVN
ZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QKICNlbmRp
ZgogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMo
KQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbigpLmJlZ2luTW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKCk7CisjZW5kaWYK
K30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyVXNlck1lZGlhU3RhdGUoKQogewogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDZhNWIyNTlmY2FlYTZkODkyOGYwOTg4OWM3OTgwNDVlYjEwZDg4MTUuLjE4NWVjZjAxNzkz
OGNhNTQ1YjE3YjAzYmZjYTdiOWRiOGZhYTA0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xNDkxLDYgKzE0OTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
dm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRp
YUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0Jik7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmlj
ZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
bkRhdGEpOworICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKIAogICAg
IHZvaWQgcnVuTW9kYWwoKTsKICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJ
blJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGIzMWY1ZjBiZTM0Y2M5NDg5Mjdh
OWIxMzZkMGNjMzJjNTFiYzljMmEuLjZkMjlhOWZkMmU0NjNkZjlhMGYwNmUwMzQ3ZmFjNjQ1MWI1
YzA4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTI4Nyw2ICsyODcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgICMgTWVkaWFTdGVhbSBtZXNzYWdlcwogICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsRG9jdW1lbnRP
cmlnaW5JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IHJlcXVl
c3QpCiAgICAgRW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlh
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKQorICAgIEJlZ2lu
TW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKCkKICNlbmRpZgogCiAgICAgIyBOb3RpZmljYXRpb24g
bWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKaW5kZXggOWNjYWNlMDU3N2M3ZmJjOGZmNTcwNmJkZmFkOTNlNDM3Y2M2ZTFmMy4uMTE4N2Nm
Njk5Zjg1YTMzODQzNjQzOGMyYmQ1YzllYWM2ZDA4MTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTIyMiw2ICsyMjIsMzEgQEAgdm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJldm9rZVVzZXJNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zKGMKICAgICB9CiB9CiAKK1VzZXJNZWRpYUNsaWVudDo6RGV2aWNl
Q2hhbmdlT2JzZXJ2ZXJUb2tlbiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmFk
ZERldmljZUNoYW5nZU9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQor
eworICAgIHN0YXRpYyBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4g
bmV4dFRva2VuID0gMDsKKyAgICBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwLnNldCgrK25leHRU
b2tlbiwgV1RGTW92ZShvYnNlcnZlcikpOworCisgICAgaWYgKCFtX21vbml0b3JpbmdEZXZpY2VD
aGFuZ2UpIHsKKyAgICAgICAgbV9tb25pdG9yaW5nRGV2aWNlQ2hhbmdlID0gdHJ1ZTsKKyAgICAg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmVnaW5Nb25pdG9yaW5nQ2Fw
dHVyZURldmljZXMoKSk7CisgICAgfQorICAgIHJldHVybiBuZXh0VG9rZW47Cit9CisKK3ZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNl
cnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gdG9rZW4pCit7
CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5yZW1vdmUo
dG9rZW4pOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Cit9CisK
K3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlc0No
YW5nZWQoKQoreworICAgIGF1dG8gY2FsbGJhY2tzID0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1h
cDsKKyAgICBmb3IgKGF1dG8mIGl0IDogY2FsbGJhY2tzKQorICAgICAgICBpdC52YWx1ZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXgg
YTdlZmM4YWRlYWFlZTUwOTA1YWM0MGE3ODUyNTVlOGY2ZjhiNDE0MC4uODdiODBlYWQ3MWQzMjA1
ZjkxNTcyODEzY2EwYWE4ZTZhZDA0ZTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtNTUsNiArNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zJiYpOwogICAgIHZvaWQgcmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAorICAgIFdlYkNvcmU6OlVzZXJNZWRpYUNs
aWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNl
cnZlcihXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4p
OworICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBzZW5kVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKQEAg
LTczLDYgKzc3LDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpNZWRp
YURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q+LCB1aW50NjRfdD4gbV9tZWRpYURldmljZXNFbnVt
ZXJhdGlvblJlcXVlc3RUb0lETWFwOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPj4gbV91c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczsKKworICAg
IEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9kZXZpY2VDaGFuZ2VP
YnNlcnZlck1hcDsKKyAgICBib29sIG1fbW9uaXRvcmluZ0RldmljZUNoYW5nZSB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAK
aW5kZXggNmY2MDU3NDJlZWMzMDQyMDJhNjQwNGI1MzViY2E3YzU1NTliNGZkMS4uMDU1NjY3Nzhi
NzgyZDAxMWUxZjI5ZDQ4NDc3OTc5NjgzYWNiODRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5jcHAKQEAgLTYyLDYgKzYyLDE2IEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxN
ZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZpY2VzRW51bWVyCiAgICAgbV9w
YWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmNhbmNlbE1lZGlhRGV2aWNl
c0VudW1lcmF0aW9uKHJlcXVlc3QpOwogfQogCitXZWJVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNo
YW5nZU9ic2VydmVyVG9rZW4gV2ViVXNlck1lZGlhQ2xpZW50OjphZGREZXZpY2VDaGFuZ2VPYnNl
cnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKK3sKKyAgICByZXR1cm4gbV9w
YWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmFkZERldmljZUNoYW5nZU9i
c2VydmVyKFdURk1vdmUob2JzZXJ2ZXIpKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6
OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gdG9r
ZW4pCit7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnJl
bW92ZURldmljZUNoYW5nZU9ic2VydmVyKHRva2VuKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiAjZW5kaWYgLy8gTUVESUFfU1RSRUFNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5k
ZXggYTZlMzEzMjYyZDViYTdjNGJhZjQzYmQzMDRmM2Q4Njk4MDk0ZjM2Yy4uN2U2N2ZkMzE5MjY1
ZmVkNzA1ZTcyYjk4ZTA1ZTU2NzY5MDA0ZTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApA
QCAtNDIsNiArNDIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW51bWVyYXRlTWVkaWFEZXZpY2Vz
KFdlYkNvcmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0KFdlYkNvcmU6Ok1lZGlhRGV2
aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpIGZpbmFsOwogCisgICAgRGV2aWNlQ2hhbmdlT2JzZXJ2
ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJikg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcihEZXZpY2VDaGFuZ2VP
YnNlcnZlclRva2VuKSBmaW5hbDsKKwogICAgIHZvaWQgaW5pdGlhbGl6ZUZhY3RvcmllcygpOwog
CiAgICAgV2ViUGFnZSYgbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBkNmI5NjU1Njg2NmQ5ODU2MGIwYjJlZjRlM2RhODVlNTU3Mzkz
M2VhLi4wNThmZDFkOTljYjM1M2I0MWE2MWMwZTgwYjdjMjdkNzczODI0ZmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzc1Nyw2ICszNzU3
LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVp
bnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0CiB7CiAgICAgbV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXItPmRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1c2Vy
TWVkaWFJRCwgZGV2aWNlcywgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBvcmln
aW5IYXNQZXJzaXN0ZW50QWNjZXNzKTsKIH0KKwordm9pZCBXZWJQYWdlOjpjYXB0dXJlRGV2aWNl
c0NoYW5nZWQoKQoreworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5j
YXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKK30KKwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lP
TlMpCiB2b2lkIFdlYlBhZ2U6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMo
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYmIGV4dGVuc2lvbnMpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDA4YWRkZDA4ZTNjMjk4Mjk2
MjUyNzQ3ODljOWViNTkxMTcxNDUxZS4uMzljNGQ2YTBkMDlmODAyZGVmOGU3MzdlMmE1YmUzOGE0
NWFkYjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtNTY1LDYgKzU2NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciYgdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOyB9CiAgICAgdm9pZCBwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
KTsKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogI2VuZGlmCiAKICAgICB2b2lk
IGVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxYzQ0ZDc3ZTY1
MjRkNjM2NjIzZTQyNDZmMjU2YTU3MTZiMWMwMzc5Li41ZmJlN2I4YTU1ZTA4MzljZDk5ODZkZjE2
NGVmMDBlOTZjZDYyZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMxOSw2ICszMTksNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVk
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIGF1ZGlvRGV2aWNl
LCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlIHZpZGVvRGV2aWNlLCBTdHJpbmcgbWVkaWFEZXZpY2VJ
ZGVudGlmaWVySGFzaFNhbHQpCiAgICAgVXNlck1lZGlhQWNjZXNzV2FzRGVuaWVkKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCB1aW50NjRfdCByZWFzb24sIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludCkK
ICAgICBEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odWludDY0X3QgdXNlck1lZGlh
SUQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiBkZXZpY2VzLCBTdHJpbmcgbWVkaWFE
ZXZpY2VJZGVudGlmaWVySGFzaFNhbHQsIGJvb2wgaGFzUGVyc2lzdGVudEFjY2VzcykKKyAgICBD
YXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAg
ICAgR3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhXZWJLaXQ6Ok1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMgc2FuZGJveEV4dGVuc2lvbnMpCiAgICAgUmV2b2tlVXNlck1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lv
bklEcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0MTZkZjgw
N2M2ZmJlY2M1ZWU3ZmIzOTg3ZTlkNmZlZWExZTc1Njg4Li44NjZiMGI0NTBmNTMxNTAxNGUwZDMy
MTNkODgxOGNjYmU0YTQ5YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xNzMyLDIxICsxNzMyLDMxIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzCiB2b2lk
IFdlYlByb2Nlc3M6OmFkZE1vY2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFE
ZXZpY2UmIGRldmljZSkKIHsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRk
RGV2aWNlKGRldmljZSk7CisgICAgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzczo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKCkKIHsKICAgICBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlcyh7IH0pOworICAgIGNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1vY2tNZWRpYURldmljZShjb25z
dCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKIHsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6cmVtb3ZlRGV2aWNlKHBlcnNpc3RlbnRJZCk7CisgICAgY2FwdHVyZURldmljZXNDaGFu
Z2VkKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKCkKIHsK
ICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXREZXZpY2VzKCk7CisgICAgY2FwdHVy
ZURldmljZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6Y2FwdHVyZURldmljZXND
aGFuZ2VkKCkKK3sKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCisg
ICAgICAgIHBhZ2UtPmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDAzMGE3MThmZDk4NDNlMTAwNDkwY2U4
MzY0ZTRkODJiNDk5MTU1NWUuLjQ5NjExMTRlMDEwN2ZjMzZlNDI2MTZjZGExNWI4ZGRiZmViNmQ0
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzY2LDYgKzM2Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lk
IHJlbW92ZU1vY2tNZWRpYURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCk7CiAgICAg
dm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWE0YjM5
NWZkZTBhZTIyZjczMjFmODhlMGQzMzY4Y2FlMWE1NzI4YS4uOGE2ODU2ZGNjZTc0NzcyNDUzYzEx
OGNhNTYyY2ZmNWQwNTE3MGM2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTEzICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0
cmVhbV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbDogVXBkYXRlZC4KKwog
MjAxOC0wOC0xMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBXUEUgZ2FyZGVuaW5nLiBDbGVhbmVkIHVwIHRlc3QgZXhwZWN0YXRpb25z
IGZvciB0ZXN0cyB1bmRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0CmluZGV4IDY0YzZi
NjEwNzZmYWFhM2RlNGY4MTY4Zjc5NjljZjEwZjYwN2E2OWQuLjlhMmM3NmMwNzFjNWZhOTEwZjk1
NDBhZjRhMjk4ZDE0ZTdkZGYxM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50eHQKQEAg
LTEsMyArMSw1IEBACiAKIFBBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQgZmlyZWQgd2hlbiBkZXZp
Y2UgbGlzdCBjaGFuZ2VzIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudCBub3QgZmlyZWQgdW50
aWwgdGhlIGRvY3VtZW50IGlzIHZpc2libGUgCitQQVNTICdkZXZpY2VjaGFuZ2UnIGV2ZW50cyBm
aXJlZCBxdWlja2x5IGFyZSBjb2FsZXNjZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sCmluZGV4IDQzZDVmMmJk
ZmVkZDkxZWNiZDIzZmM3MWI4MzU3MWUwNzA3YjI1NWIuLjM2Njk2YzM3NzFiZGI3ZTMxYmU4YjAw
NTJlZWY5M2Q1ZjM2M2ZlNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbApAQCAtNyw3ICs3LDggQEAKICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0PgogICAgIGxldCBkZXZpY2VJZHMgPSBbXTsKLSAgICBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICBsZXQgc2V0dXAgPSBhc3luYyAodGVzdCkg
PT4gewogICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KCJ0ZXN0IHJlcXVpcmVzIGludGVybmFsIEFQSSIpOwogCkBAIC0yNSwx
MSArMjYsMTYgQEAKIAogICAgICAgICBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7CiAgICAgICAgIGFzc2VydF9mYWxzZSghIWRldmljZXMu
bGVuZ3RoLCAiY2hlY2sgdGhlcmUgYXJlIG5vIG1vcmUgZGV2aWNlcyIpOworICAgIH0KKyAgICAK
KyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICAgICAgYXdhaXQg
c2V0dXAodGVzdCk7CiAKICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4gewogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5n
ZSA9IHJlc29sdmU7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAg
ICAgICBjb25zb2xlLmxvZygiZXZlbnQgMSB0YWtpbmcgYSBsb25nIHRpbWUiKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmxvZygiZXZlbnQgMSB0b29rIHRvbyBsb25nIik7CiAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSwgNTAwMCk7CiAgICAgICAgICAgICB0ZXN0
UnVubmVyLmFkZE1vY2tDYW1lcmFEZXZpY2UoImlkMSIsICJteSBjYW1lcmEiKTsKQEAgLTQxLDcg
KzQ3LDcgQEAKICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
ewogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJl
c29sdmU7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICAgICBj
b25zb2xlLmxvZygiZXZlbnQgMiB0YWtpbmcgYSBsb25nIHRpbWUiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmxvZygiZXZlbnQgMiB0b29rIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSwgNTAwMCk7CiAgICAgICAgICAgICB0ZXN0UnVubmVy
LmFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDIiLCAibXkgbWljIik7CkBAIC01MSw2ICs1Nyw1
NiBAQAogICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZXNbMF0ubGFiZWwsICJteSBtaWMiKTsK
IAogICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVudCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNo
YW5nZXMiKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworCisgICAgICAg
IGF3YWl0IHNldHVwKHRlc3QpOworCisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGRvY3VtZW50Lm9udmlzaWJpbGl0eWNoYW5nZSA9
IHJlc29sdmU7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmxvZygiZG9jdW1lbnQub252aXNpYmlsaXR5Y2hhbmdlIHRvb2sgdG9vIGxvbmci
KTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1MDAwKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UGFnZVZpc2liaWxpdHkoImhpZGRlbiIpOworICAgICAg
ICB9KTsKKyAgICAgICAgCisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFu
Z2UgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRvY3VtZW50LmhpZGRl
biwgImRldmljZWNoYW5nZSBzaG91bGQgbm90IGJlIGZpcmVkIHdoZW4gdGhlIGRvY3VtZW50IGlz
IGhpZGRlbiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFBhZ2VWaXNpYmlsaXR5KCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9LCAzMDApOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQzIiwgIm1pY3Jv
cGhvbmUgMiIpOworICAgICAgICB9KTsKKworICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVudCBu
b3QgZmlyZWQgdW50aWwgdGhlIGRvY3VtZW50IGlzIHZpc2libGUiKTsKKworICAgIHByb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworCisgICAgICAgIGF3YWl0IHNldHVwKHRlc3QpOworCisg
ICAgICAgIGxldCBldmVudENvdW50ID0gMDsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5v
bmRldmljZWNoYW5nZSA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICArK2V2ZW50Q291bnQ7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICB9LCAyMDApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIm5h
dmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgdG9vayB0b28gbG9uZyIpOworICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDUwMDApOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQ0IiwgIm1pY3JvcGhvbmUg
MyIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQ1
IiwgIm1pY3JvcGhvbmUgNCIpOworICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudENvdW50LCAxLCAib25lIG9uZSBldmVudCBmaXJlZCIpOworCisgICAgfSwgIidkZXZpY2Vj
aGFuZ2UnIGV2ZW50cyBmaXJlZCBxdWlja2x5IGFyZSBjb2FsZXNjZWQiKTsKKwogICAgIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347229</attachid>
            <date>2018-08-15 17:16:39 -0700</date>
            <delta_ts>2018-08-15 17:57:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188521-20180815171637.patch</filename>
            <type>text/plain</type>
            <size>64037</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA1MmM2MzI1MjFmZmZl
ZDdmNmExYjkxODFkMTE4YmRkNTZiY2QyNy4uMTI5YjkzNTYxOTZmNGY1MGY5NWQyMjBhN2VkOTNl
Mjc1MDgzNjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA4LTE1ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgZmFzdC9tZWRpYXN0cmVhbS9kZXZp
Y2UtY2hhbmdlLWV2ZW50LTIuaHRtbCBmb3IgdGhlIGNoYW5nZXMuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YURldmljZXM6Ok1lZGlhRGV2aWNlcyk6IERldmljZSBjaGFuZ2UgbGlzdGVuZXIgaXMgYWRkZWQg
aW4gYWRkRXZlbnRMaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6c3Rv
cCk6IERldmljZSBjaGFuZ2UgbGlzdGVuZXIgaXMgb24gdGhlIHVzZXIgbWVkaWEgY29udHJvbGxl
ci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6YWRkRXZlbnRMaXN0ZW5lcik6IEFk
ZCB0aGUgZGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBvbmx5IG9uY2UgdGhlIGZpcnN0CisgICAgICAg
IGV2ZW50IGhhbmRsZXIgaXMgYWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuaDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjphZGREZXZpY2VD
aGFuZ2VPYnNlcnZlcik6IFBhc3MgdGhyb3VnaCB0byB0aGUgY2xpZW50LgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBE
aXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VDaGFuZ2VkKTog
Tm90aWZ5IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuCisgICAgICAgIChuZXh0T2JzZXJ2ZXJU
b2tlbik6IERlbGV0ZWQuCisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YWRkQ2FwdHVy
ZURldmljZUNoYW5nZWRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6cmVtb3ZlQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2
aWNlc0NoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6b2Jz
ZXJ2ZXJNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2VzQ2hhbmdlZE9i
c2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1
cmVEZXZpY2VzKTogQ2FsbCBiYXNlIGNsYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VDb25uZWN0ZWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5lY3RlZCk6IERp
dHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZUhhc0lucHV0U3Ry
ZWFtcyk6IERyaXZlLWJ5IGZpeCwgY2hlY2sgdGhlIG51bWJlciBvZiBidWZmZXJzIHRvIHNlZSBp
ZiB0aGUKKyAgICAgICAgZGV2aWNlIGhhcyBpbnB1dCBzdHJlYW1zLgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRpb0NhcHR1cmVEZXZpY2Vz
KTogVXNlIG5ldyBib29sIHBhcmFtZXRlcgorICAgICAgICBhZGRlZCB0byByZWZyZXNoQXVkaW9D
YXB0dXJlRGV2aWNlcyBzbyB3ZSB3b24ndCB0cmlnZ2VyIGEgZGV2aWNlIGNoYW5nZSBldmVudCBv
biB0aGUgZmlyc3Qgc2Nhbi4KKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyk6IEFkZCBwYXJhbS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdl
ZCk6IFVzZSBuZXcgcGFyYW0uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzKTogRG9uJ3QgbmVlZCB0byBj
YWxsIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCwKKyAgICAgICAgaXQgaXMgZG9uZSBpbiB0aGUgVUkg
cHJvY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjphZGREZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UpOiBEaXR0by4KKwogMjAxOC0wOC0xNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBT
UEldIFJlbW92ZSBhdHRhY2htZW50IGRpc3BsYXkgbW9kZSBvcHRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY1
Yjc4YTI1M2M5ZGU2ZDA2ZDU3MGM2YmRmZWYxNThkNjdhYzc3NGIuLmQ1Mzg3MjA1NGIwZWE2ZDY1
ODJlNDQ0OWNmNzIzY2NhN2JhZTM4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTgt
MDgtMTUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W01lZGlhU3RyZWFtXSBNb3ZlIGNhcHR1cmUgZGV2aWNlIG1vbml0b3JpbmcgdG8gV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1MjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMjUxNzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6IE5vdGlmeSBh
cyBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OnZpZXdJc0JlY29taW5nVmlzaWJsZSk6IENoYW5nZSBuYW1lIGZyb20K
KyAgICAgICAgdmlld0lzQmVjb21pbmdWaXNpYmxlLiBDYWxsIGNhcHR1cmVEZXZpY2VzQ2hhbmdl
ZCBpZiBhIGNoYW5nZSBoYXBwZW5lZCB3aGVuIG5vdCB2aXNpYmxlLgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6d2F0Y2hkb2dUaW1lckZp
cmVkKTogQ2xlYXIgbV9wZW5kaW5nRGV2aWNlQ2hhbmdlRXZlbnQuCisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzUHJlZ3JhbnRl
ZFJlcXVlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyOjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcik6IEluaXRpYWxpemUgdGltZXIuCisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlc0NoYW5n
ZWQpOiBOZXcsIG5vdGlmeSBlYWNoIG1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyOjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcyk6IENhY2hlIHRo
ZSBkZXZpY2UgbGlzdCBhbmQgCisgICAgICAgIHJlZ2lzdGVyIGRldmljZSBjaGFuZ2UgbGlzdGVu
ZXIgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld0lzQmVjb21pbmdWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiZWdpbk1vbml0b3JpbmdDYXB0
dXJlRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRk
RGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBBZGQgbGlzdGVuZXIsIHRlbGwgcGFnZQorICAgICAgICB0
byBzdGFydCBtb25pdG9yaW5nIGRldmljZSBjaGFuZ2VzLgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVy
KTogUmVtb3ZlIGxpc3RlbmVyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6IENhbGwgbGlzdGVuZXJzLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6
YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXB0
dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjphZGRNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpjbGVhck1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpy
ZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjYXB0
dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
CiAyMDE4LTA4LTE1ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1BFXVtHVEtdIFdheWxhbmRDb21wb3NpdG9yIGZhaWxzIHRvIHByb3Blcmx5
IHJlbW92ZSBzdXJmYWNlIGZyb20gaXRzIHBhZ2UgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggYmU5MDUxYzkzOTk0
ZDViYmMxMGEwZDhhYTY5NDE5YjE3MTRhZWVhYi4uMDYwOWMyOWQ3OTM1NzNjOTI3ZjJiY2Y4MWQw
ZGZiZjEyOGI0NzI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk1lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJVc2VyTWVkaWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5o
IgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIApAQCAtNTEsMTcgKzUyLDYgQEAgaW5s
aW5lIE1lZGlhRGV2aWNlczo6TWVkaWFEZXZpY2VzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAs
IG1fc2NoZWR1bGVkRXZlbnRUaW1lcigqdGhpcywgJk1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZl
bnRUaW1lckZpcmVkKQogICAgICwgbV9ldmVudE5hbWVzKGV2ZW50TmFtZXMoKSkKIHsKLSAgICBt
X2RldmljZUNoYW5nZWRUb2tlbiA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLmFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLCB0aGlzXSgpIHsKLQotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBkaXNwYXRjaCBhbiBldmVu
dCBpZiB0aGUgdXNlciBoYXMgYmVlbiBncmFudGVkIGFjY2VzcyB0byB0aGUgdHlwZSBvZgotICAg
ICAgICAvLyBkZXZpY2UgdGhhdCB3YXMgYWRkZWQgb3IgcmVtb3ZlZC4KLSAgICAgICAgaWYgKCFt
X3NjaGVkdWxlZEV2ZW50VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVk
RXZlbnRUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kcyhyYW5kb21OdW1iZXIoKSAvIDIpKTsKLSAg
ICB9KTsKLQogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6
TW9uaXRvcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciksICJNZWRpYURldmljZXM6OkRpc3BsYXlD
YXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IgaXMgbm90IGVxdWFsIHRvIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yIGFzIGV4cGVjdGVkIik7
CkBAIC03NCw4ICs2NCwxMiBAQCBNZWRpYURldmljZXM6On5NZWRpYURldmljZXMoKSA9IGRlZmF1
bHQ7CiAKIHZvaWQgTWVkaWFEZXZpY2VzOjpzdG9wKCkKIHsKLSAgICBpZiAobV9kZXZpY2VDaGFu
Z2VkVG9rZW4pCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigp
LnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIobV9kZXZpY2VDaGFuZ2VkVG9rZW4pOworICAg
IGlmIChtX2RldmljZUNoYW5nZVRva2VuKSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gdGhp
cy0+ZG9jdW1lbnQoKTsKKyAgICAgICAgYXV0byogY29udHJvbGxlciA9IGRvY3VtZW50ID8gVXNl
ck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC0+cGFnZSgpKSA6IG51bGxwdHI7CisgICAg
ICAgIGlmIChkb2N1bWVudCAmJiBjb250cm9sbGVyKQorICAgICAgICAgICAgY29udHJvbGxlci0+
cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIobV9kZXZpY2VDaGFuZ2VUb2tlbik7CisgICAgfQog
fQogCiBSZWY8TWVkaWFEZXZpY2VzPiBNZWRpYURldmljZXM6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCkBAIC0xODEsNiArMTc1LDI3IEBAIGJvb2wgTWVkaWFEZXZpY2VzOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBNZWRpYURldmljZXM6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAoIW1fbGlzdGVuaW5nRm9yRGV2aWNlQ2hh
bmdlcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZWNoYW5nZUV2ZW50KSB7Cisg
ICAgICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICAgICAgYXV0byog
Y29udHJvbGxlciA9IGRvY3VtZW50ID8gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVu
dC0+cGFnZSgpKSA6IG51bGxwdHI7CisgICAgICAgIGlmIChkb2N1bWVudCAmJiBjb250cm9sbGVy
KSB7CisgICAgICAgICAgICBtX2xpc3RlbmluZ0ZvckRldmljZUNoYW5nZXMgPSB0cnVlOworCisg
ICAgICAgICAgICBtX2RldmljZUNoYW5nZVRva2VuID0gY29udHJvbGxlci0+YWRkRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSgpIHsKKwor
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAg
IG1fc2NoZWR1bGVkRXZlbnRUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kcyhyYW5kb21OdW1iZXIo
KSAvIDIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCAwMmQxYWVmOWQ2ZjMxNzg2
N2E5N2YxOTViZTkwNjE0ODU5NTQ5Y2Y1Li4wZDQwMjA5NjM2YmJjNjg4NGNlNTVlZWMyY2E2MGM5
MmI1ZjUxZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmgKQEAgLTQxLDExICs0MSwxMSBAQAogI2luY2x1ZGUgIk1lZGlhVHJhY2tD
b25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKICNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBNZWRpYURldmljZUluZm87CiBjbGFzcyBNZWRpYVN0cmVhbTsKIApAQCAtODUsNiAr
ODUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhRGV2aWNlcyhEb2N1bWVudCYpOwog
CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKKyAgICBib29sIGFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgZnJp
ZW5kIGNsYXNzIEpTTWVkaWFEZXZpY2VzT3duZXI7CiAKQEAgLTEwMSw4ICsxMDIsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCiAg
ICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OkRldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBtX2RldmljZUNoYW5nZWRUb2tlbjsK
KyAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gbV9kZXZpY2VD
aGFuZ2VUb2tlbjsKICAgICBjb25zdCBFdmVudE5hbWVzJiBtX2V2ZW50TmFtZXM7IC8vIE5lZWQg
dG8gY2FjaGUgdGhpcyBzbyB3ZSBjYW4gdXNlIGl0IGZyb20gR0MgdGhyZWFkcy4KKyAgICBib29s
IG1fbGlzdGVuaW5nRm9yRGV2aWNlQ2hhbmdlcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDbGllbnQuaAppbmRleCAzZTNhZGUxYThjMmJkNWVhNzBjMDI3NjMyZDc2MGUz
YTAxNzM3ZGJmLi5hODM2MjBiMDgzZDA1MzBhNDdiMDNmNDAyNDk5MzQ5OWZmZTMzZjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xp
ZW50LmgKQEAgLTMzLDYgKzMzLDggQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdDsKQEAgLTQ5LDYgKzUxLDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2
aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWVk
aWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0KE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVz
dCYpID0gMDsKIAorICAgIGVudW0gRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGUgeyB9Owor
ICAgIHVzaW5nIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gPSBPYmplY3RJZGVudGlmaWVyPERl
dmljZUNoYW5nZU9ic2VydmVyVG9rZW5UeXBlPjsKKyAgICB2aXJ0dWFsIERldmljZUNoYW5nZU9i
c2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbikgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
VXNlck1lZGlhQ2xpZW50KCkgPSBkZWZhdWx0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKaW5kZXggMjI0
OWFiZjI3ODZiZDIyMzVjNDAxODhjNGFjNDRhYTE4N2Q2MmJmNS4uY2ZhYzU5OWQ3ZmJlMzRiZDUw
NDA0ODQ5MTY1ZTUzZmJiM2E1YjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlcyhNZWRpYURldmljZXNFbnVtZXJh
dGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVx
dWVzdChNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKTsKIAorICAgIFVzZXJNZWRpYUNs
aWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNl
cnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4pOworCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAgICAg
c3RhdGljIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGZyb20oUGFnZSogcGFnZSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VXNlck1lZGlhQ29udHJvbGxlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFn
ZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9CiAKQEAgLTc1LDYgKzc4LDE2IEBAIGlubGluZSB2b2lk
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVz
dChNZWRpYURldmljCiAgICAgbV9jbGllbnQtPmNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9u
UmVxdWVzdChyZXF1ZXN0KTsKIH0KIAoraW5saW5lIFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hh
bmdlT2JzZXJ2ZXJUb2tlbiBVc2VyTWVkaWFDb250cm9sbGVyOjphZGREZXZpY2VDaGFuZ2VPYnNl
cnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKK3sKKyAgICByZXR1cm4gbV9j
bGllbnQtPmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURk1vdmUob2JzZXJ2ZXIpKTsKK30KKwor
aW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2
ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIHRva2VuKQorewor
ICAgIG1fY2xpZW50LT5yZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcih0b2tlbik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IDY1NDIwNWFlZDc5ODg2MzBhYjgzYmQ1MGZmODc4NGVmNzViZjRkY2Iu
LjBjNTI4Nzg0YjUyMmEyNTM3NjFlMjQ5YjI2YTg1ZWI3ZTFmOTZkNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC00MzQsOCArNDM0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNSZXN0b3JpbmdDYWNo
ZWRQYWdlKGJvb2wgdmFsdWUpIHsgbV9pc1Jlc3RvcmluZ0NhY2hlZFBhZ2UgPSB2YWx1ZTsgfQog
ICAgIGJvb2wgaXNSZXN0b3JpbmdDYWNoZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Jlc3Rv
cmluZ0NhY2hlZFBhZ2U7IH0KIAotICAgIHZvaWQgYWRkQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOwotICAgIHZvaWQgcmVtb3ZlQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCBjZDE0N2EwMmI0Y2Q3YzBlODEyN2Y5N2FjMDM5ODY1
YTRmNjcyOGVkLi40NzdjNTg3YTUwYWE0MWFkYjFhOGFjMDRjZGFlYjM5MWMzOWVlODVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC01MCwyNCArNTAsMTQgQEAgQ2FwdHVyZURldmljZSBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21QZXJzaXN0ZW50SUQoY29uc3Qg
U3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6T2JzZXJ2ZXJUb2tlbiBuZXh0T2JzZXJ2ZXJUb2tlbigpCit2b2lkIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpkZXZpY2VDaGFuZ2VkKCkKIHsKLSAgICBzdGF0aWMgQ2FwdHVyZURldmljZU1hbmFn
ZXI6Ok9ic2VydmVyVG9rZW4gbmV4dFRva2VuID0gMDsKLSAgICByZXR1cm4gKytuZXh0VG9rZW47
Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjphZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFu
Z2VkQ2FsbGJhY2smJiBvYnNlcnZlcikKLXsKLSAgICBhdXRvIHRva2VuID0gbmV4dE9ic2VydmVy
VG9rZW4oKTsKLSAgICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsK
LSAgICByZXR1cm4gdG9rZW47Ci19CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKIAotdm9pZCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVtb3ZlQ2FwdHVyZURldmlj
ZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuIHRva2VuKQotewotICAgIEFTU0VSVChtX29i
c2VydmVycy5jb250YWlucyh0b2tlbikpOwotICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZSh0b2tlbik7
CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCgpOworICAgIH0pOwogfQogCi0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggNDVlZGIzMDBjM2I3MmU4NzczNDVjOWYw
MDIzNmZkMDZkMzU0OWNkZS4uZGI2YmQ2ODFmOGMwMWQ5ZGUzNWFlN2JmYWFiNDU5Y2E1ZjBiMTk0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0yOSwyMyArMjksMTkgQEAKIAogI2luY2x1ZGUg
IkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDYXB0
dXJlRGV2aWNlTWFuYWdlciB7CitjbGFzcyBDYXB0dXJlRGV2aWNlTWFuYWdlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxDYXB0dXJlRGV2aWNlTWFuYWdlcj4gewogcHVibGljOgotICAgIHVzaW5n
IENhcHR1cmVEZXZpY2VDaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47Ci0g
ICAgdXNpbmcgT2JzZXJ2ZXJUb2tlbiA9IHVpbnQzMl90OwotICAgIHZpcnR1YWwgT2JzZXJ2ZXJU
b2tlbiBhZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZpY2VDaGFuZ2Vk
Q2FsbGJhY2smJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNhcHR1cmVEZXZpY2VDaGFuZ2Vk
T2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbik7Ci0KICAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxDYXB0
dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKICAg
ICBDYXB0dXJlRGV2aWNlIGNhcHR1cmVEZXZpY2VGcm9tUGVyc2lzdGVudElEKGNvbnN0IFN0cmlu
ZyYgY2FwdHVyZURldmljZUlEKTsKLSAgICBIYXNoTWFwPE9ic2VydmVyVG9rZW4sIENhcHR1cmVE
ZXZpY2VDaGFuZ2VkQ2FsbGJhY2s+IG1fb2JzZXJ2ZXJzOworICAgIHZvaWQgZGV2aWNlQ2hhbmdl
ZCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApp
bmRleCBiZmU0ZDZkZTFjODM0MDY4MmExZjdlZTI5ZThjOTQ1ODVmZTBiY2U4Li45NTIxMTljY2Fi
MzE5YWZjNmYxYTMzOWUyODEyZTBmNmI5NTY0ZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApA
QCAtMjQ2LDggKzI0NiwxMCBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+CiAgICAgICAgIH0KIAog
ICAgICAgICBkaXN0YW5jZSA9IHN0ZDo6bWluKGRpc3RhbmNlLCBjb25zdHJhaW50RGlzdGFuY2Up
OwotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgIHdp
ZHRoID0gd2lkdGhDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkud2lk
dGgoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7Cisg
ICAgICAgIGlmICh3aWR0aENvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKKyAgICAgICAgICAg
IGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMud2lkdGgoKTsKKyAgICAgICAgICAgIHdpZHRoID0g
d2lkdGhDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkud2lkdGgoKSwg
cmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0OwpAQCAtMjU5LDggKzI2
MSwxMCBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+CiAgICAgICAgIH0KIAogICAgICAgICBkaXN0
YW5jZSA9IHN0ZDo6bWluKGRpc3RhbmNlLCBjb25zdHJhaW50RGlzdGFuY2UpOwotICAgICAgICBh
dXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpOwotICAgICAgICBoZWlnaHQgPSBoZWln
aHRDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkuaGVpZ2h0KCksIHJh
bmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICBp
ZiAoaGVpZ2h0Q29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgeworICAgICAgICAgICAgYXV0byBy
YW5nZSA9IGNhcGFiaWxpdGllcy5oZWlnaHQoKTsKKyAgICAgICAgICAgIGhlaWdodCA9IGhlaWdo
dENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS5oZWlnaHQoKSwgcmFu
Z2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOwpAQCAtMjcyLDgg
KzI3NiwxMCBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+CiAgICAgICAgIH0KIAogICAgICAgICBk
aXN0YW5jZSA9IHN0ZDo6bWluKGRpc3RhbmNlLCBjb25zdHJhaW50RGlzdGFuY2UpOwotICAgICAg
ICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpOwotICAgICAgICBmcmFtZVJh
dGUgPSBmcmFtZVJhdGVDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5m
cmFtZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0RvdWJsZSk7CisgICAgICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50LT5pc01hbmRhdG9yeSgp
KSB7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpOwor
ICAgICAgICAgICAgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludC0+dmFsdWVGb3JDYXBh
YmlsaXR5UmFuZ2UodGhpcy0+ZnJhbWVSYXRlKCksIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUs
IHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8g
RWFjaCBvZiB0aGUgbm9uLW51bGwgdmFsdWVzIGlzIHN1cHBvcnRlZCBpbmRpdmlkdWFsbHksIHNl
ZSBpZiB0aGV5IGFsbCBjYW4gYmUgYXBwbGllZCBhdCB0aGUgc2FtZSB0aW1lLgpAQCAtMjg2LDcg
KzI5Miw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlKHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4KICAgICAgICAgICAgIGJhZENvbnN0cmFp
bnQgPSBmcmFtZVJhdGVDb25zdHJhaW50LT5uYW1lKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzU0LDcgKzc2MCw3IEBA
IGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IE1lZGlh
Q29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgLy8gVW5rbm93biAob3IgdW5zdXBwb3J0
ZWQpIGNvbnN0cmFpbnRzIHNob3VsZCBiZSBpZ25vcmVkLgogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTc2NSw3ICs3NzEsNyBAQCBib29s
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25z
dHJhaW50cyYgY29uc3RyYWludAogICAgIEZsYXR0ZW5lZENvbnN0cmFpbnQgY2FuZGlkYXRlczsK
ICAgICBpZiAoIXNlbGVjdFNldHRpbmdzKGNvbnN0cmFpbnRzLCBjYW5kaWRhdGVzLCBpbnZhbGlk
Q29uc3RyYWludCwgU2VsZWN0VHlwZTo6Rm9yU3VwcG9ydHNDb25zdHJhaW50cykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDM4ODZmZjg3NWNlODlmNWMxMDhjNDM3YmI5Y2Fh
MmY0ZDdmMTYwMmEuLmQ4YmJiZWNlMmY0OTQzZDI3NWI2OWFlYWNjNGE4Y2JkMWRlNTQ5MzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC01MywxMiArNTMsNiBAQCBzdGF0
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciomIG1lZGlhU3RyZWFtQ2VudGVyT3ZlcnJpZGUo
KQogICAgIHJldHVybiBvdmVycmlkZTsKIH0KIAotc3RhdGljIEhhc2hNYXA8dW5zaWduZWQsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPj4mIG9ic2VydmVyTWFwKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+Pj4gbWFwOwot
ICAgIHJldHVybiBtYXA7Ci19Ci0KIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpCiB7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlciogb3ZlcnJpZGUgPSBtZWRpYVN0cmVhbUNlbnRlck92ZXJyaWRlKCk7CkBAIC0xOTks
MjUgKzE5MywxNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzZXREZXZpY2VFbmFibGVkKGNvbnN0IFN0cmluZyYgaWQsCiAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdEZvdW5kRXJyb3IgfTsKIH0KIAotUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6RGV2
aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERl
dmljZXNDaGFuZ2VkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCi17
Ci0gICAgc3RhdGljIERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBuZXh0VG9rZW4gPSAwOwot
ICAgIG9ic2VydmVyTWFwKCkuc2V0KCsrbmV4dFRva2VuLCBXVEZNb3ZlKG9ic2VydmVyKSk7Ci0g
ICAgcmV0dXJuIG5leHRUb2tlbjsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpyZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tl
biB0b2tlbikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlc0NoYW5n
ZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKIHsKLSAgICBib29s
IHdhc1JlbW92ZWQgPSBvYnNlcnZlck1hcCgpLnJlbW92ZSh0b2tlbik7Ci0gICAgQVNTRVJUX1VO
VVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIG1fZGV2aWNlQ2hhbmdlZE9ic2VydmVyID0gV1RGTW92ZShvYnNlcnZlcik7CiB9CiAK
IHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkK
IHsKLSAgICAvLyBDb3B5IHRoZSBoYXNoIG1hcCBiZWNhdXNlIHRoZSBvYnNlcnZlciBjYWxsYmFj
ayBtYXkgY2FsbCBiYWNrIGluIGFuZCBtb2RpZnkgdGhlIG1hcC4KLSAgICBhdXRvIGNhbGxiYWNr
cyA9IG9ic2VydmVyTWFwKCk7Ci0gICAgZm9yIChhdXRvJiBpdCA6IGNhbGxiYWNrcykKLSAgICAg
ICAgaXQudmFsdWUoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2Rl
dmljZUNoYW5nZWRPYnNlcnZlcikKKyAgICAgICAgbV9kZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoKTsK
IH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25z
dHJhaW50cyhWYWxpZENvbnN0cmFpbnRzSGFuZGxlciYmIHZhbGlkSGFuZGxlciwgSW52YWxpZENv
bnN0cmFpbnRzSGFuZGxlciYmIGludmFsaWRIYW5kbGVyLCBjb25zdCBNZWRpYVN0cmVhbVJlcXVl
c3QmIHJlcXVlc3QsIFN0cmluZyYmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCBlZjdiM2NmY2Q5MTZlZGNjYWU2MjBlNDQyMWY4YzBi
YWJlOGZlM2VjLi43NGE5MDAwNjY4MWMzNjFmMDE2NTA0M2I4YTNlZDFlMGJkN2ViNzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBAIC04NSwyMiArODUsMjIgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZVdpdGhVbmlxdWVJ
RChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXREZXZpY2VFbmFibGVkKGNvbnN0IFN0cmluZyYs
IGJvb2wpOwogCi0gICAgdXNpbmcgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuID0gdW5zaWdu
ZWQ7Ci0gICAgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIGFkZERldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlRGV2aWNlc0No
YW5nZWRPYnNlcnZlcihEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4pOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJik7CiAKICAgICB2b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sLCBib29sKTsK
IAorICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisKIHByb3RlY3RlZDoKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCk7CiAKLSAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOwotCiAgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIHBsYXRmb3Jt
Q2VudGVyKCk7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1f
c3VwcG9ydGVkQ29uc3RyYWludHM7CiAKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciogbV9hdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVsbHB0ciB9OwogICAgIENhcHR1cmVEZXZpY2VNYW5h
Z2VyKiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgeyBudWxscHRyIH07CisKKyAgICBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gbV9kZXZpY2VDaGFuZ2VkT2JzZXJ2ZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDMyZTcwZTE2ZGNhMzA2ZjVmZDc5MGQyZTM0NTE1NzgxZjc3
NzZmNGUuLjFiNDA4NzlkZGJjZGQ1M2E2MzUzMTkyNjY2ZjU3ZDM4NjEwMmM2NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oSU9TKQog
CiAjaW5jbHVkZSAiQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkF1ZGlv
U2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTE0MSw4ICsxNDIsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICBtX2F1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VzID0gV1RGTW92ZShuZXdBdWRpb0RldmljZXMpOwogICAgIG1fZGV2
aWNlcyA9IFdURk1vdmUobmV3RGV2aWNlcyk7CiAKLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIG9ic2VydmVyKCk7CisgICAgZGV2aWNlQ2hh
bmdlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCmluZGV4IGMwMTFiMjZlNjg2YjA1YzFmYTBiNjlhMGQ5MWQ3Y2YwY2E2M2Yz
NDAuLjIzOWJlNjhmYjI4MDI2NzM2NTkyMjc3N2QyODRhZjUzOTFjN2I0ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xNzksOSArMTc5LDcgQEAgdm9pZCBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpyZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKQogdm9pZCBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VDb25uZWN0ZWQoKQogewogICAgIHJlZnJlc2hD
YXB0dXJlRGV2aWNlcygpOwotCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
LnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0K
IAogdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0
dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQpAQCAtMjAwLDggKzE5OCw3IEBAIHZvaWQgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURldmljZVR5cGVk
ZWYqIGRldmljZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIg
OiBtX29ic2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgb2JzZXJ2ZXIoKTsKKyAgICBkZXZpY2VD
aGFuZ2VkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDU0MTNhOGY4NjcyMjIwNGU0YzQy
ZmFlNmVlZGIzMDZhNTJmNTUxYTguLjNhYmQ1NmFhMTgyNDg1ZDA0NDNjYTY4YzQ2MzUwNDU3NTQy
OTAwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPENvcmVN
ZWRpYS9DTVN5bmMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtNjQsMTAgKzY1
LDE3IEBAIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiBzdGF0aWMgYm9vbCBkZXZpY2VIYXNJbnB1
dFN0cmVhbXMoQXVkaW9PYmplY3RJRCBkZXZpY2VJRCkKIHsKICAgICBVSW50MzIgZGF0YVNpemUg
PSAwOwotICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0Rl
dmljZVByb3BlcnR5U3RyZWFtcywga0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZUlucHV0LCBrQXVk
aW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBBdWRpb09iamVjdFByb3BlcnR5
QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVhbUNvbmZpZ3VyYXRp
b24sIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlF
bGVtZW50TWFzdGVyIH07CiAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0
YVNpemUoZGV2aWNlSUQsICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUpOwogCi0gICAg
cmV0dXJuICFlcnIgJiYgZGF0YVNpemU7CisgICAgaWYgKGVyciB8fCAhZGF0YVNpemUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyTGlzdCA9IHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0J1ZmZlckxpc3Q+KChBdWRpb0J1ZmZlckxpc3QqKSA6Om9wZXJhdG9yIG5ldyAoZGF0
YVNpemUpKTsKKyAgICBtZW1zZXQoYnVmZmVyTGlzdC5nZXQoKSwgMCwgZGF0YVNpemUpOworICAg
IGVyciA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRldmljZUlELCAmYWRkcmVzcywgMCwg
bnVsbHB0ciwgJmRhdGFTaXplLCBidWZmZXJMaXN0LmdldCgpKTsKKworICAgIHJldHVybiAhZXJy
ICYmIGJ1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzOwogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlk
Q2FwdHVyZURldmljZShjb25zdCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlJiBkZXZpY2UpCkBAIC04
MSw3ICs4OSw3IEBAIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRpb0NhcHR1cmVECiAgICAgc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9
IHRydWU7Ci0gICAgICAgIHJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgICAgIHJl
ZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKERvTm90Tm90aWZ5KTsKIAogICAgICAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGV2
aWNlcywga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVy
dHlFbGVtZW50TWFzdGVyIH07CiAgICAgICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RBZGRQcm9w
ZXJ0eUxpc3RlbmVyKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIGRldmljZXND
aGFuZ2VkLCB0aGlzKTsKQEAgLTEwMiw3ICsxMTAsNyBAQCBzdGQ6Om9wdGlvbmFsPENvcmVBdWRp
b0NhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVkaW9E
ZQogfQogCiAKLXZvaWQgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRp
b0NhcHR1cmVEZXZpY2VzKCkKK3ZvaWQgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlmeUlmRGV2aWNlc0hhdmVDaGFuZ2VkIG5vdGlm
eSkKIHsKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9I
YXJkd2FyZVByb3BlcnR5RGV2aWNlcywga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwg
a0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CiAgICAgVUludDMyIGRhdGFTaXpl
ID0gMDsKQEAgLTE1NiwxMyArMTY0LDEzIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCkKICAgICAgICAgbV9kZXZpY2VzLmFw
cGVuZChjYXB0dXJlRGV2aWNlKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIG9ic2VydmVyKCk7CisgICAgaWYgKG5vdGlm
eSA9PSBOb3RpZnkpCisgICAgICAgIGRldmljZUNoYW5nZWQoKTsKIH0KIAogT1NTdGF0dXMgQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2VkKEF1ZGlvT2JqZWN0SUQs
IFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkKiB1c2VyRGF0
YSkKIHsKLSAgICBzdGF0aWNfY2FzdDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcio+KHVz
ZXJEYXRhKS0+cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICBzdGF0aWNfY2FzdDxD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcio+KHVzZXJEYXRhKS0+cmVmcmVzaEF1ZGlvQ2Fw
dHVyZURldmljZXMoTm90aWZ5KTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCA4YzI4ZTgyNzk4NGNhZmY0ODZhNDU1
NDE5MDU1MTAzNzVhNDU5MDJkLi4xMmQ3NmRjMDlkMjFmMTVhYjNmMzU1NGZjYTk5ODA2ZmQ5MzBk
NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAt
NTUsNyArNTUsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2VzQ2hhbmdl
ZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNz
Kiwgdm9pZCopOwogICAgIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29yZUF1ZGlv
Q2FwdHVyZURldmljZXMoKTsKIAotICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMo
KTsKKyAgICBlbnVtIE5vdGlmeUlmRGV2aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05vdE5v
dGlmeSB9OworICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5SWZEZXZp
Y2VzSGF2ZUNoYW5nZWQpOwogCiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fZGV2aWNlczsK
ICAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2
aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMDg3NTQ5N2ExZWZhMTEwNDUzZjhlMmQ2ZTUyM2Rh
YjM2MTdjOTRhZi4uZWM0NDFlZmQ3NWU5Mzg3Njc2NjU1YmQwMjVkOTM3YjUzODc3MzdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTk3LDYgKzk3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y3JlYXRlQ2FwdHVyZURldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkK
IHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpCiB7CiAgICAgc2V0
RGV2aWNlcyhkZWZhdWx0RGV2aWNlcygpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmIG5l
d01vY2tEZXZpY2VzKQpAQCAtMTE1LDYgKzExNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNl
CiAgICAgICAgIG1hcC5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKICAgICAgICAg
Y3JlYXRlQ2FwdHVyZURldmljZShkZXZpY2UpOwogICAgIH0KKyAgICBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9p
ZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmlj
ZSYgZGV2aWNlKQpAQCAtMTIyLDYgKzEyNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFkZERldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKICAgICBkZXZpY2Vz
KCkuYXBwZW5kKGRldmljZSk7CiAgICAgZGV2aWNlTWFwKCkuc2V0KGRldmljZS5wZXJzaXN0ZW50
SWQsIGRldmljZSk7CiAgICAgY3JlYXRlQ2FwdHVyZURldmljZShkZXZpY2UpOworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgp
OwogfQogCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UoY29uc3Qg
U3RyaW5nJiBwZXJzaXN0ZW50SWQpCkBAIC0xNDAsNiArMTQzLDcgQEAgdm9pZCBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZTo6cmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQog
ICAgIH0pOwogCiAgICAgbWFwLnJlbW92ZShpdGVyYXRvcik7CisgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiB9CiAKIHN0
ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGY5MWVi
ZTBmZTg1NDQxMTRhNjYyYzc2ZTQyYWZjYTdhNzAwZWRhYy4uZGViNWFjNWNhZmExOTEzMjgwMGVk
YTk2YWI1MDQ4MzczY2FmYjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTU1
LDE5ICs1NSwxNiBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoYm9vbAogdm9pZCBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmIG5l
d01vY2tEZXZpY2VzKQogewogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzZXREZXZpY2Vz
KFdURk1vdmUobmV3TW9ja0RldmljZXMpKTsKLSAgICBzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNl
c0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRk
RGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQogewogICAgIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjphZGREZXZpY2UoZGV2aWNlKTsKLSAgICBzaW5nbGV0b24oKS5jYXB0dXJl
RGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6cmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQogewogICAgIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UocGVyc2lzdGVudElkKTsKLSAgICBzaW5n
bGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggYTc4MmJh
YWM5ZDQ1YmIzYzlkMGI4OTkyNjIyZmFhNjI1MmFhMTg0ZC4uMTM2NTVmZmFiNDUzY2RjNWY2MGMz
Mjg0NDJjNjZjZjI0YTFjNTY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC00MTksNiArNDE5LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAg
ICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZv
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNl
c3Npb25TdGF0ZS5oIiddLAorICAgICAgICAnV2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZSc6IFsn
PFdlYktpdC9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaD4nXSwKICAgICAgICAg
J1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAg
ICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggM2MwNzI5NWYxMDUzZmMxNWRjYzg4NDQ1NjMy
OTA1YjhjM2ZjYjk2Yi4uZDE0MTI3ODFkOWFhMDk5ODRmNDE0ZTYzZTYzYjIwYmIyZDZhY2U3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjIsNiArMjIsNyBAQAog
CiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJBUElVSUNsaWVudC5o
IgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNl
c3Npb24uaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKQEAgLTc3LDYgKzc4LDE1IEBA
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnN0b3BDYXB0dXJl
KCkKICAgICBtX3BhZ2Uuc3RvcE1lZGlhQ2FwdHVyZSgpOwogfQogCit2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQorewor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLy8gRklYTUU6IGEgcGFnZSB3aXRoIHBlcnNp
c3RlbnQgYWNjZXNzIHNob3VsZCBhbHdheXMgZ2V0IGRldmljZSBjaGFuZ2Ugbm90aWZpY2F0aW9u
cy4KKyAgICBhdXRvIGFjY2Vzc1N0YXRlID0gbV9ncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpID8g
RGV2aWNlQWNjZXNzU3RhdGU6Ok5vQWNjZXNzIDogRGV2aWNlQWNjZXNzU3RhdGU6OlNlc3Npb25B
Y2Nlc3M7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0
dXJlRGV2aWNlc0NoYW5nZWQoYWNjZXNzU3RhdGUpLCBtX3BhZ2UucGFnZUlEKCkpOworI2VuZGlm
Cit9CisKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNsZWFy
Q2FjaGVkU3RhdGUoKQogewogICAgIGludmFsaWRhdGVQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTQz
NCw3ICs0NDQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpjYXB0dXJlU3RhdGVDaGFuZ2VkKE1lZGlhUHJvZHVjZXI6OgogI2VuZGlmCiB9CiAKLXZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnByb2Nlc3NQcmVncmFudGVk
UmVxdWVzdHMoKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKIHsKICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3By
ZWdyYW50ZWRSZXF1ZXN0cykKICAgICAgICAgcmVxdWVzdC0+YWxsb3coKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IDU3M2FmMDRkNzFiODUzOTU3NTEyNDk5ZDkyYzQzMDY0
OGJiZDE3OWYuLjUyMGE3NTE5ZjIzZTg3NTMxZmU4MWI5YzRjYTI5MDJjZTdjZWQzMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0
Jik7CiAKICAgICB2b2lkIHJlc2V0QWNjZXNzKHVpbnQ2NF90IG1haW5GcmFtZUlEKTsKLSAgICB2
b2lkIHByb2Nlc3NQcmVncmFudGVkUmVxdWVzdHMoKTsKKyAgICB2b2lkIHZpZXdJc0JlY29taW5n
VmlzaWJsZSgpOwogCiAgICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVpbnQ2NF90
LCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2UsIFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2UmJiB2aWRlb0RldmljZSk7CiAgICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQo
dWludDY0X3QsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbik7CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVk
dWxlTmV4dFJlamVjdGlvbigpOwogICAgIHZvaWQgcmVqZWN0aW9uVGltZXJGaXJlZCgpOwogICAg
IHZvaWQgY2xlYXJDYWNoZWRTdGF0ZSgpOworICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2Vk
KCk7CiAKICAgICB2b2lkIGNhcHR1cmVTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZUZsYWdzIG9sZFN0YXRlLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MgbmV3U3RhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggN2FlNjkwOTc0NmJmZDc4OTNkMWNl
OWYzMDk4ODRkZDMxNjNiYzRjMi4uZmIxZWQzMmFkZmRiNzY4YjliNzU4ZGVmMWMzMDM5ZGQwZDlk
N2VmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
QEAgLTM1LDYgKzM2LDggQEAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBhdWRpb0V4dGVuc2lv
blBhdGggeyAiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zIH0KIHN0YXRpYyBjb25zdCBB
U0NJSUxpdGVyYWwgdmlkZW9FeHRlbnNpb25QYXRoIHsgImNvbS5hcHBsZS53ZWJraXQuY2FtZXJh
Il9zIH07CiAjZW5kaWYKIAorc3RhdGljIGNvbnN0IFNlY29uZHMgZGV2aWNlQ2hhbmdlRGVib3Vu
Y2VUaW1lckludGVydmFsIHsgMjAwX21zIH07CisKIGNsYXNzIFByb2Nlc3NTdGF0ZSB7CiBwdWJs
aWM6CiAgICAgUHJvY2Vzc1N0YXRlKCkgeyB9CkBAIC0xMDEsNiArMTA0LDExIEBAIFVzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyJiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkKICAg
ICByZXR1cm4gbWFuYWdlcjsKIH0KIAorVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OlVzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyKCkKKyAgICA6IG1fZGVib3VuY2VUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKQor
eworfQorCiB2b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjphZGRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSYgcHJveHkpCiB7CiAgICAgcHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkp
LmFkZFJlcXVlc3RNYW5hZ2VyKHByb3h5KTsKQEAgLTI1NCw2ICsyNjIsNTcgQEAgdm9pZCBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlcjo6c2V0Q2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IH0KIH0KIAordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFu
Z2VkKCkKK3sKKyAgICBhdXRvJiBtYXAgPSBzdGF0ZU1hcCgpOworICAgIGZvciAoYXV0byYgc3Rh
dGUgOiBtYXApIHsKKyAgICAgICAgYXV0byogcHJvY2VzcyA9IHN0YXRlLmtleTsKKyAgICAgICAg
Zm9yIChhdXRvJiBtYW5hZ2VyIDogc3RhdGUudmFsdWUtPm1hbmFnZXJzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChtYXAuZmluZChwcm9jZXNzKSA9PSBtYXAuZW5kKCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBtYW5hZ2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YmVnaW5N
b25pdG9yaW5nQ2FwdHVyZURldmljZXMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKKworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbdGhpc10geworICAgICAg
ICBtX2NhcHR1cmVEZXZpY2VzID0gV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCk7CisKKyAgICAgICAgV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0RGV2aWNlc0NoYW5nZWRP
YnNlcnZlcihbdGhpc10oKSB7CisgICAgICAgICAgICBhdXRvIG9sZERldmljZXMgPSBtX2NhcHR1
cmVEZXZpY2VzOworICAgICAgICAgICAgbV9jYXB0dXJlRGV2aWNlcyA9IFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygp
OworCisgICAgICAgICAgICBpZiAobV9jYXB0dXJlRGV2aWNlcy5zaXplKCkgPT0gb2xkRGV2aWNl
cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGhhdmVDaGFuZ2VzID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgZm9yIChhdXRvICZuZXdEZXZpY2UgOiBtX2NhcHR1cmVEZXZpY2VzKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdEZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiBuZXdEZXZpY2UudHlwZSgpICE9IFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIG9sZERl
dmljZSA9IHN0ZDo6ZmluZF9pZihvbGREZXZpY2VzLmJlZ2luKCksIG9sZERldmljZXMuZW5kKCks
IFsmbmV3RGV2aWNlXSAoYXV0byYgZGV2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3RGV2aWNlLnBlcnNpc3RlbnRJZCgpID09IGRldmljZS5wZXJzaXN0ZW50SWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGREZXZp
Y2UgPT0gb2xkRGV2aWNlcy5lbmQoKSB8fCBuZXdEZXZpY2UuZW5hYmxlZCgpICE9IG9sZERldmlj
ZS0+ZW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlQ2hhbmdlcyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaGF2ZUNoYW5nZXMp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gV2hlbiBhIGRldmljZSB3aXRoIGNhbWVyYSBhbmQgbWljcm9waG9uZSBpcyBhdHRhY2hl
ZCBvciBkZXRhY2hlZCwgdGhlIENhcHR1cmVEZXZpY2Ugbm90aWZpY2F0aW9uIGZvcgorICAgICAg
ICAgICAgLy8gdGhlIGRpZmZlcmVudCBkZXZpY2VzIHdvbid0IGFycml2ZSBhdCB0aGUgc2FtZSB0
aW1lIHNvIGRlbGF5IGEgYml0IHNvIHdlIGNhbiBjb2FsZXNjZSB0aGUgY2FsbGJhY2tzLgorICAg
ICAgICAgICAgaWYgKCFtX2RlYm91bmNlVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAg
ICBtX2RlYm91bmNlVGltZXIuc3RhcnRPbmVTaG90KGRldmljZUNoYW5nZURlYm91bmNlVGltZXJJ
bnRlcnZhbCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuaAppbmRleCA4MTk5OGI0YWNiN2RkZjkxZDUwYTgzYzc5ZDJlNWNhYzNkMTg3
NDczLi40ODVjZDk4ZjE5MGIwMWMwMWVjYTViNmYxZmVhYTA1MTYzY2Y0YjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKQEAgLTIx
LDYgKzIxLDggQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nh
cHR1cmVEZXZpY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtMzEsNiArMzMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXImIHNpbmdsZXRvbigpOwogCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIoKTsKKwogICAgIHZvaWQgYWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKICAgICB2b2lkIHJl
bW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CiAKQEAgLTQ1LDcgKzQ5LDEzIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGVueU5leHRVc2VyTWVkaWFSZXF1ZXN0KCkgeyBtX2RlbnlOZXh0UmVxdWVz
dCA9IHRydWU7IH0KIAorICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsK
KwogcHJpdmF0ZToKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworCisgICAgVmVj
dG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fY2FwdHVyZURldmljZXM7CisgICAgUnVuTG9v
cDo6VGltZXI8VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI+IG1fZGVib3VuY2VUaW1lcjsKICAgICBi
b29sIG1fY2FwdHVyZUVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2RlbnlOZXh0UmVxdWVz
dCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggMmRjMGYzMzg4NWI2OTA1ODRmNDcxMTdlNjlkZWVlZjI4YzAyMmE0Ny4uOTVmYmMxMjBk
ZDgwYjQxMzA3ZWU3Mjg0ZGI4MmQyOWMyYzZhODFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODkwLDcgKzM4OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnByb2Nlc3NQcmVncmFu
dGVkUmVxdWVzdHMoKTsKKyAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS52
aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKICNlbmRpZgogfQogCkBAIC02NTI0LDYgKzY1MjQsMTMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpCit7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVnaW5Nb25p
dG9yaW5nQ2FwdHVyZURldmljZXMoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmE1YjI1OWZjYWVhNmQ4OTI4ZjA5
ODg5Yzc5ODA0NWViMTBkODgxNS4uMTg1ZWNmMDE3OTM4Y2E1NDViMTdiMDNiZmNhN2I5ZGI4ZmFh
MDQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0OTEsNiAr
MTQ5MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9j
dW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Qm
KTsKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luRGF0YSk7CisgICAgdm9pZCBiZWdpbk1v
bml0b3JpbmdDYXB0dXJlRGV2aWNlcygpOwogCiAgICAgdm9pZCBydW5Nb2RhbCgpOwogICAgIHZv
aWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggYjMxZjVmMGJlMzRjYzk0ODkyN2E5YjEzNmQwY2MzMmM1MWJjOWMyYS4uNmQy
OWE5ZmQyZTQ2M2RmOWEwZjA2ZTAzNDdmYWM2NDUxYjVjMDg2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjg3LDYgKzI4Nyw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBNZWRpYVN0ZWFtIG1lc3NhZ2Vz
CiAgICAgUmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVk
aWFJRCwgdWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgcmVxdWVzdCkKICAgICBFbnVtZXJhdGVNZWRpYURl
dmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbklkZW50aWZpZXIpCisgICAgQmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMo
KQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzgzM2MxZmVlNWIzMzNh
NmE1N2ExZjIxMzk0Njk3NTMwOTYwNTc1NC4uMzY2MjE5MDAyYjExZTExYjBkZTMzN2VkOGE4NWZl
N2VmODkwOTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03NCw2ICs3NCw3IEBACiAJCTA3NEU3NUZFMURGMjIxMTkwMEQzMThFQyAv
KiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NEU3NjAyMURGNzA3QkUwMEQzMThFQyAvKiBNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NjAwMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmNwcCAqLzsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZD
IC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1l
bnVDbGllbnQuaCAqLzsgfTsKKwkJMDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9OwogCQkwN0E1RUJCQjFDN0JBNDNFMDBCOUNB
NjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRs
ZVJlZi5jcHAgKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFu
ZGxlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAwRTkwMDQw
MEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3Np
bmdTUEkuaCAqLzsgfTsKQEAgLTk0MjAsNiArOTQyMSw3IEBACiAJCQkJQ0Q0OTFCMTMxRTczNDgy
MTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMDNG
MDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QTNDQzE4RDE5QjA2NDE5MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8q
IFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggOWNjYWNlMDU3N2M3ZmJj
OGZmNTcwNmJkZmFkOTNlNDM3Y2M2ZTFmMy4uMmM2MzdlOWEzMjZlNmQ4NjIyZDNkZDIxNmY4ODUx
NjkzM2FlYzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFncyBmb2N1c2VkQWN0aXZlV2luZG93ID0gV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNGb2N1c2VkIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisKIHN0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZVJlcXVlc3RJRCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVJlcXVl
c3RJRCA9IDE7CkBAIC01Myw2ICs1NSw4IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmIHBhCiAKIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpCiB7CisgICAgaWYgKG1fbW9uaXRvcmluZ1N0YXRlQ2hhbmdlcykKKyAgICAg
ICAgbV9wYWdlLmNvcmVQYWdlKCktPnJlbW92ZUFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigq
dGhpcyk7CiAgICAgZm9yIChhdXRvJiBzYW5kYm94RXh0ZW5zaW9uIDogbV91c2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucykKICAgICAgICAgc2FuZGJveEV4dGVuc2lvbi52YWx1ZS0+cmV2
b2tlKCk7CiB9CkBAIC0yMjIsNiArMjI2LDc3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjCiAg
ICAgfQogfQogCitVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjphZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuVHlwZT4oKTsKKyAgICBtX2RldmljZUNoYW5nZU9ic2VydmVy
TWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9ic2VydmVyKSk7CisKKyAgICBpZiAoIW1fbW9u
aXRvcmluZ0RldmljZUNoYW5nZSkgeworICAgICAgICBtX21vbml0b3JpbmdEZXZpY2VDaGFuZ2Ug
PSB0cnVlOworICAgICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCZWdp
bk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpKTsKKyAgICB9CisgICAgcmV0dXJuIGlkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVE
ZXZpY2VDaGFuZ2VPYnNlcnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVy
VG9rZW4gdG9rZW4pCit7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9kZXZpY2VDaGFuZ2VPYnNl
cnZlck1hcC5yZW1vdmUodG9rZW4pOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2Fz
UmVtb3ZlZCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpj
YXB0dXJlRGV2aWNlc0NoYW5nZWQoRGV2aWNlQWNjZXNzU3RhdGUgYWNjZXNzU3RhdGUpCit7Cisg
ICAgLy8gV2hlbiBuZXcgbWVkaWEgaW5wdXQgYW5kL29yIG91dHB1dCBkZXZpY2VzIGFyZSBtYWRl
IGF2YWlsYWJsZSwgb3IgYW55IGF2YWlsYWJsZSBpbnB1dCBhbmQvb3IKKyAgICAvLyBvdXRwdXQg
ZGV2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUsIHRoZSBVc2VyIEFnZW50IE1VU1QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHMgaW4gYnJvd3NpbmcKKyAgICAvLyBjb250ZXh0cyB3aGVyZSBhdCBsZWFz
dCBvbmUgb2YgdGhlIGZvbGxvd2luZyBjcml0ZXJpYSBhcmUgbWV0LCBidXQgaW4gbm8gb3RoZXIg
Y29udGV4dHM6CisKKyAgICAvLyAqIFRoZSBwZXJtaXNzaW9uIHN0YXRlIG9mIHRoZSAiZGV2aWNl
LWluZm8iIHBlcm1pc3Npb24gaXMgImdyYW50ZWQiLAorICAgIC8vICogYW55IG9mIHRoZSBpbnB1
dCBkZXZpY2VzIGFyZSBhdHRhY2hlZCB0byBhbiBhY3RpdmUgTWVkaWFTdHJlYW0gaW4gdGhlIGJy
b3dzaW5nIGNvbnRleHQsIG9yCisgICAgLy8gKiB0aGUgYWN0aXZlIGRvY3VtZW50IGlzIGZ1bGx5
IGFjdGl2ZSBhbmQgaGFzIGZvY3VzLgorCisgICAgYm9vbCBpc0FjdGl2ZSA9IChtX3BhZ2UuY29y
ZVBhZ2UoKS0+YWN0aXZpdHlTdGF0ZSgpICYgZm9jdXNlZEFjdGl2ZVdpbmRvdykgPT0gZm9jdXNl
ZEFjdGl2ZVdpbmRvdzsKKyAgICBpZiAoIWlzQWN0aXZlICYmIGFjY2Vzc1N0YXRlICE9IERldmlj
ZUFjY2Vzc1N0YXRlOjpTZXNzaW9uQWNjZXNzICYmIGFjY2Vzc1N0YXRlICE9IERldmljZUFjY2Vz
c1N0YXRlOjpQZXJzaXN0ZW50QWNjZXNzKSB7CisgICAgICAgIGlmICghaXNBY3RpdmUpIHsKKyAg
ICAgICAgICAgIGlmICghbV9tb25pdG9yaW5nU3RhdGVDaGFuZ2VzKSB7CisgICAgICAgICAgICAg
ICAgbV9tb25pdG9yaW5nU3RhdGVDaGFuZ2VzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX3Bh
Z2UuY29yZVBhZ2UoKS0+YWRkQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKCp0aGlzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fcGVuZGluZ0RldmljZUNoYW5nZUV2ZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIG1fYWNjZXNzU3RhdGVXaGVuRGV2aWNlc0NoYW5nZWQgPSBhY2Nlc3NT
dGF0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBpZGVu
dGlmaWVycyA9IG1fZGV2aWNlQ2hhbmdlT2JzZXJ2ZXJNYXAua2V5cygpOworICAgIGZvciAoYXV0
byYgaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Rldmlj
ZUNoYW5nZU9ic2VydmVyTWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIGlmIChpdCAhPSBt
X2RldmljZUNoYW5nZU9ic2VydmVyTWFwLmVuZCgpKQorICAgICAgICAgICAgKGl0LT52YWx1ZSko
KTsKKyAgICB9Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFj
dGl2aXR5U3RhdGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3Rh
dGUpCit7CisgICAgaWYgKChuZXdBY3Rpdml0eVN0YXRlICYgZm9jdXNlZEFjdGl2ZVdpbmRvdykg
IT0gZm9jdXNlZEFjdGl2ZVdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9tb25pdG9yaW5nU3RhdGVDaGFu
Z2VzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbW9uaXRvcmluZ1N0YXRlQ2hh
bmdlcyA9IGZhbHNlOworICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+cmVtb3ZlQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyKCp0aGlzKTsKKyAgICB9KTsKKworICAgIGlmICghbV9wZW5kaW5n
RGV2aWNlQ2hhbmdlRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGVuZGluZ0Rldmlj
ZUNoYW5nZUV2ZW50ID0gZmFsc2U7CisgICAgYXV0byBhY2Nlc3NTdGF0ZSA9IG1fYWNjZXNzU3Rh
dGVXaGVuRGV2aWNlc0NoYW5nZWQ7CisgICAgbV9hY2Nlc3NTdGF0ZVdoZW5EZXZpY2VzQ2hhbmdl
ZCA9IERldmljZUFjY2Vzc1N0YXRlOjpOb0FjY2VzczsKKyAgICBjYXB0dXJlRGV2aWNlc0NoYW5n
ZWQoYWNjZXNzU3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgKaW5kZXggYTdlZmM4YWRlYWFlZTUwOTA1YWM0MGE3ODUyNTVlOGY2ZjhiNDE0
MC4uMjM0MjUzNTljYzQzZGM4NDg2ODAyMWQxYjA5ZmQzMjJlMDc1MDkyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMjQsNiArMjQsNyBAQAog
CiAjaW5jbHVkZSAiTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDYW5TdGFydExpc3RlbmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QuaD4KQEAgLTM3LDggKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcgotICAgIDogcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlz
dGVuZXIgeworZW51bSBjbGFzcyBEZXZpY2VBY2Nlc3NTdGF0ZSB7IE5vQWNjZXNzLCBTZXNzaW9u
QWNjZXNzLCBQZXJzaXN0ZW50QWNjZXNzIH07CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI+LCBwcml2YXRlIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwg
cHJpdmF0ZSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7
CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpOwpAQCAtNTUsMTIgKzU3
LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYmKTsKICAgICB2b2lkIHJldm9rZVVz
ZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAK
KyAgICBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4g
YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZv
aWQgcmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50OjpE
ZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuKTsKKworICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFu
Z2VkKERldmljZUFjY2Vzc1N0YXRlKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNlbmRVc2VyTWVk
aWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsKIAogICAgIC8vIFdlYkNvcmU6
Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lcgogICAgIHZvaWQgbWVkaWFDYW5TdGFydChXZWJDb3JlOjpE
b2N1bWVudCYpIG92ZXJyaWRlOwogCisgICAgLy8gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyCisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJyaWRlOworCiAgICAgdm9pZCByZW1vdmVNZWRp
YVJlcXVlc3RGcm9tTWFwcyhXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKICAgICBXZWJQ
YWdlJiBtX3BhZ2U7CkBAIC03MywxMCArODMsMjkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJl
ZlB0cjxXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q+LCB1aW50NjRfdD4g
bV9tZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3RUb0lETWFwOwogCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV91c2VyTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9uczsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IG1fZGV2aWNlQ2hh
bmdlT2JzZXJ2ZXJNYXA7CisgICAgRGV2aWNlQWNjZXNzU3RhdGUgbV9hY2Nlc3NTdGF0ZVdoZW5E
ZXZpY2VzQ2hhbmdlZCB7IERldmljZUFjY2Vzc1N0YXRlOjpOb0FjY2VzcyB9OworICAgIGJvb2wg
bV9tb25pdG9yaW5nRGV2aWNlQ2hhbmdlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGVuZGluZ0Rl
dmljZUNoYW5nZUV2ZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9uaXRvcmluZ1N0YXRlQ2hh
bmdlcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpEZXZpY2VBY2Nl
c3NTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktp
dDo6RGV2aWNlQWNjZXNzU3RhdGUsCisgICAgICAgIFdlYktpdDo6RGV2aWNlQWNjZXNzU3RhdGU6
Ok5vQWNjZXNzLAorICAgICAgICBXZWJLaXQ6OkRldmljZUFjY2Vzc1N0YXRlOjpTZXNzaW9uQWNj
ZXNzLAorICAgICAgICBXZWJLaXQ6OkRldmljZUFjY2Vzc1N0YXRlOjpQZXJzaXN0ZW50QWNjZXNz
CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKIAogI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCmluZGV4IDZmNjA1NzQyZWVjMzA0MjAyYTY0
MDRiNTM1YmNhN2M1NTU5YjRmZDEuLjhmNzBjYmIwNmI1OWFkYTgwYzY0ZWI0MmFhZTU3MDk2YTU0
MmQyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCkBAIC02Miw2ICs2MiwxNiBAQCB2
b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1
ZXN0KE1lZGlhRGV2aWNlc0VudW1lcgogICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKS5jYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihyZXF1ZXN0KTsKIH0K
IAorV2ViVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIFdlYlVzZXJN
ZWRpYUNsaWVudDo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgb2JzZXJ2ZXIpCit7CisgICAgcmV0dXJuIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKS5hZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEZNb3ZlKG9ic2VydmVyKSk7
Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZl
cihEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIHRva2VuKQoreworICAgIG1fcGFnZS51c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5yZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcih0
b2tlbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlmIC8vIE1FRElBX1NU
UkVBTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IGE2ZTMxMzI2MmQ1YmE3YzRiYWY0M2Jk
MzA0ZjNkODY5ODA5NGYzNmMuLjM0MTM1ZmQ3MzZlOTBhYTkwMjcwMWE3NWFhNWNhZmE2NDMzMjA1
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlcyhXZWJDb3JlOjpNZWRpYURldmljZXNFbnVt
ZXJhdGlvblJlcXVlc3QmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbE1lZGlhRGV2aWNlc0VudW1l
cmF0aW9uUmVxdWVzdChXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKSBm
aW5hbDsKIAorICAgIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbikgZmluYWw7CisKICAg
ICB2b2lkIGluaXRpYWxpemVGYWN0b3JpZXMoKTsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTExNDNh
MzJkYjQwOTllNmZmZjVhNThjMDRiNWEwZjc3ODQ3NzhlMi4uYTQxZWQwZTMwYTM0YjZhZGMxNGJk
MjllZThlNWRiMmUzNjA0YjUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTM3NTcsNiArMzc1NywxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENv
bXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3Qg
VmVjdAogewogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5kaWRDb21w
bGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQsIGRldmljZXMsIFdURk1vdmUo
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vzcyk7CiB9
CisKK3ZvaWQgV2ViUGFnZTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRl
IGFjY2Vzc1N0YXRlKQoreworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoYWNjZXNzU3RhdGUpOworfQorCiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKIHZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYgZXh0ZW5zaW9ucykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0MDhh
ZGRkMDhlM2MyOTgyOTYyNTI3NDc4OWM5ZWI1OTExNzE0NTFlLi43MTM2YzExNjhjZTEzZTI1YWQz
NjVmMDM3ZjQ2YjhiNzBkM2YzZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0yMjgsNiArMjI4LDcgQEAgY2xhc3MgV2ViVG91Y2hFdmVudDsKIGNs
YXNzIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb247CiAKK2VudW0gY2xhc3MgRGV2aWNlQWNjZXNzU3RhdGU7CiBlbnVtIEZpbmRPcHRpb25z
IDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIERyYWdDb250cm9sbGVyQWN0aW9uOwogCkBAIC01NjUs
NiArNTY2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKSB7IHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0K
ICAgICB2b2lkIHByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgpOworICAg
IHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlKTsKICNlbmRpZgog
CiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
MWM0NGQ3N2U2NTI0ZDYzNjYyM2U0MjQ2ZjI1NmE1NzE2YjFjMDM3OS4uY2QzYTVmODMwZmRkNmVm
YTU1MGI2OTI0MTdkMTZlMDQwNzgzYTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTksNiArMzE5LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXNlck1lZGlhQWNjZXNz
V2FzR3JhbnRlZCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSBh
dWRpb0RldmljZSwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSB2aWRlb0RldmljZSwgU3RyaW5nIG1l
ZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQogICAgIFVzZXJNZWRpYUFjY2Vzc1dhc0Rlbmll
ZCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgcmVhc29uLCBTdHJpbmcgaW52YWxpZENv
bnN0cmFpbnQpCiAgICAgRGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNlcywgU3Ry
aW5nIG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0LCBib29sIGhhc1BlcnNpc3RlbnRBY2Nl
c3MpCisgICAgQ2FwdHVyZURldmljZXNDaGFuZ2VkKGVudW0gV2ViS2l0OjpEZXZpY2VBY2Nlc3NT
dGF0ZSBhY2Nlc3NTdGF0ZSkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIEdy
YW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoV2ViS2l0OjpNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zIHNhbmRib3hFeHRlbnNpb25zKQogICAgIFJldm9rZVVzZXJNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNpb25JRHMp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmZmODgyNjc4MzVkOWRlYmFlYjhjMmZiMWIzMDM1N2RhMzA3OWQ3NS4uYzFjNzg3
MDJiMmIwMjg5ODAyYjEwZmZkMWUzNDFiZjQ2ODZiNmVmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDE4LTA4LTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNl
LWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sOiBVcGRhdGVkLgorCiAyMDE4LTA4
LTE1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlv
dXQgVGVzdCBlZGl0aW5nL2lucHV0L3ByZXNzLXRhYi1kdXJpbmctaW1lLWNvbXBvc2l0aW9uLmh0
bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9k
ZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0CmluZGV4IDY0YzZiNjEw
NzZmYWFhM2RlNGY4MTY4Zjc5NjljZjEwZjYwN2E2OWQuLjlhMmM3NmMwNzFjNWZhOTEwZjk1NDBh
ZjRhMjk4ZDE0ZTdkZGYxM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSw1IEBACiAKIFBBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQgZmlyZWQgd2hlbiBkZXZpY2Ug
bGlzdCBjaGFuZ2VzIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudCBub3QgZmlyZWQgdW50aWwg
dGhlIGRvY3VtZW50IGlzIHZpc2libGUgCitQQVNTICdkZXZpY2VjaGFuZ2UnIGV2ZW50cyBmaXJl
ZCBxdWlja2x5IGFyZSBjb2FsZXNjZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sCmluZGV4IDQzZDVmMmJkZmVk
ZDkxZWNiZDIzZmM3MWI4MzU3MWUwNzA3YjI1NWIuLmFjNGI2ZjgzMTE4OTcyNmU3MGM4ZGYzYTU2
ODRlYTY5MjY2ZjE2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
ZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbApAQCAtNyw3ICs3LDggQEAKICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0PgogICAgIGxldCBkZXZpY2VJZHMgPSBbXTsKLSAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICBsZXQgc2V0dXAgPSBhc3luYyAodGVzdCkgPT4g
ewogICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCJ0ZXN0IHJlcXVpcmVzIGludGVybmFsIEFQSSIpOwogCkBAIC0yNSwxMSAr
MjYsMTYgQEAKIAogICAgICAgICBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5lbnVtZXJhdGVEZXZpY2VzKCk7CiAgICAgICAgIGFzc2VydF9mYWxzZSghIWRldmljZXMubGVu
Z3RoLCAiY2hlY2sgdGhlcmUgYXJlIG5vIG1vcmUgZGV2aWNlcyIpOworICAgIH0KKyAgICAKKyAg
ICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICAgICAgYXdhaXQgc2V0
dXAodGVzdCk7CiAKICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4gewogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9
IHJlc29sdmU7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBjb25zb2xlLmxvZygiZXZlbnQgMSB0YWtpbmcgYSBsb25nIHRpbWUiKTsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmxvZygiZXZlbnQgMSB0b29rIHRvbyBsb25nIik7CiAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSwgNTAwMCk7CiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmFkZE1vY2tDYW1lcmFEZXZpY2UoImlkMSIsICJteSBjYW1lcmEiKTsKQEAgLTQxLDcgKzQ3
LDcgQEAKICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewog
ICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJlc29s
dmU7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZygiZXZlbnQgMiB0YWtpbmcgYSBsb25nIHRpbWUiKTsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmxvZygiZXZlbnQgMiB0b29rIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSwgNTAwMCk7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLmFk
ZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDIiLCAibXkgbWljIik7CkBAIC01MSw2ICs1Nyw1OCBA
QAogICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZXNbMF0ubGFiZWwsICJteSBtaWMiKTsKIAog
ICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVudCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNoYW5n
ZXMiKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworCisgICAgICAgIGF3
YWl0IHNldHVwKHRlc3QpOworCisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgICAgIGRvY3VtZW50Lm9udmlzaWJpbGl0eWNoYW5nZSA9IHJl
c29sdmU7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmxvZygiZG9jdW1lbnQub252aXNpYmlsaXR5Y2hhbmdlIHRvb2sgdG9vIGxvbmciKTsK
KyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1MDAwKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0UGFnZVZpc2liaWxpdHkoImhpZGRlbiIpOworICAgICAgICB9
KTsKKyAgICAgICAgCisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2Ug
PSAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRvY3VtZW50LmhpZGRlbiwg
ImRldmljZWNoYW5nZSBzaG91bGQgbm90IGJlIGZpcmVkIHdoZW4gdGhlIGRvY3VtZW50IGlzIGhp
ZGRlbiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFBhZ2VWaXNpYmlsaXR5KCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9LCAzMDApOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQzIiwgIm1pY3JvcGhv
bmUgMiIpOworICAgICAgICB9KTsKKworICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVudCBub3Qg
ZmlyZWQgdW50aWwgdGhlIGRvY3VtZW50IGlzIHZpc2libGUiKTsKKworICAgIHByb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworCisgICAgICAgIGF3YWl0IHNldHVwKHRlc3QpOworCisgICAg
ICAgIGxldCBldmVudENvdW50ID0gMDsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRl
dmljZWNoYW5nZSA9IChldnQpID0+IHsKKyAgICAgICAgICAgICAgICArK2V2ZW50Q291bnQ7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICB9LCAyMDApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSB0b29rIHRvbyBsb25nIik7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSwgNDAwMCk7CisKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja01pY3JvcGhvbmVEZXZpY2UoImlkNCIsICJtaWNyb3Bo
b25lIDMiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja01pY3JvcGhvbmVEZXZpY2Uo
ImlkNSIsICJtaWNyb3Bob25lIDQiKTsKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoZXZlbnRDb3VudCwgMSwgIm9uZSBvbmUgZXZlbnQgZmlyZWQiKTsKKworICAgIH0sICInZGV2
aWNlY2hhbmdlJyBldmVudHMgZmlyZWQgcXVpY2tseSBhcmUgY29hbGVzY2VkIik7CisKICAgICA8
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgo=
</data>
<flag name="review"
          id="365031"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347366</attachid>
            <date>2018-08-17 10:36:05 -0700</date>
            <delta_ts>2018-08-17 12:39:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-188521-20180817103604.patch</filename>
            <type>text/plain</type>
            <size>72141</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA1MmM2MzI1MjFmZmZl
ZDdmNmExYjkxODFkMTE4YmRkNTZiY2QyNy4uNjg1MWM4NmQyYWNkY2UzNGY3ZDExNmQxOGZlNWMw
NTQyOWJkODMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE4LTA4LTE1ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdXBkYXRlZCBmYXN0L21lZGlhc3RyZWFtL2Rldmlj
ZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGZvciB0aGUgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlczo6TWVkaWFEZXZpY2VzKTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBhZGRlZCBp
biBhZGRFdmVudExpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzdG9w
KTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBvbiB0aGUgdXNlciBtZWRpYSBjb250cm9sbGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKTogQWRk
IHRoZSBkZXZpY2UgY2hhbmdlIGxpc3RlbmVyIG9ubHkgb25jZSB0aGUgZmlyc3QKKyAgICAgICAg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5oOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNo
YW5nZU9ic2VydmVyKTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcik6IERp
dHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNoYW5nZWQpOiBO
b3RpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci4KKyAgICAgICAgKG5leHRPYnNlcnZlclRv
a2VuKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpyZW1vdmVDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpvYnNl
cnZlck1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjphZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMpOiBDYWxsIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKTogRGl0
dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlSGFzSW5wdXRTdHJl
YW1zKTogRHJpdmUtYnkgZml4LCBjaGVjayB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gc2VlIGlm
IHRoZQorICAgICAgICBkZXZpY2UgaGFzIGlucHV0IHN0cmVhbXMuCisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvQ2FwdHVyZURldmljZXMp
OiBVc2UgbmV3IGJvb2wgcGFyYW1ldGVyCisgICAgICAgIGFkZGVkIHRvIHJlZnJlc2hBdWRpb0Nh
cHR1cmVEZXZpY2VzIHNvIHdlIHdvbid0IHRyaWdnZXIgYSBkZXZpY2UgY2hhbmdlIGV2ZW50IG9u
IHRoZSBmaXJzdCBzY2FuLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKTogQWRkIHBhcmFtLgorICAgICAg
ICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2Vk
KTogVXNlIG5ldyBwYXJhbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMpOiBEb24ndCBuZWVkIHRvIGNh
bGwgY2FwdHVyZURldmljZXNDaGFuZ2VkLAorICAgICAgICBpdCBpcyBkb25lIGluIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OmFkZERldmljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnJlbW92ZURldmljZSk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOiBOZXcsIHVzZWQgYnkgdXBkYXRlZCB0ZXN0Lgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorCiAyMDE4LTA4LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtBdHRhY2htZW50IFNQSV0gUmVtb3ZlIGF0dGFjaG1lbnQgZGlzcGxh
eSBtb2RlIG9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjViNzhhMjUzYzlkZTZkMDZkNTcwYzZiZGZlZjE1
OGQ2N2FjNzc0Yi4uMTcwNThmM2NjNzdkOTYzMDYxYmJkMjNlYjM5MzA2N2I0YjM3N2E2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxOC0wOC0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIE1vdmUgY2FwdHVyZSBk
ZXZpY2UgbW9uaXRvcmluZyB0byBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODUyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMyNTE3
ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjYXB0
dXJlRGV2aWNlc0NoYW5nZWQpOiBOb3RpZnkgYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp2aWV3SXNCZWNvbWlu
Z1Zpc2libGUpOiBDaGFuZ2UgbmFtZSBmcm9tCisgICAgICAgIHZpZXdJc0JlY29taW5nVmlzaWJs
ZS4gQ2FsbCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQgaWYgYSBjaGFuZ2UgaGFwcGVuZWQgd2hlbiBu
b3QgdmlzaWJsZS4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OndhdGNoZG9nVGltZXJGaXJlZCk6IENsZWFyIG1fcGVuZGluZ0RldmljZUNo
YW5nZUV2ZW50LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6cHJvY2Vzc1ByZWdyYW50ZWRSZXF1ZXN0cyk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6VXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIpOiBJbml0aWFsaXplIHRpbWVyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKTogTmV3LCBub3RpZnkgZWFjaCBtYW5hZ2Vy
LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YmVnaW5Nb25pdG9y
aW5nQ2FwdHVyZURldmljZXMpOiBDYWNoZSB0aGUgZGV2aWNlIGxpc3QgYW5kIAorICAgICAgICBy
ZWdpc3RlciBkZXZpY2UgY2hhbmdlIGxpc3RlbmVyIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnZpZXdJc0JlY29taW5nVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6YmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKTogQWRkIGxp
c3RlbmVyLCB0ZWxsIHBhZ2UKKyAgICAgICAgdG8gc3RhcnQgbW9uaXRvcmluZyBkZXZpY2UgY2hh
bmdlcy4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcik6IFJlbW92ZSBsaXN0ZW5lci4KKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYXB0dXJlRGV2aWNl
c0NoYW5nZWQpOiBDYWxsIGxpc3RlbmVycy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNl
cnZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkTW9ja01lZGlhRGV2aWNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJNb2NrTWVkaWFEZXZpY2VzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlTW9ja01lZGlhRGV2aWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRNb2NrTWVkaWFEZXZpY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAxOC0wOC0xNSAgTWljaGFlbCBDYXRhbnph
cm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBXYXlsYW5k
Q29tcG9zaXRvciBmYWlscyB0byBwcm9wZXJseSByZW1vdmUgc3VyZmFjZSBmcm9tIGl0cyBwYWdl
IG1hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuY3BwCmluZGV4IGJlOTA1MWM5Mzk5NGQ1YmJjMTBhMGQ4YWE2OTQxOWIxNzE0YWVlYWIu
LjZlNWE5YWE3ZmVjNTA0ZGNkZmU2MWI0NDM1N2E0NTFjN2VkZjU2MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJl
ci5oPgogCkBAIC01MSwxNyArNTIsNiBAQCBpbmxpbmUgTWVkaWFEZXZpY2VzOjpNZWRpYURldmlj
ZXMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKCp0aGlz
LCAmTWVkaWFEZXZpY2VzOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX2V2ZW50
TmFtZXMoZXZlbnROYW1lcygpKQogewotICAgIG1fZGV2aWNlQ2hhbmdlZFRva2VuID0gUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZl
cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdKCkgewotCi0gICAgICAgIGlm
ICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBvbmx5IGRpc3BhdGNoIGFuIGV2ZW50IGlmIHRoZSB1c2VyIGhhcyBiZWVuIGdyYW50
ZWQgYWNjZXNzIHRvIHRoZSB0eXBlIG9mCi0gICAgICAgIC8vIGRldmljZSB0aGF0IHdhcyBhZGRl
ZCBvciByZW1vdmVkLgotICAgICAgICBpZiAoIW1fc2NoZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2
ZSgpKQotICAgICAgICAgICAgbV9zY2hlZHVsZWRFdmVudFRpbWVyLnN0YXJ0T25lU2hvdChTZWNv
bmRzKHJhbmRvbU51bWJlcigpIC8gMikpOwotICAgIH0pOwotCiAgICAgc3VzcGVuZElmTmVlZGVk
KCk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFEZXZpY2Vz
OjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpNb25pdG9yKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25p
dG9yKSwgIk1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6TW9uaXRvciBp
cyBub3QgZXF1YWwgdG8gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFj
ZVR5cGU6Ok1vbml0b3IgYXMgZXhwZWN0ZWQiKTsKQEAgLTc0LDggKzY0LDEyIEBAIE1lZGlhRGV2
aWNlczo6fk1lZGlhRGV2aWNlcygpID0gZGVmYXVsdDsKIAogdm9pZCBNZWRpYURldmljZXM6OnN0
b3AoKQogewotICAgIGlmIChtX2RldmljZUNoYW5nZWRUb2tlbikKLSAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkucmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZl
cihtX2RldmljZUNoYW5nZWRUb2tlbik7CisgICAgaWYgKG1fZGV2aWNlQ2hhbmdlVG9rZW4pIHsK
KyAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgICAgICBhdXRv
KiBjb250cm9sbGVyID0gZG9jdW1lbnQgPyBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3Vt
ZW50LT5wYWdlKCkpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKGRvY3VtZW50ICYmIGNvbnRyb2xs
ZXIpCisgICAgICAgICAgICBjb250cm9sbGVyLT5yZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlciht
X2RldmljZUNoYW5nZVRva2VuKTsKKyAgICB9CiB9CiAKIFJlZjxNZWRpYURldmljZXM+IE1lZGlh
RGV2aWNlczo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTE4MSw2ICsxNzUsMjcgQEAg
Ym9vbCBNZWRpYURldmljZXM6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIE1lZGlhRGV2aWNlczo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYg
bGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQoreworICAg
IGlmICghbV9saXN0ZW5pbmdGb3JEZXZpY2VDaGFuZ2VzICYmIGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuZGV2aWNlY2hhbmdlRXZlbnQpIHsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOworICAgICAgICBhdXRvKiBjb250cm9sbGVyID0gZG9jdW1lbnQgPyBVc2Vy
TWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50LT5wYWdlKCkpIDogbnVsbHB0cjsKKyAgICAg
ICAgaWYgKGRvY3VtZW50ICYmIGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIG1fbGlzdGVuaW5n
Rm9yRGV2aWNlQ2hhbmdlcyA9IHRydWU7CisKKyAgICAgICAgICAgIG1fZGV2aWNlQ2hhbmdlVG9r
ZW4gPSBjb250cm9sbGVyLT5hZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHRoaXNdKCkgeworCisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cyB8fCBtX3NjaGVkdWxlZEV2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRFdmVudFRpbWVyLnN0YXJ0
T25lU2hvdChTZWNvbmRzKHJhbmRvbU51bWJlcigpIC8gMikpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5oCmluZGV4IDAyZDFhZWY5ZDZmMzE3ODY3YTk3ZjE5NWJlOTA2MTQ4NTk1NDljZjUuLjA3
MmJhMTVkNDk2ZTNhNmI4NzJmMTA5YTk2MzU4MmQyZjIwMGQ5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMSArNDEsMTEg
QEAKICNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFEZXZpY2VJbmZvOwogY2xhc3Mg
TWVkaWFTdHJlYW07CiAKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYURldmljZXMoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZp
cmVkKCk7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIGZyaWVuZCBjbGFzcyBKU01lZGlhRGV2aWNlc093bmVyOwog
CkBAIC0xMDEsOCArMTAyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIFRpbWVyIG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsK
LSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9r
ZW4gbV9kZXZpY2VDaGFuZ2VkVG9rZW47CisgICAgVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFu
Z2VPYnNlcnZlclRva2VuIG1fZGV2aWNlQ2hhbmdlVG9rZW47CiAgICAgY29uc3QgRXZlbnROYW1l
cyYgbV9ldmVudE5hbWVzOyAvLyBOZWVkIHRvIGNhY2hlIHRoaXMgc28gd2UgY2FuIHVzZSBpdCBm
cm9tIEdDIHRocmVhZHMuCisgICAgYm9vbCBtX2xpc3RlbmluZ0ZvckRldmljZUNoYW5nZXMgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggM2UzYWRl
MWE4YzJiZDVlYTcwYzAyNzYzMmQ3NjBlM2EwMTczN2RiZi4uYjJhYTU2MDNmNTc1MTI3ZTVmNWE4
NjQ2YTlhODc3ZTIxNGE0YTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDggQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVz
dDsKQEAgLTQ5LDYgKzUxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRl
TWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0KE1lZGlhRGV2
aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpID0gMDsKIAorICAgIGVudW0gRGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXJUb2tlblR5cGUgeyB9OworICAgIHVzaW5nIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4g
PSBPYmplY3RJZGVudGlmaWVyPERldmljZUNoYW5nZU9ic2VydmVyVG9rZW5UeXBlPjsKKyAgICB2
aXJ0dWFsIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbikgPSAwOworCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VXNlck1lZGlhQ2xpZW50KCkgPSBkZWZhdWx0OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmgKaW5kZXggMjI0OWFiZjI3ODZiZDIyMzVjNDAxODhjNGFjNDRhYTE4N2Q2MmJm
NS4uY2ZhYzU5OWQ3ZmJlMzRiZDUwNDA0ODQ5MTY1ZTUzZmJiM2E1YjFiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00OCw2ICs0OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNl
cyhNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbE1lZGlh
RGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdChNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Qm
KTsKIAorICAgIFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGRE
ZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBy
ZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9i
c2VydmVyVG9rZW4pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CiAgICAgc3RhdGljIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGZyb20oUGFn
ZSogcGFnZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VXNlck1lZGlhQ29udHJvbGxlcio+KFN1cHBs
ZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9CiAKQEAgLTc1LDYg
Kzc4LDE2IEBAIGlubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNhbmNlbE1lZGlhRGV2
aWNlc0VudW1lcmF0aW9uUmVxdWVzdChNZWRpYURldmljCiAgICAgbV9jbGllbnQtPmNhbmNlbE1l
ZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdChyZXF1ZXN0KTsKIH0KIAoraW5saW5lIFVzZXJN
ZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBVc2VyTWVkaWFDb250cm9sbGVy
OjphZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZl
cikKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURk1v
dmUob2JzZXJ2ZXIpKTsKK30KKworaW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6cmVt
b3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNl
cnZlclRva2VuIHRva2VuKQoreworICAgIG1fY2xpZW50LT5yZW1vdmVEZXZpY2VDaGFuZ2VPYnNl
cnZlcih0b2tlbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDY1NDIwNWFlZDc5ODg2MzBhYjgz
YmQ1MGZmODc4NGVmNzViZjRkY2IuLjBjNTI4Nzg0YjUyMmEyNTM3NjFlMjQ5YjI2YTg1ZWI3ZTFm
OTZkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC00MzQsOCArNDM0LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SXNSZXN0b3JpbmdDYWNoZWRQYWdlKGJvb2wgdmFsdWUpIHsgbV9pc1Jlc3RvcmluZ0Nh
Y2hlZFBhZ2UgPSB2YWx1ZTsgfQogICAgIGJvb2wgaXNSZXN0b3JpbmdDYWNoZWRQYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Jlc3RvcmluZ0NhY2hlZFBhZ2U7IH0KIAotICAgIHZvaWQgYWRkQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOwot
ICAgIHZvaWQgcmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVD
aGFuZ2VPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5
U3RhdGVDaGFuZ2VPYnNlcnZlciYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25zKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCBjZDE0N2EwMmI0
Y2Q3YzBlODEyN2Y5N2FjMDM5ODY1YTRmNjcyOGVkLi44YTM5YjI5MmY5MzhhY2Q0OTA1OTAyYTQ1
YWM0YWY4YTg3NTUwY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsMjQgKzUw
LDE0IEBAIENhcHR1cmVEZXZpY2UgQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VG
cm9tUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0
aWMgQ2FwdHVyZURldmljZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dE9ic2VydmVyVG9rZW4o
KQordm9pZCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlQ2hhbmdlZCgpCiB7Ci0gICAgc3Rh
dGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIG5leHRUb2tlbiA9IDA7Ci0g
ICAgcmV0dXJuICsrbmV4dFRva2VuOwotfQotCi1DYXB0dXJlRGV2aWNlTWFuYWdlcjo6T2JzZXJ2
ZXJUb2tlbiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNl
cnZlcihDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrJiYgb2JzZXJ2ZXIpCi17Ci0gICAgYXV0
byB0b2tlbiA9IG5leHRPYnNlcnZlclRva2VuKCk7Ci0gICAgbV9vYnNlcnZlcnMuc2V0KHRva2Vu
LCBXVEZNb3ZlKG9ic2VydmVyKSk7Ci0gICAgcmV0dXJuIHRva2VuOwotfQorICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAKLXZvaWQgQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnJlbW92ZUNhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2ZXJUb2tlbiB0b2tl
bikKLXsKLSAgICBBU1NFUlQobV9vYnNlcnZlcnMuY29udGFpbnModG9rZW4pKTsKLSAgICBtX29i
c2VydmVycy5yZW1vdmUodG9rZW4pOworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICB9KTsKIH0KIAotCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IDQ1
ZWRiMzAwYzNiNzJlODc3MzQ1YzlmMDAyMzZmZDA2ZDM1NDljZGUuLjU3MzJkZTAzZGVlYjRmYzA5
ODVhMWIxYTc0YmNiYjE0NjBmZWM1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDIz
ICsyOSwxOSBAQAogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKK2NsYXNzIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENhcHR1cmVEZXZpY2VNYW5hZ2Vy
PiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBPYnNlcnZlclRva2VuID0gdWludDMyX3Q7
Ci0gICAgdmlydHVhbCBPYnNlcnZlclRva2VuIGFkZENhcHR1cmVEZXZpY2VDaGFuZ2VkT2JzZXJ2
ZXIoQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjayYmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuKTsKLQogICAgIHZp
cnR1YWwgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0gMDsK
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdp
dGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJikg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DYXB0
dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZUZyb21Q
ZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQpOwotICAgIEhhc2hNYXA8
T2JzZXJ2ZXJUb2tlbiwgQ2FwdHVyZURldmljZUNoYW5nZWRDYWxsYmFjaz4gbV9vYnNlcnZlcnM7
CisgICAgdm9pZCBkZXZpY2VDaGFuZ2VkKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IGJmZTRkNmRlMWM4MzQwNjgyYTFmN2VlMjllOGM5
NDU4NWZlMGJjZTguLjhhNDYwOWEyZDI2NDc0MTA2ODliZjQwMmEyYzFkNjM0NjEyYzdmZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25z
dHJhaW50PgogICAgICAgICAgICAgYmFkQ29uc3RyYWludCA9IGZyYW1lUmF0ZUNvbnN0cmFpbnQt
Pm5hbWUoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC03NTQsNyArNzU0LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNl
OjpzdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQog
ICAgICAgICAvLyBVbmtub3duIChvciB1bnN1cHBvcnRlZCkgY29uc3RyYWludHMgc2hvdWxkIGJl
IGlnbm9yZWQuCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtNzY1LDcgKzc2NSw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3Vw
cG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50CiAgICAg
RmxhdHRlbmVkQ29uc3RyYWludCBjYW5kaWRhdGVzOwogICAgIGlmICghc2VsZWN0U2V0dGluZ3Mo
Y29uc3RyYWludHMsIGNhbmRpZGF0ZXMsIGludmFsaWRDb25zdHJhaW50LCBTZWxlY3RUeXBlOjpG
b3JTdXBwb3J0c0NvbnN0cmFpbnRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5k
ZXggMzg4NmZmODc1Y2U4OWY1YzEwOGM0MzdiYjljYWEyZjRkN2YxNjAyYS4uZmZkNTFkNGU0NmQ1
ZThhYWEyYTIzYTA2MmFhMTI0Zjg1MmYzZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNz
c29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTUzLDEyICs1Myw2IEBAIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyKiYgbWVkaWFTdHJlYW1DZW50ZXJPdmVycmlkZSgpCiAgICAgcmV0dXJuIG92ZXJyaWRlOwog
fQogCi1zdGF0aWMgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiYgb2Jz
ZXJ2ZXJNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVuc2lnbmVk
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkKIHsKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKiBvdmVycmlkZSA9IG1lZGlh
U3RyZWFtQ2VudGVyT3ZlcnJpZGUoKTsKQEAgLTE5OSwyNSArMTkzLDE4IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBpZCwKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciB9OwogfQog
Ci1SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4g
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKLXsKLSAgICBzdGF0aWMgRGV2aWNlc0NoYW5n
ZWRPYnNlcnZlclRva2VuIG5leHRUb2tlbiA9IDA7Ci0gICAgb2JzZXJ2ZXJNYXAoKS5zZXQoKytu
ZXh0VG9rZW4sIFdURk1vdmUob2JzZXJ2ZXIpKTsKLSAgICByZXR1cm4gbmV4dFRva2VuOwotfQot
Ci12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIoRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIHRva2VuKQordm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmIG9ic2VydmVyKQogewotICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG9ic2VydmVyTWFw
KCkucmVtb3ZlKHRva2VuKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92
ZWQpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2RldmljZUNo
YW5nZWRPYnNlcnZlcik7CisgICAgbV9kZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEZNb3ZlKG9i
c2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2
aWNlc0NoYW5nZWQoKQogewotICAgIC8vIENvcHkgdGhlIGhhc2ggbWFwIGJlY2F1c2UgdGhlIG9i
c2VydmVyIGNhbGxiYWNrIG1heSBjYWxsIGJhY2sgaW4gYW5kIG1vZGlmeSB0aGUgbWFwLgotICAg
IGF1dG8gY2FsbGJhY2tzID0gb2JzZXJ2ZXJNYXAoKTsKLSAgICBmb3IgKGF1dG8mIGl0IDogY2Fs
bGJhY2tzKQotICAgICAgICBpdC52YWx1ZSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1fZGV2aWNlQ2hhbmdlZE9ic2VydmVyKQorICAgICAgICBtX2RldmljZUNoYW5n
ZWRPYnNlcnZlcigpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKFZhbGlkQ29uc3RyYWludHNIYW5kbGVyJiYgdmFsaWRIYW5k
bGVyLCBJbnZhbGlkQ29uc3RyYWludHNIYW5kbGVyJiYgaW52YWxpZEhhbmRsZXIsIGNvbnN0IE1l
ZGlhU3RyZWFtUmVxdWVzdCYgcmVxdWVzdCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hT
YWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IGVmN2IzY2ZjZDkxNmVkY2Nh
ZTYyMGU0NDIxZjhjMGJhYmU4ZmUzZWMuLmQ1NGFlOGU3ZmE1N2QzMjU3MWUwNzMwY2Q2Mjk3NzU0
ODhkZmNmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg1LDIyICs4NSwy
MiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2
aWNlV2l0aFVuaXF1ZUlEKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldERldmljZUVuYWJsZWQo
Y29uc3QgU3RyaW5nJiwgYm9vbCk7CiAKLSAgICB1c2luZyBEZXZpY2VzQ2hhbmdlZE9ic2VydmVy
VG9rZW4gPSB1bnNpZ25lZDsKLSAgICBEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gYWRkRGV2
aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBy
ZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRl
KGJvb2wsIGJvb2wpOwogCisgICAgdm9pZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKwogcHJv
dGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKTsKIAotICAgIHZvaWQgY2Fw
dHVyZURldmljZXNDaGFuZ2VkKCk7Ci0KICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIAogICAgIENhcHR1cmVEZXZpY2VN
YW5hZ2VyKiBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgeyBudWxscHRyIH07CiAgICAgQ2Fw
dHVyZURldmljZU1hbmFnZXIqIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIg
fTsKKworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2RldmljZUNoYW5nZWRPYnNlcnZlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9T
ZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMzJlNzBlMTZkY2EzMDZmNWZkNzkw
ZDJlMzQ1MTU3ODFmNzc3NmY0ZS4uZjYxZDhkZmFmNjIzYjY0MDBlZDg1NDdjYzc3OGQ2ZjU4ZDMz
YzkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRG
T1JNKElPUykKIAogI2luY2x1ZGUgIkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRp
b24vQVZBdWRpb1Nlc3Npb24uaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNDEsOCArMTQyLDcgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAg
bV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKTsK
ICAgICBtX2RldmljZXMgPSBXVEZNb3ZlKG5ld0RldmljZXMpOwogCi0gICAgZm9yIChhdXRvJiBv
YnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAg
IGRldmljZUNoYW5nZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBjMDExYjI2ZTY4NmIwNWMxZmEwYjY5YTBkOTFk
N2NmMGNhNjNmMzQwLi4wZWZjOTJhMGZlZTkwMmFkOTY4OWU2Y2VhY2M1NWE2NTcyZjRmYmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3OSw5ICsxNzksNyBAQCB2
b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9u
cygpCiB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCgpCiB7CiAg
ICAgcmVmcmVzaENhcHR1cmVEZXZpY2VzKCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIG9ic2VydmVyKCk7CisgICAgZGV2aWNlQ2hh
bmdlZCgpOwogfQogCiB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5l
Y3RlZChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UpCkBAIC0yMDAsOCArMTk4LDcgQEAg
dm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJl
RGV2aWNlVHlwZWRlZiogZGV2aWNlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRv
JiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOwor
ICAgIGRldmljZUNoYW5nZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTQxM2E4Zjg2
NzIyMjA0ZTRjNDJmYWU2ZWVkYjMwNmE1MmY1NTFhOC4uMTExMWVhYjAzMjBmNDFiZTE2YjMwOGZi
NzA4NDM0NDNiZWY0ZTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVE
ZXZpY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRl
IDxDb3JlTWVkaWEvQ01TeW5jLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTY0
LDEwICs2NSwxNyBAQCBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcgogc3RhdGljIGJvb2wgZGV2aWNl
SGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQpCiB7CiAgICAgVUludDMyIGRh
dGFTaXplID0gMDsKLSAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBr
QXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVhbXMsIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1
dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgQXVkaW9PYmplY3RQ
cm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNlUHJvcGVydHlTdHJlYW1Db25m
aWd1cmF0aW9uLCBrQXVkaW9EZXZpY2VQcm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFBy
b3BlcnR5RWxlbWVudE1hc3RlciB9OwogICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9w
ZXJ0eURhdGFTaXplKGRldmljZUlELCAmYWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplKTsK
IAotICAgIHJldHVybiAhZXJyICYmIGRhdGFTaXplOworICAgIGlmIChlcnIgfHwgIWRhdGFTaXpl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlckxpc3QgPSBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PigoQXVkaW9CdWZmZXJMaXN0KikgOjpvcGVyYXRvciBu
ZXcgKGRhdGFTaXplKSk7CisgICAgbWVtc2V0KGJ1ZmZlckxpc3QuZ2V0KCksIDAsIGRhdGFTaXpl
KTsKKyAgICBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZXZpY2VJRCwgJmFkZHJl
c3MsIDAsIG51bGxwdHIsICZkYXRhU2l6ZSwgYnVmZmVyTGlzdC5nZXQoKSk7CisKKyAgICByZXR1
cm4gIWVyciAmJiBidWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsKIH0KIAogc3RhdGljIGJvb2wg
aXNWYWxpZENhcHR1cmVEZXZpY2UoY29uc3QgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSYgZGV2aWNl
KQpAQCAtODEsNyArODksNyBAQCBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4mIENvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVkaW9DYXB0dXJlRAogICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlh
bGl6ZWQgPSB0cnVlOwotICAgICAgICByZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAg
ICAgICByZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyhEb05vdE5vdGlmeSk7CiAKICAgICAgICAg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9w
ZXJ0eURldmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVj
dFByb3BlcnR5RWxlbWVudE1hc3RlciB9OwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0
QWRkUHJvcGVydHlMaXN0ZW5lcihrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCBk
ZXZpY2VzQ2hhbmdlZCwgdGhpcyk7CkBAIC0xMDIsNyArMTEwLDcgQEAgc3RkOjpvcHRpb25hbDxD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29y
ZUF1ZGlvRGUKIH0KIAogCi12b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZy
ZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCit2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyhOb3RpZnlJZkRldmljZXNIYXZlQ2hhbmdl
ZCBub3RpZnkpCiB7CiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsg
a0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVH
bG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OwogICAgIFVJbnQzMiBk
YXRhU2l6ZSA9IDA7CkBAIC0xNTYsMTMgKzE2NCwxMyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fZGV2
aWNlcy5hcHBlbmQoY2FwdHVyZURldmljZSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNl
cnZlciA6IG1fb2JzZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGlm
IChub3RpZnkgPT0gTm90aWZ5KQorICAgICAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9CiAKIE9TU3Rh
dHVzIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChBdWRpb09i
amVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCog
dXNlckRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgc3RhdGlj
X2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlmeSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOGMyOGU4Mjc5ODRjYWZm
NDg2YTQ1NTQxOTA1NTEwMzc1YTQ1OTAyZC4uY2Y0ODI3NjQxNGIyNDJhYWZhNDg2ZDkyNTAzNzVj
ODgxNGNjMWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTUsNyArNTUsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2VzQ2hh
bmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRy
ZXNzKiwgdm9pZCopOwogICAgIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29yZUF1
ZGlvQ2FwdHVyZURldmljZXMoKTsKIAotICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmlj
ZXMoKTsKKyAgICBlbnVtIE5vdGlmeUlmRGV2aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05v
dE5vdGlmeSB9OworICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5SWZE
ZXZpY2VzSGF2ZUNoYW5nZWQpOwogCiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fZGV2aWNl
czsKICAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gbV9jb3JlQXVkaW9DYXB0dXJl
RGV2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMDg3NTQ5N2ExZWZhMTEwNDUzZjhlMmQ2ZTUy
M2RhYjM2MTdjOTRhZi4uZWM0NDFlZmQ3NWU5Mzg3Njc2NjU1YmQwMjVkOTM3YjUzODc3MzdhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk3LDYgKzk3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZTo6Y3JlYXRlQ2FwdHVyZURldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmlj
ZSkKIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpCiB7CiAgICAg
c2V0RGV2aWNlcyhkZWZhdWx0RGV2aWNlcygpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYm
IG5ld01vY2tEZXZpY2VzKQpAQCAtMTE1LDYgKzExNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldERldmljZXMoVmVjdG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2
aWNlCiAgICAgICAgIG1hcC5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKICAgICAg
ICAgY3JlYXRlQ2FwdHVyZURldmljZShkZXZpY2UpOwogICAgIH0KKyAgICBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAog
dm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURl
dmljZSYgZGV2aWNlKQpAQCAtMTIyLDYgKzEyNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OmFkZERldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKICAgICBkZXZp
Y2VzKCkuYXBwZW5kKGRldmljZSk7CiAgICAgZGV2aWNlTWFwKCkuc2V0KGRldmljZS5wZXJzaXN0
ZW50SWQsIGRldmljZSk7CiAgICAgY3JlYXRlQ2FwdHVyZURldmljZShkZXZpY2UpOworICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdl
ZCgpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UoY29u
c3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpCkBAIC0xNDAsNiArMTQzLDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElk
KQogICAgIH0pOwogCiAgICAgbWFwLnJlbW92ZShpdGVyYXRvcik7CisgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiB9CiAK
IHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJiBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGY5
MWViZTBmZTg1NDQxMTRhNjYyYzc2ZTQyYWZjYTdhNzAwZWRhYy4uZGI2ODgyMWUzMWQyY2UyN2Q4
YmUxOGRmZDU3ZTA2ZmUzMDU2YTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTUs
MTkgKzU1LDE2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChib29sCiB2b2lkIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzZXREZXZpY2VzKFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiYgbmV3
TW9ja0RldmljZXMpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMo
V1RGTW92ZShuZXdNb2NrRGV2aWNlcykpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGRE
ZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCiB7CiAgICAgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2U6OmFkZERldmljZShkZXZpY2UpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpyZW1vdmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpCiB7CiAgICAgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZURldmljZShwZXJzaXN0ZW50SWQpOwotICAgIHNpbmds
ZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTNiN2I3MDdlMjczOGUz
M2Y4MTBjZTQ5Y2NkNWExYWYwYmQ3Mjc0NS4uMjYzZmQ0Y2MxYWEwMzhjOGY3OGJjMTFhZDM0YjBi
MDgwMmZhMjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDMzOCw2
ICs0MzM4LDIyIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlVmlzaWJpbGl0eShib29sIGlzVmlz
aWJsZSkKICAgICBwYWdlLnNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQogCit2b2lkIEludGVy
bmFsczo6c2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShib29sIGlzRm9jdXNlZEFuZEFjdGl2ZSkK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBw
YWdlID0gKmRvY3VtZW50LT5wYWdlKCk7CisgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlT
dGF0ZSgpOworCisgICAgaWYgKGlzRm9jdXNlZEFuZEFjdGl2ZSkKKyAgICAgICAgc3RhdGUgfD0g
KEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
KTsKKyAgICBlbHNlCisgICAgICAgIHN0YXRlICY9IH4oQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOworCisgICAgcGFnZS5zZXRBY3Rpdml0
eVN0YXRlKHN0YXRlKTsKK30KKwogI2lmIEVOQUJMRShXRUJfUlRDKQogdm9pZCBJbnRlcm5hbHM6
OnNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wgYWxsb3dlZCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGQwZDI4NzljZTZmNjczNzk0NWQ1NzM3OTE0N2I2Mzc2
ZDM0NDY0NmYuLmUxMTgyZGU1NGQ4NmU1NGY5OTExMjk2Yjc2ZDNkMTUzNzEwZmQzZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNjQxLDYgKzY0MSw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgdm9pZCBzZXRQYWdlVmlzaWJpbGl0eShib29sIGlzVmlzaWJsZSk7CisgICAg
dm9pZCBzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGJvb2wpOworCiAKICNpZiBFTkFCTEUoV0VC
X1JUQykKICAgICB2b2lkIHNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wgYWxsb3dl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMDExNDhiOThkOWIwZjhi
ZmI0NTRhN2Q3NDExYTZmNmY2NGM4ODIwZi4uOTE5YmJkYWYyZDBhYTcxYWRjYTc5OTc5Y2RjOGZl
YzIwYzJlYWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjAzLDYg
KzYwMyw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtDb25kaXRpb25hbD1XRUJH
TF0gdm9pZCBmYWlsTmV4dEdQVVN0YXR1c0NoZWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dCBjb250
ZXh0KTsKIAogICAgIHZvaWQgc2V0UGFnZVZpc2liaWxpdHkoYm9vbGVhbiBpc1Zpc2libGUpOwor
ICAgIHZvaWQgc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShib29sZWFuIGlzRm9jdXNlZCk7CiAK
ICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxs
b3dlZChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB2b2lkIGFw
cGx5Um90YXRpb25Gb3JPdXRnb2luZ1ZpZGVvU291cmNlcyhSVENQZWVyQ29ubmVjdGlvbiBjb25u
ZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGE3
ODJiYWFjOWQ0NWJiM2M5ZDBiODk5MjYyMmZhYTYyNTJhYTE4NGQuLjA5ZTQ2NGZjZDcxNjBiMmVl
OGZlMmM5MzM2MjAyNmViNGIzODBkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtNDE5LDYgKzQxOSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUp
OgogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6IFsnIkVkaXRvclN0YXRlLmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVh
SW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBb
JyJTZXNzaW9uU3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6RGV2aWNlQWNjZXNzU3RhdGUn
OiBbJyJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggM2MwNzI5NWYxMDUzZmMxNWRjYzg4NDQ1NjMyOTA1
YjhjM2ZjYjk2Yi4uMDJiMmEyMzFlNjc5NjM4MmFhMWE0MDBhNDllNzgwMTRiODZlZmM0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCkBAIC03Nyw2ICs3OCwxNSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpzdG9wQ2FwdHVyZSgpCiAgICAgbV9wYWdlLnN0b3BNZWRpYUNhcHR1cmUoKTsK
IH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2FwdHVy
ZURldmljZXNDaGFuZ2VkKCkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIC8vIEZJ
WE1FOiBhIHBhZ2Ugd2l0aCBwZXJzaXN0ZW50IGFjY2VzcyBzaG91bGQgYWx3YXlzIGdldCBkZXZp
Y2UgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgYXV0byBhY2Nlc3NTdGF0ZSA9IG1fZ3JhbnRl
ZFJlcXVlc3RzLmlzRW1wdHkoKSA/IERldmljZUFjY2Vzc1N0YXRlOjpOb0FjY2VzcyA6IERldmlj
ZUFjY2Vzc1N0YXRlOjpTZXNzaW9uQWNjZXNzOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKGFjY2Vzc1N0YXRlKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyNlbmRpZgorfQorCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpjbGVhckNhY2hlZFN0YXRlKCkKIHsKICAgICBpbnZhbGlkYXRlUGVu
ZGluZ1JlcXVlc3RzKCk7CkBAIC00MzQsNyArNDQ0LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2FwdHVyZVN0YXRlQ2hhbmdlZChNZWRpYVByb2R1Y2Vy
OjoKICNlbmRpZgogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5Ojpwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OnZpZXdJc0JlY29taW5nVmlzaWJsZSgpCiB7CiAgICAgZm9y
IChhdXRvJiByZXF1ZXN0IDogbV9wcmVncmFudGVkUmVxdWVzdHMpCiAgICAgICAgIHJlcXVlc3Qt
PmFsbG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCA1NzNhZjA0ZDcx
Yjg1Mzk1NzUxMjQ5OWQ5MmM0MzA2NDhiYmQxNzlmLi44ZDNjMDk2NzNjNzBjMDg2YzBiMmI4OGVk
ZWJmNWIwNWJkYWY2ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRf
dCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0Jik7CiAKICAgICB2b2lk
IHJlc2V0QWNjZXNzKHVpbnQ2NF90IG1haW5GcmFtZUlEKTsKLSAgICB2b2lkIHByb2Nlc3NQcmVn
cmFudGVkUmVxdWVzdHMoKTsKKyAgICB2b2lkIHZpZXdJc0JlY29taW5nVmlzaWJsZSgpOwogCiAg
ICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVpbnQ2NF90LCBXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2UsIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmJiB2aWRlb0Rl
dmljZSk7CiAgICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QsIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbik7
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlTmV4dFJlamVjdGlv
bigpOwogICAgIHZvaWQgcmVqZWN0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY2xlYXJDYWNo
ZWRTdGF0ZSgpOworICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiAKICAgICB2b2lk
IGNhcHR1cmVTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzIG9sZFN0YXRlLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbmV3
U3RhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlci5jcHAKaW5kZXggN2FlNjkwOTc0NmJmZDc4OTNkMWNlOWYzMDk4ODRkZDMxNjNi
YzRjMi4uNzAyNWQ0ZDk5OTFjNTliYjkxMDAyNWEzZjQ4MGFhNTJiYjBjMzlkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTM1LDYgKzM2LDggQEAgc3RhdGljIGNvbnN0
IEFTQ0lJTGl0ZXJhbCBhdWRpb0V4dGVuc2lvblBhdGggeyAiY29tLmFwcGxlLndlYmtpdC5taWNy
b3Bob25lIl9zIH0KIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgdmlkZW9FeHRlbnNpb25QYXRo
IHsgImNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIl9zIH07CiAjZW5kaWYKIAorc3RhdGljIGNvbnN0
IFNlY29uZHMgZGV2aWNlQ2hhbmdlRGVib3VuY2VUaW1lckludGVydmFsIHsgMjAwX21zIH07CisK
IGNsYXNzIFByb2Nlc3NTdGF0ZSB7CiBwdWJsaWM6CiAgICAgUHJvY2Vzc1N0YXRlKCkgeyB9CkBA
IC0xMDEsNiArMTA0LDExIEBAIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAorVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXI6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyKCkKKyAgICA6IG1fZGVi
b3VuY2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZVc2VyTWVkaWFQcm9jZXNzTWFuYWdl
cjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKQoreworfQorCiB2b2lkIFVzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyOjphZGRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCiB7CiAgICAgcHJvY2Vzc1N0
YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpLmFkZFJlcXVlc3RNYW5hZ2VyKHByb3h5KTsKQEAg
LTI1NCw2ICsyNjIsNTggQEAgdm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2V0Q2FwdHVy
ZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAordm9pZCBVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKK3sKKyAgICBhdXRvJiBtYXAgPSBzdGF0
ZU1hcCgpOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtYXApIHsKKyAgICAgICAgYXV0byogcHJv
Y2VzcyA9IHN0YXRlLmtleTsKKyAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogc3RhdGUudmFs
dWUtPm1hbmFnZXJzKCkpIHsKKyAgICAgICAgICAgIGlmIChtYXAuZmluZChwcm9jZXNzKSA9PSBt
YXAuZW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtYW5hZ2VyLT5j
YXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlcjo6YmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKQorewor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbdGhpc10geworICAgICAgICBtX2NhcHR1cmVEZXZpY2VzID0gV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1EZXZp
Y2VzKCk7CisKKyAgICAgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkuc2V0RGV2aWNlc0NoYW5nZWRPYnNlcnZlcihbdGhpc10oKSB7CisgICAgICAgICAg
ICBhdXRvIG9sZERldmljZXMgPSBXVEZNb3ZlKG1fY2FwdHVyZURldmljZXMpOworICAgICAgICAg
ICAgbV9jYXB0dXJlRGV2aWNlcyA9IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOworCisgICAgICAgICAgICBpZiAo
bV9jYXB0dXJlRGV2aWNlcy5zaXplKCkgPT0gb2xkRGV2aWNlcy5zaXplKCkpIHsKKyAgICAgICAg
ICAgICAgICBib29sIGhhdmVDaGFuZ2VzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yIChh
dXRvICZuZXdEZXZpY2UgOiBtX2NhcHR1cmVEZXZpY2VzKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChuZXdEZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OkNhbWVyYSAmJiBuZXdEZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIGluZGV4ID0gb2xkRGV2aWNlcy5maW5kTWF0
Y2hpbmcoWyZuZXdEZXZpY2VdIChhdXRvJiBvbGREZXZpY2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXdEZXZpY2UucGVyc2lzdGVudElkKCkgPT0gb2xkRGV2aWNlLnBlcnNp
c3RlbnRJZCgpICYmIG5ld0RldmljZS5lbmFibGVkKCkgIT0gb2xkRGV2aWNlLmVuYWJsZWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlQ2hhbmdlcyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaGF2ZUNoYW5nZXMp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gV2hlbiBhIGRldmljZSB3aXRoIGNhbWVyYSBhbmQgbWljcm9waG9uZSBpcyBhdHRhY2hl
ZCBvciBkZXRhY2hlZCwgdGhlIENhcHR1cmVEZXZpY2Ugbm90aWZpY2F0aW9uIGZvcgorICAgICAg
ICAgICAgLy8gdGhlIGRpZmZlcmVudCBkZXZpY2VzIHdvbid0IGFycml2ZSBhdCB0aGUgc2FtZSB0
aW1lIHNvIGRlbGF5IGEgYml0IHNvIHdlIGNhbiBjb2FsZXNjZSB0aGUgY2FsbGJhY2tzLgorICAg
ICAgICAgICAgaWYgKCFtX2RlYm91bmNlVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAg
ICBtX2RlYm91bmNlVGltZXIuc3RhcnRPbmVTaG90KGRldmljZUNoYW5nZURlYm91bmNlVGltZXJJ
bnRlcnZhbCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuaAppbmRleCA4MTk5OGI0YWNiN2RkZjkxZDUwYTgzYzc5ZDJlNWNhYzNkMTg3
NDczLi5hZTE2ZWJlZDg1ZDgwYmZkY2FjMDVlYzZiODBjNzY0M2I4ZWY1MjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDYgKzIxLDggQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzEs
NiArMzMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIm
IHNpbmdsZXRvbigpOwogCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIoKTsKKwogICAgIHZv
aWQgYWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5Jik7CiAKQEAgLTQ1LDcgKzQ5LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVu
eU5leHRVc2VyTWVkaWFSZXF1ZXN0KCkgeyBtX2RlbnlOZXh0UmVxdWVzdCA9IHRydWU7IH0KIAor
ICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKKwogcHJpdmF0ZToKKyAg
ICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U+IG1fY2FwdHVyZURldmljZXM7CisgICAgUnVuTG9vcDo6VGltZXI8VXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXI+IG1fZGVib3VuY2VUaW1lcjsKICAgICBib29sIG1fY2FwdHVyZUVu
YWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2RlbnlOZXh0UmVxdWVzdCB7IGZhbHNlIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMmRjMGYzMzg4
NWI2OTA1ODRmNDcxMTdlNjlkZWVlZjI4YzAyMmE0Ny4uOTVmYmMxMjBkZDgwYjQxMzA3ZWU3Mjg0
ZGI4MmQyOWMyYzZhODFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zODkwLDcgKzM4OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFp
bkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0lzQmVj
b21pbmdWaXNpYmxlKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnByb2Nlc3NQcmVncmFudGVkUmVxdWVzdHMoKTsK
KyAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS52aWV3SXNCZWNvbWluZ1Zp
c2libGUoKTsKICNlbmRpZgogfQogCkBAIC02NTI0LDYgKzY1MjQsMTMgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCB1aW50NjRfdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpiZWdpbk1vbml0b3Jp
bmdDYXB0dXJlRGV2aWNlcygpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURl
dmljZXMoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJVc2VyTWVkaWFT
dGF0ZSgpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNmE1YjI1OWZjYWVhNmQ4OTI4ZjA5ODg5Yzc5ODA0NWViMTBk
ODgxNS4uMTg1ZWNmMDE3OTM4Y2E1NDViMTdiMDNiZmNhN2I5ZGI4ZmFhMDQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0OTEsNiArMTQ5MSw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
dWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmKTsKICAgICB2b2lkIGVu
dW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luRGF0YSk7CisgICAgdm9pZCBiZWdpbk1vbml0b3JpbmdDYXB0dXJl
RGV2aWNlcygpOwogCiAgICAgdm9pZCBydW5Nb2RhbCgpOwogICAgIHZvaWQgbm90aWZ5U2Nyb2xs
ZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjMx
ZjVmMGJlMzRjYzk0ODkyN2E5YjEzNmQwY2MzMmM1MWJjOWMyYS4uNmQyOWE5ZmQyZTQ2M2RmOWEw
ZjA2ZTAzNDdmYWM2NDUxYjVjMDg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjg3LDYgKzI4Nyw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBNZWRpYVN0ZWFtIG1lc3NhZ2VzCiAgICAgUmVxdWVzdFVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVJlcXVlc3QgcmVxdWVzdCkKICAgICBFbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1
aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50
aWZpZXIpCisgICAgQmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKQogI2VuZGlmCiAKICAg
ICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzgzM2MxZmVlNWIzMzNhNmE1N2ExZjIxMzk0Njk3
NTMwOTYwNTc1NC4uMzY2MjE5MDAyYjExZTExYjBkZTMzN2VkOGE4NWZlN2VmODkwOTMzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03
NCw2ICs3NCw3IEBACiAJCTA3NEU3NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgg
Ki87IH07CiAJCTA3NEU3NjAyMURGNzA3QkUwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NEU3NjAwMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zLmNwcCAqLzsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRN
ZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsg
fTsKKwkJMDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEE0MTBGNDMxOUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oICovOyB9OwogCQkwN0E1RUJCQjFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhh
bmRsZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi87IH07
CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCQTFDN0JBNDNF
MDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAwRTkwMDQwMEJGNjY0MyAvKiBTYWZl
QnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLzsgfTsK
QEAgLTk0MjAsNiArOTQyMSw3IEBACiAJCQkJQ0Q0OTFCMTMxRTczNDgyMTAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjE4
MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc3MjgxMUQyMTIz
NEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTNDQzE4RDE5
QjA2NDE5MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggOWNjYWNlMDU3N2M3ZmJjOGZmNTcwNmJkZmFkOTNl
NDM3Y2M2ZTFmMy4uNWJiNGU4NWJiNjAwYTg0YTVmOThhNjliMjAwZTc3N2NkYWRiY2MyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBmb2N1c2VkQWN0aXZlV2luZG93ID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1
c2VkIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisKIHN0YXRpYyB1
aW50NjRfdCBnZW5lcmF0ZVJlcXVlc3RJRCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1
ZVJlcXVlc3RJRCA9IDE7CkBAIC01Myw2ICs1NSw4IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmIHBh
CiAKIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpCiB7CisgICAgaWYgKG1fbW9uaXRvcmluZ0FjdGl2aXR5U3RhdGVD
aGFuZ2UpCisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5yZW1vdmVBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIoKnRoaXMpOwogICAgIGZvciAoYXV0byYgc2FuZGJveEV4dGVuc2lvbiA6IG1f
dXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpCiAgICAgICAgIHNhbmRib3hFeHRlbnNp
b24udmFsdWUtPnJldm9rZSgpOwogfQpAQCAtMjIyLDYgKzIyNiw3NyBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMoYwogICAgIH0KIH0KIAorVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNl
cnZlclRva2VuIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRkRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCit7CisgICAgYXV0
byBpZGVudGlmaWVyID0gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlVzZXJNZWRp
YUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGU+KCk7CisgICAgbV9kZXZpY2VD
aGFuZ2VPYnNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShvYnNlcnZlcikpOworCisg
ICAgaWYgKCFtX21vbml0b3JpbmdEZXZpY2VDaGFuZ2UpIHsKKyAgICAgICAgbV9tb25pdG9yaW5n
RGV2aWNlQ2hhbmdlID0gdHJ1ZTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKSk7CisgICAgfQorICAgIHJl
dHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VD
aGFuZ2VPYnNlcnZlclRva2VuIHRva2VuKQoreworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fZGV2
aWNlQ2hhbmdlT2JzZXJ2ZXJNYXAucmVtb3ZlKHRva2VuKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdh
c1JlbW92ZWQsIHdhc1JlbW92ZWQpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlIGFjY2Vz
c1N0YXRlKQoreworICAgIC8vIFdoZW4gbmV3IG1lZGlhIGlucHV0IGFuZC9vciBvdXRwdXQgZGV2
aWNlcyBhcmUgbWFkZSBhdmFpbGFibGUsIG9yIGFueSBhdmFpbGFibGUgaW5wdXQgYW5kL29yCisg
ICAgLy8gb3V0cHV0IGRldmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlLCB0aGUgVXNlciBBZ2VudCBN
VVNUIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIGJyb3dzaW5nCisgICAgLy8gY29udGV4dHMg
d2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEgYXJlIG1ldCwgYnV0
IGluIG5vIG90aGVyIGNvbnRleHRzOgorCisgICAgLy8gKiBUaGUgcGVybWlzc2lvbiBzdGF0ZSBv
ZiB0aGUgImRldmljZS1pbmZvIiBwZXJtaXNzaW9uIGlzICJncmFudGVkIiwKKyAgICAvLyAqIGFu
eSBvZiB0aGUgaW5wdXQgZGV2aWNlcyBhcmUgYXR0YWNoZWQgdG8gYW4gYWN0aXZlIE1lZGlhU3Ry
ZWFtIGluIHRoZSBicm93c2luZyBjb250ZXh0LCBvcgorICAgIC8vICogdGhlIGFjdGl2ZSBkb2N1
bWVudCBpcyBmdWxseSBhY3RpdmUgYW5kIGhhcyBmb2N1cy4KKworICAgIGJvb2wgaXNBY3RpdmUg
PSAobV9wYWdlLmNvcmVQYWdlKCktPmFjdGl2aXR5U3RhdGUoKSAmIGZvY3VzZWRBY3RpdmVXaW5k
b3cpID09IGZvY3VzZWRBY3RpdmVXaW5kb3c7CisgICAgaWYgKCFpc0FjdGl2ZSAmJiBhY2Nlc3NT
dGF0ZSA9PSBEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nlc3MpIHsKKyAgICAgICAgaWYgKCFpc0Fj
dGl2ZSkgeworICAgICAgICAgICAgaWYgKCFtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdl
KSB7CisgICAgICAgICAgICAgICAgbV9tb25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNoYW5nZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmFkZEFjdGl2aXR5U3RhdGVD
aGFuZ2VPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3BlbmRp
bmdEZXZpY2VDaGFuZ2VFdmVudCA9IHRydWU7CisgICAgICAgICAgICBtX2FjY2Vzc1N0YXRlV2hl
bkRldmljZXNDaGFuZ2VkID0gYWNjZXNzU3RhdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllcnMgPSBtX2RldmljZUNoYW5nZU9ic2VydmVy
TWFwLmtleXMoKTsKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykgewor
ICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5maW5kKGlk
ZW50aWZpZXIpOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZl
ck1hcC5lbmQoKSkKKyAgICAgICAgICAgIChpdGVyYXRvci0+dmFsdWUpKCk7CisgICAgfQorfQor
Cit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRlKQoreworICAgIGlm
ICgobmV3QWN0aXZpdHlTdGF0ZSAmIGZvY3VzZWRBY3RpdmVXaW5kb3cpICE9IGZvY3VzZWRBY3Rp
dmVXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIW1fbW9uaXRvcmluZ0FjdGl2aXR5U3RhdGVDaGFuZ2UpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9tb25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNo
YW5nZSA9IGZhbHNlOworICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+cmVtb3ZlQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyKCp0aGlzKTsKKyAgICB9KTsKKworICAgIGlmICghbV9wZW5kaW5n
RGV2aWNlQ2hhbmdlRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGVuZGluZ0Rldmlj
ZUNoYW5nZUV2ZW50ID0gZmFsc2U7CisgICAgYXV0byBhY2Nlc3NTdGF0ZSA9IG1fYWNjZXNzU3Rh
dGVXaGVuRGV2aWNlc0NoYW5nZWQ7CisgICAgbV9hY2Nlc3NTdGF0ZVdoZW5EZXZpY2VzQ2hhbmdl
ZCA9IERldmljZUFjY2Vzc1N0YXRlOjpOb0FjY2VzczsKKyAgICBjYXB0dXJlRGV2aWNlc0NoYW5n
ZWQoYWNjZXNzU3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgKaW5kZXggYTdlZmM4YWRlYWFlZTUwOTA1YWM0MGE3ODUyNTVlOGY2ZjhiNDE0
MC4uODI0ZjdkM2Y5ZDg3Y2U0ZGZmYzZlNWJjZWQyMTgyZmEwYTY5MDFlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNh
blN0YXJ0TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdC5oPgpAQCAt
MzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xh
c3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyCi0gICAgOiBwcml2YXRlIFdlYkNv
cmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CitlbnVtIGNsYXNzIERldmljZUFjY2Vzc1N0YXRl
IHsgTm9BY2Nlc3MsIFNlc3Npb25BY2Nlc3MsIFBlcnNpc3RlbnRBY2Nlc3MgfTsKKworY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6TWVk
aWFDYW5TdGFydExpc3RlbmVyLCBwcml2YXRlIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKFdlYlBhZ2UmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCk7CkBAIC01NSwxMSArNTcsMTkgQEAgcHVibGljOgogICAgIHZvaWQgZ3JhbnRVc2VyTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYp
OwogICAgIHZvaWQgcmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKIAorICAgIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudDo6RGV2aWNl
Q2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJik7CisgICAgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcihXZWJDb3Jl
OjpVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4pOworCisgICAgdm9p
ZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoRGV2aWNlQWNjZXNzU3RhdGUpOworCiBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYp
OwogCiAgICAgLy8gV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVyCi0gICAgdm9pZCBtZWRp
YUNhblN0YXJ0KFdlYkNvcmU6OkRvY3VtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYUNh
blN0YXJ0KFdlYkNvcmU6OkRvY3VtZW50JikgZmluYWw7CisKKyAgICAvLyBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkgZmluYWw7CiAKICAgICB2b2lk
IHJlbW92ZU1lZGlhUmVxdWVzdEZyb21NYXBzKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsK
IApAQCAtNzMsMTAgKzgzLDI5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29y
ZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0PiwgdWludDY0X3Q+IG1fbWVkaWFEZXZp
Y2VzRW51bWVyYXRpb25SZXF1ZXN0VG9JRE1hcDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7
CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXJUb2tlbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX2RldmljZUNoYW5nZU9ic2VydmVy
TWFwOworICAgIERldmljZUFjY2Vzc1N0YXRlIG1fYWNjZXNzU3RhdGVXaGVuRGV2aWNlc0NoYW5n
ZWQgeyBEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nlc3MgfTsKKyAgICBib29sIG1fbW9uaXRvcmlu
Z0RldmljZUNoYW5nZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdEZXZpY2VDaGFuZ2VF
dmVudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdl
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkRldmljZUFjY2Vzc1N0
YXRlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpE
ZXZpY2VBY2Nlc3NTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9B
Y2Nlc3MsCisgICAgICAgIFdlYktpdDo6RGV2aWNlQWNjZXNzU3RhdGU6OlNlc3Npb25BY2Nlc3Ms
CisgICAgICAgIFdlYktpdDo6RGV2aWNlQWNjZXNzU3RhdGU6OlBlcnNpc3RlbnRBY2Nlc3MKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCiAjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKaW5kZXggNmY2MDU3NDJlZWMzMDQyMDJhNjQwNGI1
MzViY2E3YzU1NTliNGZkMS4uMGIwNmQ2MzkyOTlkYjU0Zjc0YzhhMDI2ZDAyM2EwNjk5NzBkMGVl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlVzZXJNZWRpYUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NjIsNiArNjIsMTYgQEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbE1lZGlhRGV2aWNl
c0VudW1lcmF0aW9uUmVxdWVzdChNZWRpYURldmljZXNFbnVtZXIKICAgICBtX3BhZ2UudXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRp
b24ocmVxdWVzdCk7CiB9CiAKK1dlYlVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2
ZXJUb2tlbiBXZWJVc2VyTWVkaWFDbGllbnQ6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQoreworICAgIHJldHVybiBtX3BhZ2UudXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RG
TW92ZShvYnNlcnZlcikpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVtb3ZlRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiB0b2tlbikKK3sKKyAg
ICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVtb3ZlRGV2aWNl
Q2hhbmdlT2JzZXJ2ZXIodG9rZW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNl
bmRpZiAvLyBNRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAppbmRleCBhNmUzMTMy
NjJkNWJhN2M0YmFmNDNiZDMwNGYzZDg2OTgwOTRmMzZjLi4xMDkzMDQ1M2NlNzk3ZWRkOTBkZTc2
ZjAzNTRiOWExZDQwNmYyZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTQyLDYgKzQyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudW1lcmF0ZU1l
ZGlhRGV2aWNlcyhXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdChXZWJDb3Jl
OjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKSBmaW5hbDsKIAorICAgIERldmljZUNo
YW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbikgZmluYWw7CisKICAgICB2b2lkIGluaXRpYWxpemVGYWN0
b3JpZXMoKTsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTExNDNhMzJkYjQwOTllNmZmZjVhNThjMDRi
NWEwZjc3ODQ3NzhlMi4uYTQxZWQwZTMwYTM0YjZhZGMxNGJkMjllZThlNWRiMmUzNjA0YjUzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3
NTcsNiArMzc1NywxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVt
ZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdAogewogICAgIG1fdXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5kaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVy
YXRpb24odXNlck1lZGlhSUQsIGRldmljZXMsIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hT
YWx0KSwgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vzcyk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6Y2Fw
dHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlIGFjY2Vzc1N0YXRlKQoreworICAg
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5n
ZWQoYWNjZXNzU3RhdGUpOworfQorCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKIHZv
aWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zJiYgZXh0ZW5zaW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0MDhhZGRkMDhlM2MyOTgyOTYyNTI3NDc4
OWM5ZWI1OTExNzE0NTFlLi43MTM2YzExNjhjZTEzZTI1YWQzNjVmMDM3ZjQ2YjhiNzBkM2YzZTVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMjgs
NiArMjI4LDcgQEAgY2xhc3MgV2ViVG91Y2hFdmVudDsKIGNsYXNzIFdlYkNyZWRlbnRpYWxzTWVz
c2VuZ2VyOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKK2VudW0gY2xhc3Mg
RGV2aWNlQWNjZXNzU3RhdGU7CiBlbnVtIEZpbmRPcHRpb25zIDogdWludDE2X3Q7CiBlbnVtIGNs
YXNzIERyYWdDb250cm9sbGVyQWN0aW9uOwogCkBAIC01NjUsNiArNTY2LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyJiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiAqbV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICAgICB2b2lkIHByZXBhcmVUb1Nl
bmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgpOworICAgIHZvaWQgY2FwdHVyZURldmljZXND
aGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbGVtZW50RGlk
Rm9jdXMoV2ViQ29yZTo6Tm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMWM0NGQ3N2U2NTI0ZDYzNjYyM2U0
MjQ2ZjI1NmE1NzE2YjFjMDM3OS4uY2QzYTVmODMwZmRkNmVmYTU1MGI2OTI0MTdkMTZlMDQwNzgz
YTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC0zMTksNiArMzE5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgVXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1aW50NjRfdCB1
c2VyTWVkaWFJRCwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSBhdWRpb0RldmljZSwgV2ViQ29yZTo6
Q2FwdHVyZURldmljZSB2aWRlb0RldmljZSwgU3RyaW5nIG1lZGlhRGV2aWNlSWRlbnRpZmllckhh
c2hTYWx0KQogICAgIFVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgdWludDY0X3QgcmVhc29uLCBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnQpCiAgICAgRGlkQ29t
cGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBWZWN0b3I8
V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNlcywgU3RyaW5nIG1lZGlhRGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0LCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpCisgICAgQ2FwdHVyZURldmlj
ZXNDaGFuZ2VkKGVudW0gV2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZSBhY2Nlc3NTdGF0ZSkKICNp
ZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIEdyYW50VXNlck1lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zIHNhbmRi
b3hFeHRlbnNpb25zKQogICAgIFJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
KFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNpb25JRHMpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmZmODgyNjc4MzVk
OWRlYmFlYjhjMmZiMWIzMDM1N2RhMzA3OWQ3NS4uYmU0YTAzMzY4ZDE2NDIwZGFjZWM4MjgyNGQz
ZjQ1NmQyZmUzMmJhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA4LTE1ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
TW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0
ZWQudHh0OiBVcGRhdGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5n
ZS1ldmVudC0yLmh0bWw6IFVwZGF0ZWQuCisKIDIwMTgtMDgtMTUgIFBlciBBcm5lIFZvbGxhbiAg
PHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IGVkaXRpbmcvaW5wdXQv
cHJlc3MtdGFiLWR1cmluZy1pbWUtY29tcG9zaXRpb24uaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2Ut
ZXZlbnQtMi1leHBlY3RlZC50eHQKaW5kZXggNjRjNmI2MTA3NmZhYWEzZGU0ZjgxNjhmNzk2OWNm
MTBmNjA3YTY5ZC4uOGRjZjUyNmZkNjAyNDU1NDY3MDFiNjdhNmZlOWIyYzkwZTg3NTBiZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50
LTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNl
LWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDYgQEAKIAogUEFTUyAnZGV2
aWNlY2hhbmdlJyBldmVudCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNoYW5nZXMgCitQQVNTICdk
ZXZpY2VjaGFuZ2UnIGV2ZW50cyBmaXJlZCBxdWlja2x5IGFyZSBjb2FsZXNjZWQgCitQQVNTICdk
ZXZpY2VjaGFuZ2UnIGV2ZW50IGlzIG5vdCBmaXJlZCB3aGVuIHRoZSBkb2N1bWVudCBkb2Vzbid0
IGhhcyBmb2N1cyBvciBwZXJtaXNzaW9uIHRvIGNhcHR1cmUgCitQQVNTICdkZXZpY2VjaGFuZ2Un
IGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIGRvY3VtZW50IGRvZXNuJ3QgaGFzIGZvY3VzIGJ1dCBo
YXMgcGVybWlzc2lvbiB0byBjYXB0dXJlIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbAppbmRleCA0M2Q1ZjJiZGZl
ZGQ5MWVjYmQyM2ZjNzFiODM1NzFlMDcwN2IyNTViLi42MTRiOGQxMTA5ZGM3OTAyOTliZGJiNzA4
YmVjZjZhYjQ3OTM5YWE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKQEAgLTYsMTYgKzYsMjUgQEAKICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0PgotICAgIGxldCBkZXZpY2VJZHMgPSBbXTsKLSAgICBwcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgc3RyZWFtID0gbnVsbDsKKyAgICAKKyAg
ICBsZXQgc2V0dXAgPSBhc3luYyAodGVzdCkgPT4gewogICAgICAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKQogICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJ0ZXN0IHJlcXVpcmVz
IGludGVybmFsIEFQSSIpOwogCiAgICAgICAgIHRlc3QuYWRkX2NsZWFudXAoKCkgPT4geyB0ZXN0
UnVubmVyLnJlc2V0TW9ja01lZGlhRGV2aWNlcygpOyB9KTsKIAogICAgICAgICB0ZXN0UnVubmVy
LnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisgICAgICAgIAorICAgICAgICBzdHJlYW0g
PSBudWxsOworICAgIH0KKworICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAg
IAorICAgICAgICBhd2FpdCBzZXR1cCh0ZXN0KTsKIAotICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOnRydWUsIHZpZGVvOnRydWUgfSk7Cisg
ICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86
dHJ1ZSwgdmlkZW86dHJ1ZSB9KQorICAgICAgICAgICAgLnRoZW4ocyA9PiBzdHJlYW0gPSBzKQog
CiAgICAgICAgIGxldCBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVt
ZXJhdGVEZXZpY2VzKCk7CiAKQEAgLTI5LDcgKzM4LDcgQEAKICAgICAgICAgYXdhaXQgbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IHJlc29sdmU7CiAgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiZXZlbnQgMSB0YWtpbmcgYSBs
b25nIHRpbWUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiZXZlbnQgMSB0b29rIHRv
byBsb25nIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSwgNTAw
MCk7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tDYW1lcmFEZXZpY2UoImlkMSIsICJt
eSBjYW1lcmEiKTsKQEAgLTQxLDcgKzUwLDcgQEAKICAgICAgICAgYXdhaXQgbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5vbmRldmljZWNoYW5nZSA9IHJlc29sdmU7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiZXZlbnQgMiB0YWtpbmcgYSBsb25nIHRp
bWUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiZXZlbnQgMiB0b29rIHRvbyBsb25n
Iik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSwgNTAwMCk7CiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDIiLCAibXkg
bWljIik7CkBAIC01MSw2ICs2MCwxMDIgQEAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2Vz
WzBdLmxhYmVsLCAibXkgbWljIik7CiAKICAgICB9LCAiJ2RldmljZWNoYW5nZScgZXZlbnQgZmly
ZWQgd2hlbiBkZXZpY2UgbGlzdCBjaGFuZ2VzIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKworICAgICAgICBhd2FpdCBzZXR1cCh0ZXN0KTsKKworICAgICAgICBsZXQg
ZXZlbnRDb3VudCA9IDA7CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFu
Z2UgPSAoZXZ0KSA9PiB7CisgICAgICAgICAgICAgICAgKytldmVudENvdW50OworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICAgICAgfSwgNTAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIm5hdmlnYXRv
ci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgdG9vayB0b28gbG9uZyIpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0sIDQwMDApOworCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDQiLCAibWljcm9waG9uZSAzIik7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tNaWNyb3Bob25lRGV2aWNlKCJpZDUiLCAi
bWljcm9waG9uZSA0Iik7CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50
Q291bnQsIDEsICJvbmUgZXZlbnQgZmlyZWQiKTsKKworICAgIH0sICInZGV2aWNlY2hhbmdlJyBl
dmVudHMgZmlyZWQgcXVpY2tseSBhcmUgY29hbGVzY2VkIik7CisKKworICAgIHByb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworCisgICAgICAgIGF3YWl0IHNldHVwKHRlc3QpOworCisgICAg
ICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAg
IGxldCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5sb2coIndpbmRvdy5vbmJsdXIgdG9vayB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgIH0sIDUwMDApOworCisgICAgICAgICAgICB3aW5kb3cub25i
bHVyID0gKCkgPT4geworICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUoZmFsc2UpOworICAgICAg
ICB9KTsKKworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZG9jdW1lbnQuaGFzRm9jdXMoKSwgImRvY3VtZW50
Lmhhc0ZvY3VzKCkiKTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRl
dmljZWNoYW5nZSA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC5oYXNGb2N1cygpLCAiZGV2aWNlY2hhbmdlIHNob3VsZCBvbmx5IGZpcmUgd2hlbiB0aGUgZG9j
dW1lbnQgaXMgZm9jdXNlZCBhbmQgYWN0aXZlIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAg
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUodHJ1ZSk7Cisg
ICAgICAgICAgICB9LCAyMDApOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tNaWNy
b3Bob25lRGV2aWNlKCJpZDMiLCAibWljcm9waG9uZSAyIik7CisgICAgICAgIH0pOworCisgICAg
fSwgIidkZXZpY2VjaGFuZ2UnIGV2ZW50IGlzIG5vdCBmaXJlZCB3aGVuIHRoZSBkb2N1bWVudCBk
b2Vzbid0IGhhcyBmb2N1cyBvciBwZXJtaXNzaW9uIHRvIGNhcHR1cmUiKTsKKworICAgIHByb21p
c2VfdGVzdChhc3luYyAodGVzdCkgPT4geworCisgICAgICAgIGF3YWl0IHNldHVwKHRlc3QpOwor
CisgICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVk
aW86dHJ1ZSwgdmlkZW86dHJ1ZSB9KQorICAgICAgICAgICAgLnRoZW4ocyA9PiBzdHJlYW0gPSBz
KTsKKworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgICAgICBsZXQgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJ3aW5kb3cub25ibHVyIHRvb2sgdG9vIGxvbmciKTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9LCA1MDAwKTsKKworICAgICAgICAgICAg
d2luZG93Lm9uYmx1ciA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGlt
ZW91dCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgICAgIGludGVybmFscy5zZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGZhbHNl
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRvY3VtZW50Lmhhc0ZvY3VzKCks
ICJkb2N1bWVudC5oYXNGb2N1cygpIik7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURl
dmljZXMub25kZXZpY2VjaGFuZ2UgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKGRvY3VtZW50Lmhhc0ZvY3VzKCksICJkZXZpY2VjaGFuZ2Ugc2hvdWxkIGZpcmUgd2hlbiB0
aGUgZG9jdW1lbnQgaXMgbm90IGZvY3VzZWQgYnV0IGNhbiBjYXB0dXJlIik7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQzIiwgIm1pY3JvcGhvbmUgMiIpOworICAgICAg
ICB9KTsKKworICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBk
b2N1bWVudCBkb2Vzbid0IGhhcyBmb2N1cyBidXQgaGFzIHBlcm1pc3Npb24gdG8gY2FwdHVyZSIp
OworCiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347382</attachid>
            <date>2018-08-17 12:39:46 -0700</date>
            <delta_ts>2018-08-17 14:31:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-188521-20180817123945.patch</filename>
            <type>text/plain</type>
            <size>73378</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiNzdjOGYzMTVjYTAy
MmRmNzIyNDlkNTE3ODRkZjdjYjdmZmU2Ni4uMGM5ZGNhYjU3OGM1YjA1NDk3MDE3NGZjNmExMmRl
NmNlODM3NzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE4LTA4LTE3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdXBkYXRlZCBmYXN0L21lZGlhc3RyZWFtL2Rldmlj
ZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGZvciB0aGUgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlczo6TWVkaWFEZXZpY2VzKTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBhZGRlZCBp
biBhZGRFdmVudExpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzdG9w
KTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBvbiB0aGUgdXNlciBtZWRpYSBjb250cm9sbGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKTogQWRk
IHRoZSBkZXZpY2UgY2hhbmdlIGxpc3RlbmVyIG9ubHkgb25jZSB0aGUgZmlyc3QKKyAgICAgICAg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5oOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNo
YW5nZU9ic2VydmVyKTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcik6IERp
dHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNoYW5nZWQpOiBO
b3RpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci4KKyAgICAgICAgKG5leHRPYnNlcnZlclRv
a2VuKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpyZW1vdmVDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpvYnNl
cnZlck1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjphZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMpOiBDYWxsIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKTogRGl0
dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlSGFzSW5wdXRTdHJl
YW1zKTogRHJpdmUtYnkgZml4LCBjaGVjayB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gc2VlIGlm
IHRoZQorICAgICAgICBkZXZpY2UgaGFzIGlucHV0IHN0cmVhbXMuCisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvQ2FwdHVyZURldmljZXMp
OiBVc2UgbmV3IGJvb2wgcGFyYW1ldGVyCisgICAgICAgIGFkZGVkIHRvIHJlZnJlc2hBdWRpb0Nh
cHR1cmVEZXZpY2VzIHNvIHdlIHdvbid0IHRyaWdnZXIgYSBkZXZpY2UgY2hhbmdlIGV2ZW50IG9u
IHRoZSBmaXJzdCBzY2FuLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKTogQWRkIHBhcmFtLgorICAgICAg
ICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2Vk
KTogVXNlIG5ldyBwYXJhbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMpOiBEb24ndCBuZWVkIHRvIGNh
bGwgY2FwdHVyZURldmljZXNDaGFuZ2VkLAorICAgICAgICBpdCBpcyBkb25lIGluIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OmFkZERldmljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnJlbW92ZURldmljZSk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOiBOZXcsIHVzZWQgYnkgdXBkYXRlZCB0ZXN0Lgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorCiAyMDE4LTA4LTE3ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+IGFuZCBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtKU0NdIEFkZCBHUFJSZWc6OkludmFsaWRHUFJSZWcgYW5kIEZQUlJlZzo6SW52
YWxpZEZQUlJlZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYzkzNmMzOWU4ZDNhNjcxMzk4YWRjODBlZGY3MzFhOGNi
MTk3NmY1Li5hZTI2Y2MxYzA5NzJhYWY0MWRjNmViOTRlN2RlOTljNGJiMzVkNzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTA4LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmlj
ZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzI1MTc4Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCk6IE5vdGlmeSBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnZpZXdJc0JlY29taW5nVmlz
aWJsZSk6IENoYW5nZSBuYW1lIGZyb20KKyAgICAgICAgdmlld0lzQmVjb21pbmdWaXNpYmxlLiBD
YWxsIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCBpZiBhIGNoYW5nZSBoYXBwZW5lZCB3aGVuIG5vdCB2
aXNpYmxlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6d2F0Y2hkb2dUaW1lckZpcmVkKTogQ2xlYXIgbV9wZW5kaW5nRGV2aWNlQ2hhbmdl
RXZlbnQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Ojpwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcik6
IEluaXRpYWxpemUgdGltZXIuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOiBOZXcsIG5vdGlmeSBlYWNoIG1hbmFnZXIuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpiZWdpbk1vbml0b3JpbmdD
YXB0dXJlRGV2aWNlcyk6IENhY2hlIHRoZSBkZXZpY2UgbGlzdCBhbmQgCisgICAgICAgIHJlZ2lz
dGVyIGRldmljZSBjaGFuZ2UgbGlzdGVuZXIgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBBZGQgbGlzdGVu
ZXIsIHRlbGwgcGFnZQorICAgICAgICB0byBzdGFydCBtb25pdG9yaW5nIGRldmljZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJl
bW92ZURldmljZUNoYW5nZU9ic2VydmVyKTogUmVtb3ZlIGxpc3RlbmVyLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCk6IENhbGwgbGlzdGVuZXJzLgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRNb2NrTWVkaWFEZXZpY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhck1vY2tNZWRpYURldmljZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDE4LTA4LTE3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyB3ZWJQYWdlSUQgYW5kIHdl
YkZyYW1lSUQgdG8gTmV0d29ya0xvYWQgZm9yIHNwZWN1bGF0aXZlIGxvYWRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXgg
YmU5MDUxYzkzOTk0ZDViYmMxMGEwZDhhYTY5NDE5YjE3MTRhZWVhYi4uNmU1YTlhYTdmZWM1MDRk
Y2RmZTYxYjQ0MzU3YTQ1MWM3ZWRmNTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJN
ZWRpYVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKQEAgLTUxLDE3
ICs1Miw2IEBAIGlubGluZSBNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZNZWRpYURldmljZXM6
OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fZXZlbnROYW1lcyhldmVudE5hbWVz
KCkpCiB7Ci0gICAgbV9kZXZpY2VDaGFuZ2VkVG9rZW4gPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5hZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oKSB7Ci0KLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9ubHkgZGlz
cGF0Y2ggYW4gZXZlbnQgaWYgdGhlIHVzZXIgaGFzIGJlZW4gZ3JhbnRlZCBhY2Nlc3MgdG8gdGhl
IHR5cGUgb2YKLSAgICAgICAgLy8gZGV2aWNlIHRoYXQgd2FzIGFkZGVkIG9yIHJlbW92ZWQuCi0g
ICAgICAgIGlmICghbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMocmFuZG9tTnVtYmVy
KCkgLyAyKSk7Ci0gICAgfSk7Ci0KICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJl
U3VyZmFjZVR5cGU6Ok1vbml0b3IpID09IHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3IpLCAiTWVkaWFEZXZp
Y2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpNb25pdG9yIGlzIG5vdCBlcXVhbCB0byBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciBh
cyBleHBlY3RlZCIpOwpAQCAtNzQsOCArNjQsMTIgQEAgTWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZp
Y2VzKCkgPSBkZWZhdWx0OwogCiB2b2lkIE1lZGlhRGV2aWNlczo6c3RvcCgpCiB7Ci0gICAgaWYg
KG1fZGV2aWNlQ2hhbmdlZFRva2VuKQotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5yZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKG1fZGV2aWNlQ2hhbmdl
ZFRva2VuKTsKKyAgICBpZiAobV9kZXZpY2VDaGFuZ2VUb2tlbikgeworICAgICAgICBhdXRvKiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBk
b2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBu
dWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQgJiYgY29udHJvbGxlcikKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKG1fZGV2aWNlQ2hhbmdlVG9r
ZW4pOworICAgIH0KIH0KIAogUmVmPE1lZGlhRGV2aWNlcz4gTWVkaWFEZXZpY2VzOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTgxLDYgKzE3NSwyNyBAQCBib29sIE1lZGlhRGV2aWNl
czo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgTWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFtX2xpc3Rlbmlu
Z0ZvckRldmljZUNoYW5nZXMgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFu
Z2VFdmVudCkgeworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBkb2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6
OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBudWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQg
JiYgY29udHJvbGxlcikgeworICAgICAgICAgICAgbV9saXN0ZW5pbmdGb3JEZXZpY2VDaGFuZ2Vz
ID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9kZXZpY2VDaGFuZ2VUb2tlbiA9IGNvbnRyb2xsZXIt
PmFkZERldmljZUNoYW5nZU9ic2VydmVyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
dGhpc10oKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IG1fc2NoZWR1bGVk
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMo
cmFuZG9tTnVtYmVyKCkgLyAyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggMDJk
MWFlZjlkNmYzMTc4NjdhOTdmMTk1YmU5MDYxNDg1OTU0OWNmNS4uMDcyYmExNWQ0OTZlM2E2Yjg3
MmYxMDlhOTYzNTgyZDJmMjAwZDk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDExICs0MSwxMSBAQAogI2luY2x1ZGUgIk1l
ZGlhVHJhY2tDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBNZWRpYURldmljZUluZm87CiBjbGFzcyBNZWRpYVN0cmVhbTsKIApA
QCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhRGV2aWNlcyhEb2N1
bWVudCYpOwogCiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKKyAgICBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgZnJpZW5kIGNsYXNzIEpTTWVkaWFEZXZpY2VzT3duZXI7CiAKQEAgLTEwMSw4ICsxMDIs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQogCiAgICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OkRldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBtX2RldmljZUNoYW5n
ZWRUb2tlbjsKKyAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4g
bV9kZXZpY2VDaGFuZ2VUb2tlbjsKICAgICBjb25zdCBFdmVudE5hbWVzJiBtX2V2ZW50TmFtZXM7
IC8vIE5lZWQgdG8gY2FjaGUgdGhpcyBzbyB3ZSBjYW4gdXNlIGl0IGZyb20gR0MgdGhyZWFkcy4K
KyAgICBib29sIG1fbGlzdGVuaW5nRm9yRGV2aWNlQ2hhbmdlcyB7IGZhbHNlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAppbmRleCAzZTNhZGUxYThjMmJkNWVhNzBjMDI3
NjMyZDc2MGUzYTAxNzM3ZGJmLi5iMmFhNTYwM2Y1NzUxMjdlNWY1YTg2NDZhOWE4NzdlMjE0YTRh
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ2xpZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0OwpAQCAtNDksNiArNTEs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXMoTWVk
aWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZpY2VzRW51bWVyYXRpb25S
ZXF1ZXN0JikgPSAwOwogCisgICAgZW51bSBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuVHlwZSB7
IH07CisgICAgdXNpbmcgRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiA9IE9iamVjdElkZW50aWZp
ZXI8RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGU+OworICAgIHZpcnR1YWwgRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZl
cihEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5Vc2VyTWVkaWFDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAppbmRl
eCAyMjQ5YWJmMjc4NmJkMjIzNWM0MDE4OGM0YWM0NGFhMTg3ZDYyYmY1Li5jZmFjNTk5ZDdmYmUz
NGJkNTA0MDQ4NDkxNjVlNTNmYmIzYTViMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0Vu
dW1lcmF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRp
b25SZXF1ZXN0KE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpOwogCisgICAgVXNlck1l
ZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9ic2Vy
dmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbW92ZURldmljZUNoYW5n
ZU9ic2VydmVyKFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
ICAgICBzdGF0aWMgVXNlck1lZGlhQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxVc2VyTWVkaWFDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJv
bShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KIApAQCAtNzUsNiArNzgsMTYgQEAgaW5saW5l
IHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb25S
ZXF1ZXN0KE1lZGlhRGV2aWMKICAgICBtX2NsaWVudC0+Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVy
YXRpb25SZXF1ZXN0KHJlcXVlc3QpOwogfQogCitpbmxpbmUgVXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNoYW5n
ZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQoreworICAgIHJldHVy
biBtX2NsaWVudC0+YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGTW92ZShvYnNlcnZlcikpOwor
fQorCitpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VP
YnNlcnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gdG9rZW4p
Cit7CisgICAgbV9jbGllbnQtPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKHRva2VuKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggZDBkOTUxMTI4NTQzOWI3MjZmMmQzYjE4YTgzZTgyNzkyOWFi
ZWUxYi4uOGY3YjEyN2UxYzQwNGExY2VhMTliMmNiYWM0YWZjNGM2MGQ0MDQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTQzNCw4ICs0MzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Jlc3Rvcmlu
Z0NhY2hlZFBhZ2UoYm9vbCB2YWx1ZSkgeyBtX2lzUmVzdG9yaW5nQ2FjaGVkUGFnZSA9IHZhbHVl
OyB9CiAgICAgYm9vbCBpc1Jlc3RvcmluZ0NhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lz
UmVzdG9yaW5nQ2FjaGVkUGFnZTsgfQogCi0gICAgdm9pZCBhZGRBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIo
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlv
bnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IGNkMTQ3YTAyYjRjZDdjMGU4MTI3Zjk3YWMw
Mzk4NjVhNGY2NzI4ZWQuLjhhMzliMjkyZjkzOGFjZDQ5MDU5MDJhNDVhYzRhZjhhODc1NTBjYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwyNCArNTAsMTQgQEAgQ2FwdHVyZURl
dmljZSBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21QZXJzaXN0ZW50SUQo
Y29uc3QgU3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6T2JzZXJ2ZXJUb2tlbiBuZXh0T2JzZXJ2ZXJUb2tlbigpCit2b2lkIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VDaGFuZ2VkKCkKIHsKLSAgICBzdGF0aWMgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dFRva2VuID0gMDsKLSAgICByZXR1cm4gKytuZXh0
VG9rZW47Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2smJiBvYnNlcnZlcikKLXsKLSAgICBhdXRvIHRva2VuID0gbmV4dE9i
c2VydmVyVG9rZW4oKTsKLSAgICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2
ZXIpKTsKLSAgICByZXR1cm4gdG9rZW47Ci19CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotdm9pZCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVtb3ZlQ2FwdHVy
ZURldmljZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuIHRva2VuKQotewotICAgIEFTU0VS
VChtX29ic2VydmVycy5jb250YWlucyh0b2tlbikpOwotICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZSh0
b2tlbik7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNh
cHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworICAgIH0pOwogfQogCi0KICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggNDVlZGIzMDBjM2I3MmU4Nzcz
NDVjOWYwMDIzNmZkMDZkMzU0OWNkZS4uNTczMmRlMDNkZWViNGZjMDk4NWExYjFhNzRiY2JiMTQ2
MGZlYzViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjMgKzI5LDE5IEBACiAKICNp
bmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FwdHVyZURldmljZU1hbmFnZXIgeworY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2FwdHVyZURldmljZU1hbmFnZXI+IHsKIHB1YmxpYzoKLSAg
ICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KCk+OwotICAgIHVzaW5nIE9ic2VydmVyVG9rZW4gPSB1aW50MzJfdDsKLSAgICB2aXJ0dWFsIE9i
c2VydmVyVG9rZW4gYWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihDYXB0dXJlRGV2aWNl
Q2hhbmdlZENhbGxiYWNrJiYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDYXB0dXJlRGV2aWNl
Q2hhbmdlZE9ic2VydmVyKE9ic2VydmVyVG9rZW4pOwotCiAgICAgdmlydHVhbCBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
KCk7CiAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChjb25z
dCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCk7Ci0gICAgSGFzaE1hcDxPYnNlcnZlclRva2VuLCBD
YXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrPiBtX29ic2VydmVyczsKKyAgICB2b2lkIGRldmlj
ZUNoYW5nZWQoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKaW5kZXggOTUyMTE5Y2NhYjMxOWFmYzZmMWEzMzllMjgxMmUwZjZiOTU2NGRhOS4uOGE0
NjA5YTJkMjY0NzQxMDY4OWJmNDAyYTJjMWQ2MzQ2MTJjN2ZkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKQEAgLTI0NiwxMCArMjQ2LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAg
ICB9CiAKICAgICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERp
c3RhbmNlKTsKLSAgICAgICAgaWYgKHdpZHRoQ29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgewot
ICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICAg
ICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUo
KS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
KTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7
CisgICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5n
ZShzaXplKCkud2lkdGgoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodDsKQEAgLTI2
MSwxMCArMjU5LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRG
cmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAgICB9CiAKICAgICAg
ICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKLSAg
ICAgICAgaWYgKGhlaWdodENvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHQg
PSBoZWlnaHRDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkuaGVpZ2h0
KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOwotICAg
ICAgICB9CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7CisgICAg
ICAgIGhlaWdodCA9IGhlaWdodENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNp
emUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0ludCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKQEAg
LTI3NiwxMCArMjcyLDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVB
bmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAgICB9CiAKICAg
ICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsK
LSAgICAgICAgaWYgKGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCk7Ci0gICAgICAgICAg
ICBmcmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5n
ZSh0aGlzLT5mcmFtZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFu
Z2VNYXgoKS5hc0RvdWJsZSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFi
aWxpdGllcy5mcmFtZVJhdGUoKTsKKyAgICAgICAgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3Ry
YWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2UodGhpcy0+ZnJhbWVSYXRlKCksIHJhbmdlLnJh
bmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUpOwogICAgIH0KIAog
ICAgIC8vIEVhY2ggb2YgdGhlIG5vbi1udWxsIHZhbHVlcyBpcyBzdXBwb3J0ZWQgaW5kaXZpZHVh
bGx5LCBzZWUgaWYgdGhleSBhbGwgY2FuIGJlIGFwcGxpZWQgYXQgdGhlIHNhbWUgdGltZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggMzg4NmZmODc1Y2U4OWY1YzEwOGM0
MzdiYjljYWEyZjRkN2YxNjAyYS4uZmZkNTFkNGU0NmQ1ZThhYWEyYTIzYTA2MmFhMTI0Zjg1MmYz
ZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDEyICs1Myw2
IEBAIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKiYgbWVkaWFTdHJlYW1DZW50ZXJP
dmVycmlkZSgpCiAgICAgcmV0dXJuIG92ZXJyaWRlOwogfQogCi1zdGF0aWMgSGFzaE1hcDx1bnNp
Z25lZCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiYgb2JzZXJ2ZXJNYXAoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+
PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkKIHsKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyKiBvdmVycmlkZSA9IG1lZGlhU3RyZWFtQ2VudGVyT3ZlcnJpZGUoKTsK
QEAgLTE5OSwyNSArMTkzLDE4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBpZCwKICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciB9OwogfQogCi1SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNl
cnZlcikKLXsKLSAgICBzdGF0aWMgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIG5leHRUb2tl
biA9IDA7Ci0gICAgb2JzZXJ2ZXJNYXAoKS5zZXQoKytuZXh0VG9rZW4sIFdURk1vdmUob2JzZXJ2
ZXIpKTsKLSAgICByZXR1cm4gbmV4dFRva2VuOwotfQotCi12b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoRGV2aWNlc0NoYW5nZWRPYnNl
cnZlclRva2VuIHRva2VuKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQogewot
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG9ic2VydmVyTWFwKCkucmVtb3ZlKHRva2VuKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2RldmljZUNoYW5nZWRPYnNlcnZlcik7CisgICAgbV9k
ZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEZNb3ZlKG9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogewotICAgIC8v
IENvcHkgdGhlIGhhc2ggbWFwIGJlY2F1c2UgdGhlIG9ic2VydmVyIGNhbGxiYWNrIG1heSBjYWxs
IGJhY2sgaW4gYW5kIG1vZGlmeSB0aGUgbWFwLgotICAgIGF1dG8gY2FsbGJhY2tzID0gb2JzZXJ2
ZXJNYXAoKTsKLSAgICBmb3IgKGF1dG8mIGl0IDogY2FsbGJhY2tzKQotICAgICAgICBpdC52YWx1
ZSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fZGV2aWNlQ2hhbmdl
ZE9ic2VydmVyKQorICAgICAgICBtX2RldmljZUNoYW5nZWRPYnNlcnZlcigpOwogfQogCiB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFZh
bGlkQ29uc3RyYWludHNIYW5kbGVyJiYgdmFsaWRIYW5kbGVyLCBJbnZhbGlkQ29uc3RyYWludHNI
YW5kbGVyJiYgaW52YWxpZEhhbmRsZXIsIGNvbnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgcmVxdWVz
dCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCmluZGV4IGVmN2IzY2ZjZDkxNmVkY2NhZTYyMGU0NDIxZjhjMGJhYmU4ZmUzZWMu
LmQ1NGFlOGU3ZmE1N2QzMjU3MWUwNzMwY2Q2Mjk3NzU0ODhkZmNmNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg1LDIyICs4NSwyMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlV2l0aFVuaXF1ZUlEKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAK
LSAgICB1c2luZyBEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gPSB1bnNpZ25lZDsKLSAgICBE
ZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2Vy
dmVyKERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
ICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKGJvb2wsIGJvb2wpOwogCisgICAgdm9p
ZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIoKTsKIAotICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Ci0K
ICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKIAogICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyKiBtX2F1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIgeyBudWxscHRyIH07CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fdmlk
ZW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKKworICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX2RldmljZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggMzJlNzBlMTZkY2EzMDZmNWZkNzkwZDJlMzQ1MTU3ODFmNzc3NmY0ZS4uZjYx
ZDhkZmFmNjIzYjY0MDBlZDg1NDdjYzc3OGQ2ZjU4ZDMzYzkzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUgIkFW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KICNp
bmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0x
NDEsOCArMTQyLDcgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKTsKICAgICBtX2RldmljZXMgPSBXVEZNb3Zl
KG5ld0RldmljZXMpOwogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZh
bHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpp
bmRleCBjMDExYjI2ZTY4NmIwNWMxZmEwYjY5YTBkOTFkN2NmMGNhNjNmMzQwLi4wZWZjOTJhMGZl
ZTkwMmFkOTY4OWU2Y2VhY2M1NWE2NTcyZjRmYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE3OSw5ICsxNzksNyBAQCB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygpCiB2b2lkIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCgpCiB7CiAgICAgcmVmcmVzaENhcHR1cmVEZXZpY2Vz
KCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMudmFsdWVzKCkpCi0g
ICAgICAgIG9ic2VydmVyKCk7CisgICAgZGV2aWNlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2VUeXBl
ZGVmKiBkZXZpY2UpCkBAIC0yMDAsOCArMTk4LDcgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
LnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTQxM2E4Zjg2NzIyMjA0ZTRjNDJmYWU2ZWVkYjMwNmE1
MmY1NTFhOC4uMTExMWVhYjAzMjBmNDFiZTE2YjMwOGZiNzA4NDM0NDNiZWY0ZTk0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUg
PEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTY0LDEwICs2NSwxNyBAQCBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJl
RGV2aWNlV2l0aFBlcgogc3RhdGljIGJvb2wgZGV2aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2Jq
ZWN0SUQgZGV2aWNlSUQpCiB7CiAgICAgVUludDMyIGRhdGFTaXplID0gMDsKLSAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVh
bXMsIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlF
bGVtZW50TWFzdGVyIH07CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9
IHsga0F1ZGlvRGV2aWNlUHJvcGVydHlTdHJlYW1Db25maWd1cmF0aW9uLCBrQXVkaW9EZXZpY2VQ
cm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owog
ICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGFTaXplKGRldmljZUlELCAm
YWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplKTsKIAotICAgIHJldHVybiAhZXJyICYmIGRh
dGFTaXplOworICAgIGlmIChlcnIgfHwgIWRhdGFTaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGJ1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0
PigoQXVkaW9CdWZmZXJMaXN0KikgOjpvcGVyYXRvciBuZXcgKGRhdGFTaXplKSk7CisgICAgbWVt
c2V0KGJ1ZmZlckxpc3QuZ2V0KCksIDAsIGRhdGFTaXplKTsKKyAgICBlcnIgPSBBdWRpb09iamVj
dEdldFByb3BlcnR5RGF0YShkZXZpY2VJRCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6
ZSwgYnVmZmVyTGlzdC5nZXQoKSk7CisKKyAgICByZXR1cm4gIWVyciAmJiBidWZmZXJMaXN0LT5t
TnVtYmVyQnVmZmVyczsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZENhcHR1cmVEZXZpY2UoY29u
c3QgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSYgZGV2aWNlKQpAQCAtODEsNyArODksNyBAQCBWZWN0
b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojpjb3JlQXVkaW9DYXB0dXJlRAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICBy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgICAgICByZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyhEb05vdE5vdGlmeSk7CiAKICAgICAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVj
dFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9
OwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihrQXVk
aW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCBkZXZpY2VzQ2hhbmdlZCwgdGhpcyk7CkBA
IC0xMDIsNyArMTEwLDcgQEAgc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvRGUKIH0KIAogCi12b2lkIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygp
Cit2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyhOb3RpZnlJZkRldmljZXNIYXZlQ2hhbmdlZCBub3RpZnkpCiB7CiAgICAgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURl
dmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3Bl
cnR5RWxlbWVudE1hc3RlciB9OwogICAgIFVJbnQzMiBkYXRhU2l6ZSA9IDA7CkBAIC0xNTYsMTMg
KzE2NCwxMyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVk
aW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmlj
ZSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGlmIChub3RpZnkgPT0gTm90aWZ5KQorICAg
ICAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9CiAKIE9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1
ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgc3RhdGlj
X2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlm
eSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKaW5kZXggOGMyOGU4Mjc5ODRjYWZmNDg2YTQ1NTQxOTA1NTEwMzc1YTQ1OTAy
ZC4uY2Y0ODI3NjQxNGIyNDJhYWZhNDg2ZDkyNTAzNzVjODgxNGNjMWI5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTUsOCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50
MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCopOwogICAgIFZlY3Rv
cjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsKIAot
ICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICBlbnVtIE5vdGlmeUlm
RGV2aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05vdE5vdGlmeSB9OworICAgIHZvaWQgcmVm
cmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5SWZEZXZpY2VzSGF2ZUNoYW5nZWQpOwogCiAg
ICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fZGV2aWNlczsKICAgICBWZWN0b3I8Q29yZUF1ZGlv
Q2FwdHVyZURldmljZT4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
aW5kZXggMDg3NTQ5N2ExZWZhMTEwNDUzZjhlMmQ2ZTUyM2RhYjM2MTdjOTRhZi4uZWM0NDFlZmQ3
NWU5Mzg3Njc2NjU1YmQwMjVkOTM3YjUzODc3MzdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk3
LDYgKzk3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlQ2FwdHVyZURl
dmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpCiB7CiAgICAgc2V0RGV2aWNlcyhkZWZhdWx0RGV2aWNl
cygpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJl
RGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmIG5ld01vY2tEZXZpY2VzKQpAQCAtMTE1
LDYgKzExNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoVmVj
dG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNlCiAgICAgICAgIG1hcC5hZGQoZGV2
aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKICAgICAgICAgY3JlYXRlQ2FwdHVyZURldmljZShk
ZXZpY2UpOwogICAgIH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQpAQCAtMTIyLDYg
KzEyNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShjb25zdCBN
b2NrTWVkaWFEZXZpY2UmIGRldmljZSkKICAgICBkZXZpY2VzKCkuYXBwZW5kKGRldmljZSk7CiAg
ICAgZGV2aWNlTWFwKCkuc2V0KGRldmljZS5wZXJzaXN0ZW50SWQsIGRldmljZSk7CiAgICAgY3Jl
YXRlQ2FwdHVyZURldmljZShkZXZpY2UpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQp
CkBAIC0xNDAsNiArMTQzLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3Zl
RGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQogICAgIH0pOwogCiAgICAgbWFwLnJl
bW92ZShpdGVyYXRvcik7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVu
dElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGY5MWViZTBmZTg1NDQxMTRhNjYyYzc2ZTQy
YWZjYTdhNzAwZWRhYy4uZGI2ODgyMWUzMWQyY2UyN2Q4YmUxOGRmZDU3ZTA2ZmUzMDU2YTM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTUsMTkgKzU1LDE2IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
RW5hYmxlZChib29sCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzKFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiYgbmV3TW9ja0RldmljZXMpCiB7CiAgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoV1RGTW92ZShuZXdNb2NrRGV2aWNlcykp
OwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2
aWNlJiBkZXZpY2UpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShk
ZXZpY2UpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UoY29uc3QgU3Ry
aW5nJiBwZXJzaXN0ZW50SWQpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZURldmljZShwZXJzaXN0ZW50SWQpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZWUzNzAzOWQ5NWFmNjkwOTkyOGZkMDI0ZWY5Mjg1NGEzMmVjMTNi
Ni4uOWE3OTYyNDc0OTcwNzg1YmFjMzQ2NTVhM2VjNmJkNWQ3OWE3YmFlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDMzOCw2ICs0MzM4LDIyIEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRQYWdlVmlzaWJpbGl0eShib29sIGlzVmlzaWJsZSkKICAgICBwYWdlLnNldEFjdGl2
aXR5U3RhdGUoc3RhdGUpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0UGFnZUlzRm9jdXNlZEFu
ZEFjdGl2ZShib29sIGlzRm9jdXNlZEFuZEFjdGl2ZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9
IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBwYWdlID0gKmRvY3VtZW50LT5wYWdlKCk7
CisgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlTdGF0ZSgpOworCisgICAgaWYgKGlzRm9j
dXNlZEFuZEFjdGl2ZSkKKyAgICAgICAgc3RhdGUgfD0gKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIHwgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKKyAgICBlbHNlCisgICAgICAgIHN0
YXRlICY9IH4oQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBBY3Rpdml0eVN0YXRlOjpJ
c0ZvY3VzZWQpOworCisgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKK30KKwogI2lm
IEVOQUJMRShXRUJfUlRDKQogdm9pZCBJbnRlcm5hbHM6OnNldEgyNjRIYXJkd2FyZUVuY29kZXJB
bGxvd2VkKGJvb2wgYWxsb3dlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGQwZDI4NzljZTZmNjczNzk0NWQ1NzM3OTE0N2I2Mzc2ZDM0NDY0NmYuLmUxMTgyZGU1NGQ4NmU1
NGY5OTExMjk2Yjc2ZDNkMTUzNzEwZmQzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtNjQxLDYgKzY0MSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRQYWdl
VmlzaWJpbGl0eShib29sIGlzVmlzaWJsZSk7CisgICAgdm9pZCBzZXRQYWdlSXNGb2N1c2VkQW5k
QWN0aXZlKGJvb2wpOworCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lkIHNldEgyNjRI
YXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wgYWxsb3dlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggMDExNDhiOThkOWIwZjhiZmI0NTRhN2Q3NDExYTZmNmY2NGM4ODIw
Zi4uOTE5YmJkYWYyZDBhYTcxYWRjYTc5OTc5Y2RjOGZlYzIwYzJlYWZmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjAzLDYgKzYwMyw3IEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogICAgIFtDb25kaXRpb25hbD1XRUJHTF0gdm9pZCBmYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dCBjb250ZXh0KTsKIAogICAgIHZvaWQgc2V0UGFn
ZVZpc2liaWxpdHkoYm9vbGVhbiBpc1Zpc2libGUpOworICAgIHZvaWQgc2V0UGFnZUlzRm9jdXNl
ZEFuZEFjdGl2ZShib29sZWFuIGlzRm9jdXNlZCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JU
Q10gdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sZWFuIGFsbG93ZWQpOwog
ICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRnb2luZ1Zp
ZGVvU291cmNlcyhSVENQZWVyQ29ubmVjdGlvbiBjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGE3ODJiYWFjOWQ0NWJiM2M5ZDBiODk5MjYy
MmZhYTYyNTJhYTE4NGQuLjA5ZTQ2NGZjZDcxNjBiMmVlOGZlMmM5MzM2MjAyNmViNGIzODBkODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDE5LDYgKzQx
OSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2Vs
ZWN0aW9uUmVjdCc6IFsnIkVkaXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKKyAg
ICAgICAgJ1dlYktpdDo6RGV2aWNlQWNjZXNzU3RhdGUnOiBbJyJVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6
IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRlJzog
WyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6
IFsnIldlYkV2ZW50LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggM2MwNzI5NWYxMDUzZmMxNWRjYzg4NDQ1NjMyOTA1YjhjM2ZjYjk2Yi4uMDJiMmEyMzFlNjc5
NjM4MmFhMWE0MDBhNDllNzgwMTRiODZlZmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKIAog
I2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIK
KyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNz
aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCkBAIC03Nyw2ICs3OCwxNSBAQCB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpzdG9wQ2FwdHVyZSgp
CiAgICAgbV9wYWdlLnN0b3BNZWRpYUNhcHR1cmUoKTsKIH0KIAordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKK3sKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIC8vIEZJWE1FOiBhIHBhZ2Ugd2l0aCBwZXJzaXN0
ZW50IGFjY2VzcyBzaG91bGQgYWx3YXlzIGdldCBkZXZpY2UgY2hhbmdlIG5vdGlmaWNhdGlvbnMu
CisgICAgYXV0byBhY2Nlc3NTdGF0ZSA9IG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSA/IERl
dmljZUFjY2Vzc1N0YXRlOjpOb0FjY2VzcyA6IERldmljZUFjY2Vzc1N0YXRlOjpTZXNzaW9uQWNj
ZXNzOworICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVy
ZURldmljZXNDaGFuZ2VkKGFjY2Vzc1N0YXRlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyNlbmRpZgor
fQorCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjbGVhckNh
Y2hlZFN0YXRlKCkKIHsKICAgICBpbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3RzKCk7CkBAIC00MzQs
NyArNDQ0LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
Y2FwdHVyZVN0YXRlQ2hhbmdlZChNZWRpYVByb2R1Y2VyOjoKICNlbmRpZgogfQogCi12b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzUHJlZ3JhbnRlZFJl
cXVlc3RzKCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnZp
ZXdJc0JlY29taW5nVmlzaWJsZSgpCiB7CiAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wcmVn
cmFudGVkUmVxdWVzdHMpCiAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaAppbmRleCA1NzNhZjA0ZDcxYjg1Mzk1NzUxMjQ5OWQ5MmM0MzA2NDhi
YmQxNzlmLi44ZDNjMDk2NzNjNzBjMDg2YzBiMmI4OGVkZWJmNWIwNWJkYWY2ZDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZy
YW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
TWVkaWFTdHJlYW1SZXF1ZXN0Jik7CiAKICAgICB2b2lkIHJlc2V0QWNjZXNzKHVpbnQ2NF90IG1h
aW5GcmFtZUlEKTsKLSAgICB2b2lkIHByb2Nlc3NQcmVncmFudGVkUmVxdWVzdHMoKTsKKyAgICB2
b2lkIHZpZXdJc0JlY29taW5nVmlzaWJsZSgpOwogCiAgICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NX
YXNHcmFudGVkKHVpbnQ2NF90LCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2Us
IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmJiB2aWRlb0RldmljZSk7CiAgICAgdm9pZCB1c2VyTWVk
aWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbik7CkBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNjaGVkdWxlTmV4dFJlamVjdGlvbigpOwogICAgIHZvaWQgcmVqZWN0aW9u
VGltZXJGaXJlZCgpOwogICAgIHZvaWQgY2xlYXJDYWNoZWRTdGF0ZSgpOworICAgIHZvaWQgY2Fw
dHVyZURldmljZXNDaGFuZ2VkKCk7CiAKICAgICB2b2lkIGNhcHR1cmVTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZFN0YXRlLCBXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggN2Fl
NjkwOTc0NmJmZDc4OTNkMWNlOWYzMDk4ODRkZDMxNjNiYzRjMi4uNzAyNWQ0ZDk5OTFjNTliYjkx
MDAyNWEzZjQ4MGFhNTJiYjBjMzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKQEAgLTM1LDYgKzM2LDggQEAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBhdWRpb0V4dGVu
c2lvblBhdGggeyAiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zIH0KIHN0YXRpYyBjb25z
dCBBU0NJSUxpdGVyYWwgdmlkZW9FeHRlbnNpb25QYXRoIHsgImNvbS5hcHBsZS53ZWJraXQuY2Ft
ZXJhIl9zIH07CiAjZW5kaWYKIAorc3RhdGljIGNvbnN0IFNlY29uZHMgZGV2aWNlQ2hhbmdlRGVi
b3VuY2VUaW1lckludGVydmFsIHsgMjAwX21zIH07CisKIGNsYXNzIFByb2Nlc3NTdGF0ZSB7CiBw
dWJsaWM6CiAgICAgUHJvY2Vzc1N0YXRlKCkgeyB9CkBAIC0xMDEsNiArMTA0LDExIEBAIFVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyJiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkK
ICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAorVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OlVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyKCkKKyAgICA6IG1fZGVib3VuY2VUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2Vk
KQoreworfQorCiB2b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjphZGRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSYgcHJveHkpCiB7CiAgICAgcHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNz
KCkpLmFkZFJlcXVlc3RNYW5hZ2VyKHByb3h5KTsKQEAgLTI1NCw2ICsyNjIsNTggQEAgdm9pZCBV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2V0Q2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIH0KIH0KIAordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXND
aGFuZ2VkKCkKK3sKKyAgICBhdXRvJiBtYXAgPSBzdGF0ZU1hcCgpOworICAgIGZvciAoYXV0byYg
c3RhdGUgOiBtYXApIHsKKyAgICAgICAgYXV0byogcHJvY2VzcyA9IHN0YXRlLmtleTsKKyAgICAg
ICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogc3RhdGUudmFsdWUtPm1hbmFnZXJzKCkpIHsKKyAgICAg
ICAgICAgIGlmIChtYXAuZmluZChwcm9jZXNzKSA9PSBtYXAuZW5kKCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBtYW5hZ2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YmVn
aW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbdGhpc10geworICAg
ICAgICBtX2NhcHR1cmVEZXZpY2VzID0gV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCk7CisKKyAgICAgICAgV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0RGV2aWNlc0NoYW5n
ZWRPYnNlcnZlcihbdGhpc10oKSB7CisgICAgICAgICAgICBhdXRvIG9sZERldmljZXMgPSBXVEZN
b3ZlKG1fY2FwdHVyZURldmljZXMpOworICAgICAgICAgICAgbV9jYXB0dXJlRGV2aWNlcyA9IFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3Ry
ZWFtRGV2aWNlcygpOworCisgICAgICAgICAgICBpZiAobV9jYXB0dXJlRGV2aWNlcy5zaXplKCkg
PT0gb2xkRGV2aWNlcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGhhdmVDaGFuZ2Vz
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvICZuZXdEZXZpY2UgOiBtX2NhcHR1
cmVEZXZpY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdEZXZpY2UudHlwZSgpICE9
IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiBuZXdEZXZpY2Uu
dHlwZSgpICE9IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUp
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGluZGV4ID0gb2xkRGV2aWNlcy5maW5kTWF0Y2hpbmcoWyZuZXdEZXZpY2VdIChhdXRv
JiBvbGREZXZpY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdEZXZpY2Uu
cGVyc2lzdGVudElkKCkgPT0gb2xkRGV2aWNlLnBlcnNpc3RlbnRJZCgpICYmIG5ld0RldmljZS5l
bmFibGVkKCkgIT0gb2xkRGV2aWNlLmVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBoYXZlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmICghaGF2ZUNoYW5nZXMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2hlbiBhIGRldmljZSB3aXRo
IGNhbWVyYSBhbmQgbWljcm9waG9uZSBpcyBhdHRhY2hlZCBvciBkZXRhY2hlZCwgdGhlIENhcHR1
cmVEZXZpY2Ugbm90aWZpY2F0aW9uIGZvcgorICAgICAgICAgICAgLy8gdGhlIGRpZmZlcmVudCBk
ZXZpY2VzIHdvbid0IGFycml2ZSBhdCB0aGUgc2FtZSB0aW1lIHNvIGRlbGF5IGEgYml0IHNvIHdl
IGNhbiBjb2FsZXNjZSB0aGUgY2FsbGJhY2tzLgorICAgICAgICAgICAgaWYgKCFtX2RlYm91bmNl
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICBtX2RlYm91bmNlVGltZXIuc3RhcnRP
bmVTaG90KGRldmljZUNoYW5nZURlYm91bmNlVGltZXJJbnRlcnZhbCk7CisgICAgICAgIH0pOwor
ICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaAppbmRleCA4MTk5
OGI0YWNiN2RkZjkxZDUwYTgzYzc5ZDJlNWNhYzNkMTg3NDczLi5hZTE2ZWJlZDg1ZDgwYmZkY2Fj
MDVlYzZiODBjNzY0M2I4ZWY1MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIxLDYgKzIxLDggQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzEsNiArMzMsOCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXImIHNpbmdsZXRvbigpOwogCisgICAgVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIoKTsKKwogICAgIHZvaWQgYWRkVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CiAKQEAgLTQ1LDcg
KzQ5LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVueU5leHRVc2VyTWVkaWFSZXF1ZXN0KCkg
eyBtX2RlbnlOZXh0UmVxdWVzdCA9IHRydWU7IH0KIAorICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5n
Q2FwdHVyZURldmljZXMoKTsKKwogcHJpdmF0ZToKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fY2FwdHVyZURl
dmljZXM7CisgICAgUnVuTG9vcDo6VGltZXI8VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI+IG1fZGVi
b3VuY2VUaW1lcjsKICAgICBib29sIG1fY2FwdHVyZUVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9v
bCBtX2RlbnlOZXh0UmVxdWVzdCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTQ3YjcyMTNkMjcwZGExY2I2YWRmN2FkMDExZDhiODlh
MDU4YmU0Yy4uZmUzMTU3OTZmMmE5MjA2OTkxZjdhMDFjZDRmZDk2MzY5MGIxNjE2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQwLDcgKzM4NDAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1l
SUQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKIHsKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cigpLnByb2Nlc3NQcmVncmFudGVkUmVxdWVzdHMoKTsKKyAgICB1c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoKS52aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKICNlbmRpZgogfQogCkBA
IC02NDU2LDYgKzY0NTYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2
aWNlc0ZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdAogI2VuZGlmCiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpCit7Cisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2lu
Z2xldG9uKCkuYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKKyNlbmRpZgorfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpCiB7CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZmU0
M2MzOGQwZmY3YThjMWZhNDlkOGU4ZTgzYjBjZTZhYmVkMjQ0Mi4uZmQzOTJiZDQ0YmNmOGZlYjY4
ZjAyY2JkZGM1YmM3MDkwOGM1MGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTE0ODcsNiArMTQ4Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVJlcXVlc3QmKTsKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZy
YW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luRGF0YSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luRGF0YSk7
CisgICAgdm9pZCBiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpOwogCiAgICAgdm9pZCBy
dW5Nb2RhbCgpOwogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjMxZjVmMGJlMzRjYzk0ODkyN2E5YjEzNmQw
Y2MzMmM1MWJjOWMyYS4uNmQyOWE5ZmQyZTQ2M2RmOWEwZjA2ZTAzNDdmYWM2NDUxYjVjMDg2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjg3LDYgKzI4Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBN
ZWRpYVN0ZWFtIG1lc3NhZ2VzCiAgICAgUmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFt
ZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgcmVxdWVzdCkKICAg
ICBFbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIpCisgICAgQmVnaW5Nb25pdG9y
aW5nQ2FwdHVyZURldmljZXMoKQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMGE3MWQ1Mzk4NzRjYjc2OTNhZGZjZmNiMmE3MTE1NTNiYmRiZTE4My4uZmFhYjRkNWQwODM2
Zjc3NTcxMWI3NzRhYmY0OTM4Y2RmNGY4MDQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NCw2ICs3NCw3IEBACiAJCTA3NEU3NUZF
MURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAwRDMx
OEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NEU3NjAyMURGNzA3
QkUwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NjAwMURGNzA3NUQwMEQz
MThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCAqLzsgfTsKIAkJMDc2RTg4
NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURGMDA1RTkw
RkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKKwkJMDc3MjgxMUQyMTIzNEZGNjAw
QzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFGN0IyNzAwMkVC
QUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9OwogCQkwN0E1
RUJCQjFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCOTFDN0JBNDNFMDBCOUNB
NjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5
Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRs
ZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBFOTdENzREMjAwRTkwMDQwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJG
NjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLzsgfTsKQEAgLTk0NDcsNiArOTQ0OCw3IEBACiAJ
CQkJQ0Q0OTFCMTMxRTczNDgyMTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
Mjk3RjlGMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEzQ0MxOEIx
OUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTNDQzE4RDE5QjA2NDE5MDBEMTRBRUYgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc0RTc1RkUx
REYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5k
ZXggOWNjYWNlMDU3N2M3ZmJjOGZmNTcwNmJkZmFkOTNlNDM3Y2M2ZTFmMy4uNWJiNGU4NWJiNjAw
YTg0YTVmOThhNjliMjAwZTc3N2NkYWRiY2MyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNiAr
NDAsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
K3N0YXRpYyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBmb2N1c2VkQWN0aXZlV2luZG93
ID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkIHwgV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmU7CisKIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJlcXVlc3RJ
RCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVJlcXVlc3RJRCA9IDE7CkBAIC01Myw2
ICs1NSw4IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmIHBhCiAKIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpCiB7Cisg
ICAgaWYgKG1fbW9uaXRvcmluZ0FjdGl2aXR5U3RhdGVDaGFuZ2UpCisgICAgICAgIG1fcGFnZS5j
b3JlUGFnZSgpLT5yZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoKnRoaXMpOwogICAg
IGZvciAoYXV0byYgc2FuZGJveEV4dGVuc2lvbiA6IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMpCiAgICAgICAgIHNhbmRib3hFeHRlbnNpb24udmFsdWUtPnJldm9rZSgpOwogfQpA
QCAtMjIyLDYgKzIyNiw3NyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoYwogICAgIH0KIH0KIAor
VXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gZ2VuZXJhdGVP
YmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXJUb2tlblR5cGU+KCk7CisgICAgbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5hZGQoaWRl
bnRpZmllciwgV1RGTW92ZShvYnNlcnZlcikpOworCisgICAgaWYgKCFtX21vbml0b3JpbmdEZXZp
Y2VDaGFuZ2UpIHsKKyAgICAgICAgbV9tb25pdG9yaW5nRGV2aWNlQ2hhbmdlID0gdHJ1ZTsKKyAg
ICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmVnaW5Nb25pdG9yaW5n
Q2FwdHVyZURldmljZXMoKSk7CisgICAgfQorICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlRGV2aWNlQ2hhbmdl
T2JzZXJ2ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIHRva2Vu
KQoreworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fZGV2aWNlQ2hhbmdlT2JzZXJ2ZXJNYXAucmVt
b3ZlKHRva2VuKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwor
fQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FwdHVyZURldmlj
ZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlIGFjY2Vzc1N0YXRlKQoreworICAgIC8vIFdoZW4g
bmV3IG1lZGlhIGlucHV0IGFuZC9vciBvdXRwdXQgZGV2aWNlcyBhcmUgbWFkZSBhdmFpbGFibGUs
IG9yIGFueSBhdmFpbGFibGUgaW5wdXQgYW5kL29yCisgICAgLy8gb3V0cHV0IGRldmljZSBiZWNv
bWVzIHVuYXZhaWxhYmxlLCB0aGUgVXNlciBBZ2VudCBNVVNUIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzIGluIGJyb3dzaW5nCisgICAgLy8gY29udGV4dHMgd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRo
ZSBmb2xsb3dpbmcgY3JpdGVyaWEgYXJlIG1ldCwgYnV0IGluIG5vIG90aGVyIGNvbnRleHRzOgor
CisgICAgLy8gKiBUaGUgcGVybWlzc2lvbiBzdGF0ZSBvZiB0aGUgImRldmljZS1pbmZvIiBwZXJt
aXNzaW9uIGlzICJncmFudGVkIiwKKyAgICAvLyAqIGFueSBvZiB0aGUgaW5wdXQgZGV2aWNlcyBh
cmUgYXR0YWNoZWQgdG8gYW4gYWN0aXZlIE1lZGlhU3RyZWFtIGluIHRoZSBicm93c2luZyBjb250
ZXh0LCBvcgorICAgIC8vICogdGhlIGFjdGl2ZSBkb2N1bWVudCBpcyBmdWxseSBhY3RpdmUgYW5k
IGhhcyBmb2N1cy4KKworICAgIGJvb2wgaXNBY3RpdmUgPSAobV9wYWdlLmNvcmVQYWdlKCktPmFj
dGl2aXR5U3RhdGUoKSAmIGZvY3VzZWRBY3RpdmVXaW5kb3cpID09IGZvY3VzZWRBY3RpdmVXaW5k
b3c7CisgICAgaWYgKCFpc0FjdGl2ZSAmJiBhY2Nlc3NTdGF0ZSA9PSBEZXZpY2VBY2Nlc3NTdGF0
ZTo6Tm9BY2Nlc3MpIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSkgeworICAgICAgICAgICAgaWYg
KCFtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdlKSB7CisgICAgICAgICAgICAgICAgbV9t
b25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNoYW5nZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9w
YWdlLmNvcmVQYWdlKCktPmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtX3BlbmRpbmdEZXZpY2VDaGFuZ2VFdmVudCA9IHRy
dWU7CisgICAgICAgICAgICBtX2FjY2Vzc1N0YXRlV2hlbkRldmljZXNDaGFuZ2VkID0gYWNjZXNz
U3RhdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaWRl
bnRpZmllcnMgPSBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwLmtleXMoKTsKKyAgICBmb3IgKGF1
dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykgeworICAgICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5lbmQoKSkKKyAgICAgICAgICAg
IChpdGVyYXRvci0+dmFsdWUpKCk7CisgICAgfQorfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBuZXdBY3Rpdml0eVN0YXRlKQoreworICAgIGlmICgobmV3QWN0aXZpdHlTdGF0ZSAmIGZv
Y3VzZWRBY3RpdmVXaW5kb3cpICE9IGZvY3VzZWRBY3RpdmVXaW5kb3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIW1f
bW9uaXRvcmluZ0FjdGl2aXR5U3RhdGVDaGFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbV9tb25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNoYW5nZSA9IGZhbHNlOworICAgICAgICBt
X3BhZ2UuY29yZVBhZ2UoKS0+cmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKCp0aGlz
KTsKKyAgICB9KTsKKworICAgIGlmICghbV9wZW5kaW5nRGV2aWNlQ2hhbmdlRXZlbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcGVuZGluZ0RldmljZUNoYW5nZUV2ZW50ID0gZmFsc2U7Cisg
ICAgYXV0byBhY2Nlc3NTdGF0ZSA9IG1fYWNjZXNzU3RhdGVXaGVuRGV2aWNlc0NoYW5nZWQ7Cisg
ICAgbV9hY2Nlc3NTdGF0ZVdoZW5EZXZpY2VzQ2hhbmdlZCA9IERldmljZUFjY2Vzc1N0YXRlOjpO
b0FjY2VzczsKKyAgICBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoYWNjZXNzU3RhdGUpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggYTdlZmM4
YWRlYWFlZTUwOTA1YWM0MGE3ODUyNTVlOGY2ZjhiNDE0MC4uODI0ZjdkM2Y5ZDg3Y2U0ZGZmYzZl
NWJjZWQyMTgyZmEwYTY5MDFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
SWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAKICNp
bmNsdWRlICJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
RGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdC5oPgpAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyCi0gICAgOiBwcml2YXRlIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciB7CitlbnVtIGNsYXNzIERldmljZUFjY2Vzc1N0YXRlIHsgTm9BY2Nlc3MsIFNlc3Npb25BY2Nl
c3MsIFBlcnNpc3RlbnRBY2Nlc3MgfTsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVyLCBwcml2
YXRlIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKICAg
ICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7CkBAIC01NSwxMSArNTcsMTkg
QEAgcHVibGljOgogICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYpOwogICAgIHZvaWQgcmV2b2tlVXNlck1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAorICAg
IFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGRE
ZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBy
ZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcihXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQ6OkRldmlj
ZUNoYW5nZU9ic2VydmVyVG9rZW4pOworCisgICAgdm9pZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQo
RGV2aWNlQWNjZXNzU3RhdGUpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2VuZFVzZXJNZWRpYVJl
cXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwogCiAgICAgLy8gV2ViQ29yZTo6TWVk
aWFDYW5TdGFydExpc3RlbmVyCi0gICAgdm9pZCBtZWRpYUNhblN0YXJ0KFdlYkNvcmU6OkRvY3Vt
ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYUNhblN0YXJ0KFdlYkNvcmU6OkRvY3VtZW50
JikgZmluYWw7CisKKyAgICAvLyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIK
KyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3
QWN0aXZpdHlTdGF0ZSkgZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZU1lZGlhUmVxdWVzdEZyb21N
YXBzKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsKIApAQCAtNzMsMTAgKzgzLDI5IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRp
b25SZXF1ZXN0PiwgdWludDY0X3Q+IG1fbWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0VG9J
RE1hcDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG1f
dXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+PiBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwOworICAgIERldmljZUFjY2Vzc1N0
YXRlIG1fYWNjZXNzU3RhdGVXaGVuRGV2aWNlc0NoYW5nZWQgeyBEZXZpY2VBY2Nlc3NTdGF0ZTo6
Tm9BY2Nlc3MgfTsKKyAgICBib29sIG1fbW9uaXRvcmluZ0RldmljZUNoYW5nZSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3BlbmRpbmdEZXZpY2VDaGFuZ2VFdmVudCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJLaXQ6OkRldmljZUFjY2Vzc1N0YXRlPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZSwKKyAgICAg
ICAgV2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nlc3MsCisgICAgICAgIFdlYktpdDo6
RGV2aWNlQWNjZXNzU3RhdGU6OlNlc3Npb25BY2Nlc3MsCisgICAgICAgIFdlYktpdDo6RGV2aWNl
QWNjZXNzU3RhdGU6OlBlcnNpc3RlbnRBY2Nlc3MKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjZW5kaWYgLy8gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5j
cHAKaW5kZXggNmY2MDU3NDJlZWMzMDQyMDJhNjQwNGI1MzViY2E3YzU1NTliNGZkMS4uMGIwNmQ2
MzkyOTlkYjU0Zjc0YzhhMDI2ZDAyM2EwNjk5NzBkMGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjIsNiArNjIsMTYgQEAgdm9pZCBXZWJV
c2VyTWVkaWFDbGllbnQ6OmNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdChNZWRp
YURldmljZXNFbnVtZXIKICAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCkuY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24ocmVxdWVzdCk7CiB9CiAKK1dlYlVz
ZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBXZWJVc2VyTWVkaWFDbGll
bnQ6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIG9ic2Vy
dmVyKQoreworICAgIHJldHVybiBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCkuYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGTW92ZShvYnNlcnZlcikpOworfQorCit2
b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNl
Q2hhbmdlT2JzZXJ2ZXJUb2tlbiB0b2tlbikKK3sKKyAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKCkucmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIodG9rZW4pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNlbmRpZiAvLyBNRURJQV9TVFJFQU0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2Vy
TWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQuaAppbmRleCBhNmUzMTMyNjJkNWJhN2M0YmFmNDNiZDMwNGYzZDg2
OTgwOTRmMzZjLi4xMDkzMDQ1M2NlNzk3ZWRkOTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDYgKzQyLDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlcyhXZWJDb3JlOjpNZWRp
YURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbE1lZGlh
RGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdChXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlv
blJlcXVlc3QmKSBmaW5hbDsKIAorICAgIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbikg
ZmluYWw7CisKICAgICB2b2lkIGluaXRpYWxpemVGYWN0b3JpZXMoKTsKIAogICAgIFdlYlBhZ2Um
IG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggMmJhOThiNmJkNzhjZGNkNWZkZjZkNmU0NjM1Nzk5NDdkNGE0NTEwMC4uZDU4ZjQ2NTRj
YjkzMGU4ZGFlZTYwNzEwZGFhNDJmMTYzZjc2YTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3MzUsNiArMzczNSwxMiBAQCB2b2lkIFdl
YlBhZ2U6OmRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVk
aWFJRCwgY29uc3QgVmVjdAogewogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLT5kaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQsIGRldmlj
ZXMsIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgb3JpZ2luSGFzUGVyc2lzdGVu
dEFjY2Vzcyk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKERldmlj
ZUFjY2Vzc1N0YXRlIGFjY2Vzc1N0YXRlKQoreworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoYWNjZXNzU3RhdGUpOworfQorCiAj
aWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKIHZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYg
ZXh0ZW5zaW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCAyYjI3Y2M4ODJlMjVkYTcyMzlkZTA5YTAxY2NiM2ViODQ5OGJjNjNjLi5lNTFhNjA0
YzcwOGU2ZTQyZGRmM2M1ODAyNGJjOWMzNTc2YjhiMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMjgsNiArMjI4LDcgQEAgY2xhc3MgV2ViVG91
Y2hFdmVudDsKIGNsYXNzIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOwogY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb247CiAKK2VudW0gY2xhc3MgRGV2aWNlQWNjZXNzU3RhdGU7CiBlbnVt
IEZpbmRPcHRpb25zIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIERyYWdDb250cm9sbGVyQWN0aW9u
OwogCkBAIC01NjUsNiArNTY2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiB1c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI7IH0KICAgICB2b2lkIHByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCgpOworICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRl
KTsKICNlbmRpZgogCiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggNjQzNjA3NjhhMzBjNjIxNDYyYWM1NWQ0Y2IzYWNlOTAyNDI4NzhmNS4uYjcx
ZjI4YjZkZmEwMzQyNDM0NGRkOTJmYmJlODkxOGIwY2UyYzZjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTgs
NiArMzE4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXNl
ck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6Q2Fw
dHVyZURldmljZSBhdWRpb0RldmljZSwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSB2aWRlb0Rldmlj
ZSwgU3RyaW5nIG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQogICAgIFVzZXJNZWRpYUFj
Y2Vzc1dhc0RlbmllZCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgcmVhc29uLCBTdHJp
bmcgaW52YWxpZENvbnN0cmFpbnQpCiAgICAgRGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0
aW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4g
ZGV2aWNlcywgU3RyaW5nIG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0LCBib29sIGhhc1Bl
cnNpc3RlbnRBY2Nlc3MpCisgICAgQ2FwdHVyZURldmljZXNDaGFuZ2VkKGVudW0gV2ViS2l0OjpE
ZXZpY2VBY2Nlc3NTdGF0ZSBhY2Nlc3NTdGF0ZSkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgIEdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoV2ViS2l0OjpN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zIHNhbmRib3hFeHRlbnNpb25zKQogICAgIFJldm9r
ZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+IHNhbmRib3hF
eHRlbnNpb25JRHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzEzZmZkNDAzZjNlMDJlZTk5N2ZkODY1Yzc0MzRhNjI4ZTlk
OTM1Ny4uZjFmYzhhYWRlMWQwYzBjMDAwMWY5NWY4ZDNkNmQ4MzJkMmE4NzU3MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE4LTA4LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25p
dG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0OiBVcGRhdGVkLgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWw6IFVwZGF0ZWQu
CisKIDIwMTgtMDgtMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9kZXJuaXplIHJlc3VsdHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQu
dHh0CmluZGV4IDY0YzZiNjEwNzZmYWFhM2RlNGY4MTY4Zjc5NjljZjEwZjYwN2E2OWQuLjhkY2Y1
MjZmZDYwMjQ1NTQ2NzAxYjY3YTZmZTliMmM5MGU4NzUwYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1l
eHBlY3RlZC50eHQKQEAgLTEsMyArMSw2IEBACiAKIFBBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQg
ZmlyZWQgd2hlbiBkZXZpY2UgbGlzdCBjaGFuZ2VzIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVu
dHMgZmlyZWQgcXVpY2tseSBhcmUgY29hbGVzY2VkIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVu
dCBpcyBub3QgZmlyZWQgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBoYXMgZm9jdXMgb3IgcGVy
bWlzc2lvbiB0byBjYXB0dXJlIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudCBpcyBmaXJlZCB3
aGVuIHRoZSBkb2N1bWVudCBkb2Vzbid0IGhhcyBmb2N1cyBidXQgaGFzIHBlcm1pc3Npb24gdG8g
Y2FwdHVyZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZp
Y2UtY2hhbmdlLWV2ZW50LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2
aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKaW5kZXggNDNkNWYyYmRmZWRkOTFlY2JkMjNmYzcxYjgz
NTcxZTA3MDdiMjU1Yi4uNjE0YjhkMTEwOWRjNzkwMjk5YmRiYjcwOGJlY2Y2YWI0NzkzOWFhNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2
ZW50LTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFu
Z2UtZXZlbnQtMi5odG1sCkBAIC02LDE2ICs2LDI1IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dD4KLSAgICBsZXQgZGV2aWNlSWRzID0gW107Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0
KSA9PiB7CisgICAgbGV0IHN0cmVhbSA9IG51bGw7CisgICAgCisgICAgbGV0IHNldHVwID0gYXN5
bmMgKHRlc3QpID0+IHsKICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgidGVzdCByZXF1aXJlcyBpbnRlcm5hbCBBUEkiKTsK
IAogICAgICAgICB0ZXN0LmFkZF9jbGVhbnVwKCgpID0+IHsgdGVzdFJ1bm5lci5yZXNldE1vY2tN
ZWRpYURldmljZXMoKTsgfSk7CiAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJt
aXNzaW9uKHRydWUpOworICAgICAgICAKKyAgICAgICAgc3RyZWFtID0gbnVsbDsKKyAgICB9CisK
KyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICAgICAgYXdhaXQg
c2V0dXAodGVzdCk7CiAKLSAgICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoeyBhdWRpbzp0cnVlLCB2aWRlbzp0cnVlIH0pOworICAgICAgICBhd2FpdCBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOnRydWUsIHZpZGVvOnRydWUg
fSkKKyAgICAgICAgICAgIC50aGVuKHMgPT4gc3RyZWFtID0gcykKIAogICAgICAgICBsZXQgZGV2
aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOwog
CkBAIC0yOSw3ICszOCw3IEBACiAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2Vj
aGFuZ2UgPSByZXNvbHZlOwogICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgY29uc29sZS5sb2coImV2ZW50IDEgdGFraW5nIGEgbG9uZyB0aW1lIik7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5sb2coImV2ZW50IDEgdG9vayB0b28gbG9uZyIpOwogICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0sIDUwMDApOwogICAgICAgICAgICAg
dGVzdFJ1bm5lci5hZGRNb2NrQ2FtZXJhRGV2aWNlKCJpZDEiLCAibXkgY2FtZXJhIik7CkBAIC00
MSw3ICs1MCw3IEBACiAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2Ug
PSByZXNvbHZlOwogICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgY29uc29sZS5sb2coImV2ZW50IDIgdGFraW5nIGEgbG9uZyB0aW1lIik7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5sb2coImV2ZW50IDIgdG9vayB0b28gbG9uZyIpOwogICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0sIDUwMDApOwogICAgICAgICAgICAgdGVzdFJ1
bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQyIiwgIm15IG1pYyIpOwpAQCAtNTEsNiAr
NjAsMTAyIEBACiAgICAgICAgIGFzc2VydF9lcXVhbHMoZGV2aWNlc1swXS5sYWJlbCwgIm15IG1p
YyIpOwogCiAgICAgfSwgIidkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVkIHdoZW4gZGV2aWNlIGxp
c3QgY2hhbmdlcyIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisKKyAg
ICAgICAgYXdhaXQgc2V0dXAodGVzdCk7CisKKyAgICAgICAgbGV0IGV2ZW50Q291bnQgPSAwOwor
ICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gKGV2dCkgPT4gewor
ICAgICAgICAgICAgICAgICsrZXZlbnRDb3VudDsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAg
IH0sIDUwMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g
eworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9u
ZGV2aWNlY2hhbmdlIHRvb2sgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICB9LCA0MDAwKTsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2Nr
TWljcm9waG9uZURldmljZSgiaWQ0IiwgIm1pY3JvcGhvbmUgMyIpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQ1IiwgIm1pY3JvcGhvbmUgNCIpOwor
ICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAxLCAib25lIGV2
ZW50IGZpcmVkIik7CisKKyAgICB9LCAiJ2RldmljZWNoYW5nZScgZXZlbnRzIGZpcmVkIHF1aWNr
bHkgYXJlIGNvYWxlc2NlZCIpOworCisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKworICAgICAgICBhd2FpdCBzZXR1cCh0ZXN0KTsKKworICAgICAgICBhd2FpdCBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBsZXQgdGltZW91dCA9IHNl
dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ3aW5kb3cub25i
bHVyIHRvb2sgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAg
ICAgICB9LCA1MDAwKTsKKworICAgICAgICAgICAgd2luZG93Lm9uYmx1ciA9ICgpID0+IHsKKyAg
ICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
YXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKGRvY3VtZW50Lmhhc0ZvY3VzKCksICJkb2N1bWVudC5oYXNGb2N1cygpIik7CisK
KyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSAoKSA9
PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuaGFzRm9jdXMoKSwgImRl
dmljZWNoYW5nZSBzaG91bGQgb25seSBmaXJlIHdoZW4gdGhlIGRvY3VtZW50IGlzIGZvY3VzZWQg
YW5kIGFjdGl2ZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH07
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKHRydWUpOworICAgICAgICAgICAgfSwgMjAw
KTsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQz
IiwgIm1pY3JvcGhvbmUgMiIpOworICAgICAgICB9KTsKKworICAgIH0sICInZGV2aWNlY2hhbmdl
JyBldmVudCBpcyBub3QgZmlyZWQgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBoYXMgZm9jdXMg
b3IgcGVybWlzc2lvbiB0byBjYXB0dXJlIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKworICAgICAgICBhd2FpdCBzZXR1cCh0ZXN0KTsKKworICAgICAgICBhd2FpdCBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOnRydWUsIHZpZGVvOnRy
dWUgfSkKKyAgICAgICAgICAgIC50aGVuKHMgPT4gc3RyZWFtID0gcyk7CisKKyAgICAgICAgYXdh
aXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbGV0IHRp
bWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi
d2luZG93Lm9uYmx1ciB0b29rIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfSwgNTAwMCk7CisKKyAgICAgICAgICAgIHdpbmRvdy5vbmJsdXIgPSAo
KSA9PiB7CisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShmYWxzZSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShkb2N1bWVudC5oYXNGb2N1cygpLCAiZG9jdW1lbnQuaGFzRm9j
dXMoKSIpOworCisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hh
bmdlID0gKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShkb2N1bWVudC5oYXNG
b2N1cygpLCAiZGV2aWNlY2hhbmdlIHNob3VsZCBmaXJlIHdoZW4gdGhlIGRvY3VtZW50IGlzIG5v
dCBmb2N1c2VkIGJ1dCBjYW4gY2FwdHVyZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja01pY3JvcGhv
bmVEZXZpY2UoImlkMyIsICJtaWNyb3Bob25lIDIiKTsKKyAgICAgICAgfSk7CisKKyAgICB9LCAi
J2RldmljZWNoYW5nZScgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBo
YXMgZm9jdXMgYnV0IGhhcyBwZXJtaXNzaW9uIHRvIGNhcHR1cmUiKTsKKwogICAgIDwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347496</attachid>
            <date>2018-08-20 07:23:36 -0700</date>
            <delta_ts>2018-08-20 09:19:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-188521-20180820072336.patch</filename>
            <type>text/plain</type>
            <size>73715</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiNzdjOGYzMTVjYTAy
MmRmNzIyNDlkNTE3ODRkZjdjYjdmZmU2Ni4uMGM5ZGNhYjU3OGM1YjA1NDk3MDE3NGZjNmExMmRl
NmNlODM3NzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE4LTA4LTE3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdXBkYXRlZCBmYXN0L21lZGlhc3RyZWFtL2Rldmlj
ZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGZvciB0aGUgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlczo6TWVkaWFEZXZpY2VzKTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBhZGRlZCBp
biBhZGRFdmVudExpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzdG9w
KTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBvbiB0aGUgdXNlciBtZWRpYSBjb250cm9sbGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKTogQWRk
IHRoZSBkZXZpY2UgY2hhbmdlIGxpc3RlbmVyIG9ubHkgb25jZSB0aGUgZmlyc3QKKyAgICAgICAg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5oOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNo
YW5nZU9ic2VydmVyKTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcik6IERp
dHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNoYW5nZWQpOiBO
b3RpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci4KKyAgICAgICAgKG5leHRPYnNlcnZlclRv
a2VuKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpyZW1vdmVDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpvYnNl
cnZlck1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjphZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMpOiBDYWxsIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKTogRGl0
dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlSGFzSW5wdXRTdHJl
YW1zKTogRHJpdmUtYnkgZml4LCBjaGVjayB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gc2VlIGlm
IHRoZQorICAgICAgICBkZXZpY2UgaGFzIGlucHV0IHN0cmVhbXMuCisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvQ2FwdHVyZURldmljZXMp
OiBVc2UgbmV3IGJvb2wgcGFyYW1ldGVyCisgICAgICAgIGFkZGVkIHRvIHJlZnJlc2hBdWRpb0Nh
cHR1cmVEZXZpY2VzIHNvIHdlIHdvbid0IHRyaWdnZXIgYSBkZXZpY2UgY2hhbmdlIGV2ZW50IG9u
IHRoZSBmaXJzdCBzY2FuLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKTogQWRkIHBhcmFtLgorICAgICAg
ICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2Vk
KTogVXNlIG5ldyBwYXJhbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMpOiBEb24ndCBuZWVkIHRvIGNh
bGwgY2FwdHVyZURldmljZXNDaGFuZ2VkLAorICAgICAgICBpdCBpcyBkb25lIGluIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OmFkZERldmljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnJlbW92ZURldmljZSk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOiBOZXcsIHVzZWQgYnkgdXBkYXRlZCB0ZXN0Lgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorCiAyMDE4LTA4LTE3ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+IGFuZCBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtKU0NdIEFkZCBHUFJSZWc6OkludmFsaWRHUFJSZWcgYW5kIEZQUlJlZzo6SW52
YWxpZEZQUlJlZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYzkzNmMzOWU4ZDNhNjcxMzk4YWRjODBlZGY3MzFhOGNi
MTk3NmY1Li5hZTI2Y2MxYzA5NzJhYWY0MWRjNmViOTRlN2RlOTljNGJiMzVkNzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTA4LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmlj
ZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzI1MTc4Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCk6IE5vdGlmeSBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnZpZXdJc0JlY29taW5nVmlz
aWJsZSk6IENoYW5nZSBuYW1lIGZyb20KKyAgICAgICAgdmlld0lzQmVjb21pbmdWaXNpYmxlLiBD
YWxsIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCBpZiBhIGNoYW5nZSBoYXBwZW5lZCB3aGVuIG5vdCB2
aXNpYmxlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6d2F0Y2hkb2dUaW1lckZpcmVkKTogQ2xlYXIgbV9wZW5kaW5nRGV2aWNlQ2hhbmdl
RXZlbnQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Ojpwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcik6
IEluaXRpYWxpemUgdGltZXIuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOiBOZXcsIG5vdGlmeSBlYWNoIG1hbmFnZXIuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpiZWdpbk1vbml0b3JpbmdD
YXB0dXJlRGV2aWNlcyk6IENhY2hlIHRoZSBkZXZpY2UgbGlzdCBhbmQgCisgICAgICAgIHJlZ2lz
dGVyIGRldmljZSBjaGFuZ2UgbGlzdGVuZXIgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBBZGQgbGlzdGVu
ZXIsIHRlbGwgcGFnZQorICAgICAgICB0byBzdGFydCBtb25pdG9yaW5nIGRldmljZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJl
bW92ZURldmljZUNoYW5nZU9ic2VydmVyKTogUmVtb3ZlIGxpc3RlbmVyLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCk6IENhbGwgbGlzdGVuZXJzLgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRNb2NrTWVkaWFEZXZpY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhck1vY2tNZWRpYURldmljZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDE4LTA4LTE3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyB3ZWJQYWdlSUQgYW5kIHdl
YkZyYW1lSUQgdG8gTmV0d29ya0xvYWQgZm9yIHNwZWN1bGF0aXZlIGxvYWRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXgg
YmU5MDUxYzkzOTk0ZDViYmMxMGEwZDhhYTY5NDE5YjE3MTRhZWVhYi4uNmU1YTlhYTdmZWM1MDRk
Y2RmZTYxYjQ0MzU3YTQ1MWM3ZWRmNTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJN
ZWRpYVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKQEAgLTUxLDE3
ICs1Miw2IEBAIGlubGluZSBNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZNZWRpYURldmljZXM6
OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fZXZlbnROYW1lcyhldmVudE5hbWVz
KCkpCiB7Ci0gICAgbV9kZXZpY2VDaGFuZ2VkVG9rZW4gPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5hZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oKSB7Ci0KLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9ubHkgZGlz
cGF0Y2ggYW4gZXZlbnQgaWYgdGhlIHVzZXIgaGFzIGJlZW4gZ3JhbnRlZCBhY2Nlc3MgdG8gdGhl
IHR5cGUgb2YKLSAgICAgICAgLy8gZGV2aWNlIHRoYXQgd2FzIGFkZGVkIG9yIHJlbW92ZWQuCi0g
ICAgICAgIGlmICghbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMocmFuZG9tTnVtYmVy
KCkgLyAyKSk7Ci0gICAgfSk7Ci0KICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJl
U3VyZmFjZVR5cGU6Ok1vbml0b3IpID09IHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3IpLCAiTWVkaWFEZXZp
Y2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpNb25pdG9yIGlzIG5vdCBlcXVhbCB0byBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciBh
cyBleHBlY3RlZCIpOwpAQCAtNzQsOCArNjQsMTIgQEAgTWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZp
Y2VzKCkgPSBkZWZhdWx0OwogCiB2b2lkIE1lZGlhRGV2aWNlczo6c3RvcCgpCiB7Ci0gICAgaWYg
KG1fZGV2aWNlQ2hhbmdlZFRva2VuKQotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5yZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKG1fZGV2aWNlQ2hhbmdl
ZFRva2VuKTsKKyAgICBpZiAobV9kZXZpY2VDaGFuZ2VUb2tlbikgeworICAgICAgICBhdXRvKiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBk
b2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBu
dWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQgJiYgY29udHJvbGxlcikKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKG1fZGV2aWNlQ2hhbmdlVG9r
ZW4pOworICAgIH0KIH0KIAogUmVmPE1lZGlhRGV2aWNlcz4gTWVkaWFEZXZpY2VzOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTgxLDYgKzE3NSwyNyBAQCBib29sIE1lZGlhRGV2aWNl
czo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgTWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFtX2xpc3Rlbmlu
Z0ZvckRldmljZUNoYW5nZXMgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFu
Z2VFdmVudCkgeworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBkb2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6
OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBudWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQg
JiYgY29udHJvbGxlcikgeworICAgICAgICAgICAgbV9saXN0ZW5pbmdGb3JEZXZpY2VDaGFuZ2Vz
ID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9kZXZpY2VDaGFuZ2VUb2tlbiA9IGNvbnRyb2xsZXIt
PmFkZERldmljZUNoYW5nZU9ic2VydmVyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
dGhpc10oKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IG1fc2NoZWR1bGVk
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMo
cmFuZG9tTnVtYmVyKCkgLyAyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggMDJk
MWFlZjlkNmYzMTc4NjdhOTdmMTk1YmU5MDYxNDg1OTU0OWNmNS4uMDcyYmExNWQ0OTZlM2E2Yjg3
MmYxMDlhOTYzNTgyZDJmMjAwZDk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDExICs0MSwxMSBAQAogI2luY2x1ZGUgIk1l
ZGlhVHJhY2tDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBNZWRpYURldmljZUluZm87CiBjbGFzcyBNZWRpYVN0cmVhbTsKIApA
QCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhRGV2aWNlcyhEb2N1
bWVudCYpOwogCiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKKyAgICBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgZnJpZW5kIGNsYXNzIEpTTWVkaWFEZXZpY2VzT3duZXI7CiAKQEAgLTEwMSw4ICsxMDIs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQogCiAgICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OkRldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBtX2RldmljZUNoYW5n
ZWRUb2tlbjsKKyAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4g
bV9kZXZpY2VDaGFuZ2VUb2tlbjsKICAgICBjb25zdCBFdmVudE5hbWVzJiBtX2V2ZW50TmFtZXM7
IC8vIE5lZWQgdG8gY2FjaGUgdGhpcyBzbyB3ZSBjYW4gdXNlIGl0IGZyb20gR0MgdGhyZWFkcy4K
KyAgICBib29sIG1fbGlzdGVuaW5nRm9yRGV2aWNlQ2hhbmdlcyB7IGZhbHNlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAppbmRleCAzZTNhZGUxYThjMmJkNWVhNzBjMDI3
NjMyZDc2MGUzYTAxNzM3ZGJmLi5iMmFhNTYwM2Y1NzUxMjdlNWY1YTg2NDZhOWE4NzdlMjE0YTRh
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ2xpZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0OwpAQCAtNDksNiArNTEs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXMoTWVk
aWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZpY2VzRW51bWVyYXRpb25S
ZXF1ZXN0JikgPSAwOwogCisgICAgZW51bSBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuVHlwZSB7
IH07CisgICAgdXNpbmcgRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiA9IE9iamVjdElkZW50aWZp
ZXI8RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGU+OworICAgIHZpcnR1YWwgRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZl
cihEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5Vc2VyTWVkaWFDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAppbmRl
eCAyMjQ5YWJmMjc4NmJkMjIzNWM0MDE4OGM0YWM0NGFhMTg3ZDYyYmY1Li5jZmFjNTk5ZDdmYmUz
NGJkNTA0MDQ4NDkxNjVlNTNmYmIzYTViMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0Vu
dW1lcmF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRp
b25SZXF1ZXN0KE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpOwogCisgICAgVXNlck1l
ZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9ic2Vy
dmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbW92ZURldmljZUNoYW5n
ZU9ic2VydmVyKFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
ICAgICBzdGF0aWMgVXNlck1lZGlhQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxVc2VyTWVkaWFDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJv
bShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KIApAQCAtNzUsNiArNzgsMTYgQEAgaW5saW5l
IHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb25S
ZXF1ZXN0KE1lZGlhRGV2aWMKICAgICBtX2NsaWVudC0+Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVy
YXRpb25SZXF1ZXN0KHJlcXVlc3QpOwogfQogCitpbmxpbmUgVXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNoYW5n
ZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQoreworICAgIHJldHVy
biBtX2NsaWVudC0+YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGTW92ZShvYnNlcnZlcikpOwor
fQorCitpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VP
YnNlcnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gdG9rZW4p
Cit7CisgICAgbV9jbGllbnQtPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKHRva2VuKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggZDBkOTUxMTI4NTQzOWI3MjZmMmQzYjE4YTgzZTgyNzkyOWFi
ZWUxYi4uOGY3YjEyN2UxYzQwNGExY2VhMTliMmNiYWM0YWZjNGM2MGQ0MDQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTQzNCw4ICs0MzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Jlc3Rvcmlu
Z0NhY2hlZFBhZ2UoYm9vbCB2YWx1ZSkgeyBtX2lzUmVzdG9yaW5nQ2FjaGVkUGFnZSA9IHZhbHVl
OyB9CiAgICAgYm9vbCBpc1Jlc3RvcmluZ0NhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lz
UmVzdG9yaW5nQ2FjaGVkUGFnZTsgfQogCi0gICAgdm9pZCBhZGRBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIo
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlv
bnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IGNkMTQ3YTAyYjRjZDdjMGU4MTI3Zjk3YWMw
Mzk4NjVhNGY2NzI4ZWQuLjhhMzliMjkyZjkzOGFjZDQ5MDU5MDJhNDVhYzRhZjhhODc1NTBjYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwyNCArNTAsMTQgQEAgQ2FwdHVyZURl
dmljZSBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21QZXJzaXN0ZW50SUQo
Y29uc3QgU3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6T2JzZXJ2ZXJUb2tlbiBuZXh0T2JzZXJ2ZXJUb2tlbigpCit2b2lkIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VDaGFuZ2VkKCkKIHsKLSAgICBzdGF0aWMgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dFRva2VuID0gMDsKLSAgICByZXR1cm4gKytuZXh0
VG9rZW47Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2smJiBvYnNlcnZlcikKLXsKLSAgICBhdXRvIHRva2VuID0gbmV4dE9i
c2VydmVyVG9rZW4oKTsKLSAgICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2
ZXIpKTsKLSAgICByZXR1cm4gdG9rZW47Ci19CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotdm9pZCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVtb3ZlQ2FwdHVy
ZURldmljZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuIHRva2VuKQotewotICAgIEFTU0VS
VChtX29ic2VydmVycy5jb250YWlucyh0b2tlbikpOwotICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZSh0
b2tlbik7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNh
cHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworICAgIH0pOwogfQogCi0KICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggNDVlZGIzMDBjM2I3MmU4Nzcz
NDVjOWYwMDIzNmZkMDZkMzU0OWNkZS4uNTczMmRlMDNkZWViNGZjMDk4NWExYjFhNzRiY2JiMTQ2
MGZlYzViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjMgKzI5LDE5IEBACiAKICNp
bmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FwdHVyZURldmljZU1hbmFnZXIgeworY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2FwdHVyZURldmljZU1hbmFnZXI+IHsKIHB1YmxpYzoKLSAg
ICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KCk+OwotICAgIHVzaW5nIE9ic2VydmVyVG9rZW4gPSB1aW50MzJfdDsKLSAgICB2aXJ0dWFsIE9i
c2VydmVyVG9rZW4gYWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihDYXB0dXJlRGV2aWNl
Q2hhbmdlZENhbGxiYWNrJiYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDYXB0dXJlRGV2aWNl
Q2hhbmdlZE9ic2VydmVyKE9ic2VydmVyVG9rZW4pOwotCiAgICAgdmlydHVhbCBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
KCk7CiAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChjb25z
dCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCk7Ci0gICAgSGFzaE1hcDxPYnNlcnZlclRva2VuLCBD
YXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrPiBtX29ic2VydmVyczsKKyAgICB2b2lkIGRldmlj
ZUNoYW5nZWQoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKaW5kZXggOTUyMTE5Y2NhYjMxOWFmYzZmMWEzMzllMjgxMmUwZjZiOTU2NGRhOS4uOGE0
NjA5YTJkMjY0NzQxMDY4OWJmNDAyYTJjMWQ2MzQ2MTJjN2ZkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKQEAgLTI0NiwxMCArMjQ2LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAg
ICB9CiAKICAgICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERp
c3RhbmNlKTsKLSAgICAgICAgaWYgKHdpZHRoQ29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgewot
ICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICAg
ICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUo
KS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
KTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7
CisgICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5n
ZShzaXplKCkud2lkdGgoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodDsKQEAgLTI2
MSwxMCArMjU5LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRG
cmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAgICB9CiAKICAgICAg
ICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKLSAg
ICAgICAgaWYgKGhlaWdodENvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHQg
PSBoZWlnaHRDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkuaGVpZ2h0
KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOwotICAg
ICAgICB9CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7CisgICAg
ICAgIGhlaWdodCA9IGhlaWdodENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNp
emUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0ludCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKQEAg
LTI3NiwxMCArMjcyLDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVB
bmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAgICB9CiAKICAg
ICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsK
LSAgICAgICAgaWYgKGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCk7Ci0gICAgICAgICAg
ICBmcmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5n
ZSh0aGlzLT5mcmFtZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFu
Z2VNYXgoKS5hc0RvdWJsZSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFi
aWxpdGllcy5mcmFtZVJhdGUoKTsKKyAgICAgICAgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3Ry
YWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2UodGhpcy0+ZnJhbWVSYXRlKCksIHJhbmdlLnJh
bmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUpOwogICAgIH0KIAog
ICAgIC8vIEVhY2ggb2YgdGhlIG5vbi1udWxsIHZhbHVlcyBpcyBzdXBwb3J0ZWQgaW5kaXZpZHVh
bGx5LCBzZWUgaWYgdGhleSBhbGwgY2FuIGJlIGFwcGxpZWQgYXQgdGhlIHNhbWUgdGltZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggMzg4NmZmODc1Y2U4OWY1YzEwOGM0
MzdiYjljYWEyZjRkN2YxNjAyYS4uZmZkNTFkNGU0NmQ1ZThhYWEyYTIzYTA2MmFhMTI0Zjg1MmYz
ZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDEyICs1Myw2
IEBAIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKiYgbWVkaWFTdHJlYW1DZW50ZXJP
dmVycmlkZSgpCiAgICAgcmV0dXJuIG92ZXJyaWRlOwogfQogCi1zdGF0aWMgSGFzaE1hcDx1bnNp
Z25lZCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiYgb2JzZXJ2ZXJNYXAoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+
PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkKIHsKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyKiBvdmVycmlkZSA9IG1lZGlhU3RyZWFtQ2VudGVyT3ZlcnJpZGUoKTsK
QEAgLTE5OSwyNSArMTkzLDE4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBpZCwKICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciB9OwogfQogCi1SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNl
cnZlcikKLXsKLSAgICBzdGF0aWMgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIG5leHRUb2tl
biA9IDA7Ci0gICAgb2JzZXJ2ZXJNYXAoKS5zZXQoKytuZXh0VG9rZW4sIFdURk1vdmUob2JzZXJ2
ZXIpKTsKLSAgICByZXR1cm4gbmV4dFRva2VuOwotfQotCi12b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoRGV2aWNlc0NoYW5nZWRPYnNl
cnZlclRva2VuIHRva2VuKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQogewot
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG9ic2VydmVyTWFwKCkucmVtb3ZlKHRva2VuKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2RldmljZUNoYW5nZWRPYnNlcnZlcik7CisgICAgbV9k
ZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEZNb3ZlKG9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogewotICAgIC8v
IENvcHkgdGhlIGhhc2ggbWFwIGJlY2F1c2UgdGhlIG9ic2VydmVyIGNhbGxiYWNrIG1heSBjYWxs
IGJhY2sgaW4gYW5kIG1vZGlmeSB0aGUgbWFwLgotICAgIGF1dG8gY2FsbGJhY2tzID0gb2JzZXJ2
ZXJNYXAoKTsKLSAgICBmb3IgKGF1dG8mIGl0IDogY2FsbGJhY2tzKQotICAgICAgICBpdC52YWx1
ZSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fZGV2aWNlQ2hhbmdl
ZE9ic2VydmVyKQorICAgICAgICBtX2RldmljZUNoYW5nZWRPYnNlcnZlcigpOwogfQogCiB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFZh
bGlkQ29uc3RyYWludHNIYW5kbGVyJiYgdmFsaWRIYW5kbGVyLCBJbnZhbGlkQ29uc3RyYWludHNI
YW5kbGVyJiYgaW52YWxpZEhhbmRsZXIsIGNvbnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgcmVxdWVz
dCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCmluZGV4IGVmN2IzY2ZjZDkxNmVkY2NhZTYyMGU0NDIxZjhjMGJhYmU4ZmUzZWMu
LmQ1NGFlOGU3ZmE1N2QzMjU3MWUwNzMwY2Q2Mjk3NzU0ODhkZmNmNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg1LDIyICs4NSwyMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlV2l0aFVuaXF1ZUlEKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAK
LSAgICB1c2luZyBEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gPSB1bnNpZ25lZDsKLSAgICBE
ZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2Vy
dmVyKERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
ICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKGJvb2wsIGJvb2wpOwogCisgICAgdm9p
ZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIoKTsKIAotICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Ci0K
ICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKIAogICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyKiBtX2F1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIgeyBudWxscHRyIH07CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fdmlk
ZW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKKworICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX2RldmljZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggMzJlNzBlMTZkY2EzMDZmNWZkNzkwZDJlMzQ1MTU3ODFmNzc3NmY0ZS4uZjYx
ZDhkZmFmNjIzYjY0MDBlZDg1NDdjYzc3OGQ2ZjU4ZDMzYzkzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUgIkFW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KICNp
bmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0x
NDEsOCArMTQyLDcgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKTsKICAgICBtX2RldmljZXMgPSBXVEZNb3Zl
KG5ld0RldmljZXMpOwogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZh
bHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpp
bmRleCBjMDExYjI2ZTY4NmIwNWMxZmEwYjY5YTBkOTFkN2NmMGNhNjNmMzQwLi4wZWZjOTJhMGZl
ZTkwMmFkOTY4OWU2Y2VhY2M1NWE2NTcyZjRmYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE3OSw5ICsxNzksNyBAQCB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygpCiB2b2lkIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCgpCiB7CiAgICAgcmVmcmVzaENhcHR1cmVEZXZpY2Vz
KCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMudmFsdWVzKCkpCi0g
ICAgICAgIG9ic2VydmVyKCk7CisgICAgZGV2aWNlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2VUeXBl
ZGVmKiBkZXZpY2UpCkBAIC0yMDAsOCArMTk4LDcgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
LnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTQxM2E4Zjg2NzIyMjA0ZTRjNDJmYWU2ZWVkYjMwNmE1
MmY1NTFhOC4uMTExMWVhYjAzMjBmNDFiZTE2YjMwOGZiNzA4NDM0NDNiZWY0ZTk0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUg
PEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTY0LDEwICs2NSwxNyBAQCBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJl
RGV2aWNlV2l0aFBlcgogc3RhdGljIGJvb2wgZGV2aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2Jq
ZWN0SUQgZGV2aWNlSUQpCiB7CiAgICAgVUludDMyIGRhdGFTaXplID0gMDsKLSAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVh
bXMsIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlF
bGVtZW50TWFzdGVyIH07CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9
IHsga0F1ZGlvRGV2aWNlUHJvcGVydHlTdHJlYW1Db25maWd1cmF0aW9uLCBrQXVkaW9EZXZpY2VQ
cm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owog
ICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGFTaXplKGRldmljZUlELCAm
YWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplKTsKIAotICAgIHJldHVybiAhZXJyICYmIGRh
dGFTaXplOworICAgIGlmIChlcnIgfHwgIWRhdGFTaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGJ1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0
PigoQXVkaW9CdWZmZXJMaXN0KikgOjpvcGVyYXRvciBuZXcgKGRhdGFTaXplKSk7CisgICAgbWVt
c2V0KGJ1ZmZlckxpc3QuZ2V0KCksIDAsIGRhdGFTaXplKTsKKyAgICBlcnIgPSBBdWRpb09iamVj
dEdldFByb3BlcnR5RGF0YShkZXZpY2VJRCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6
ZSwgYnVmZmVyTGlzdC5nZXQoKSk7CisKKyAgICByZXR1cm4gIWVyciAmJiBidWZmZXJMaXN0LT5t
TnVtYmVyQnVmZmVyczsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZENhcHR1cmVEZXZpY2UoY29u
c3QgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSYgZGV2aWNlKQpAQCAtODEsNyArODksNyBAQCBWZWN0
b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojpjb3JlQXVkaW9DYXB0dXJlRAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICBy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgICAgICByZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyhEb05vdE5vdGlmeSk7CiAKICAgICAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVj
dFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9
OwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihrQXVk
aW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCBkZXZpY2VzQ2hhbmdlZCwgdGhpcyk7CkBA
IC0xMDIsNyArMTEwLDcgQEAgc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvRGUKIH0KIAogCi12b2lkIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygp
Cit2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyhOb3RpZnlJZkRldmljZXNIYXZlQ2hhbmdlZCBub3RpZnkpCiB7CiAgICAgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURl
dmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3Bl
cnR5RWxlbWVudE1hc3RlciB9OwogICAgIFVJbnQzMiBkYXRhU2l6ZSA9IDA7CkBAIC0xNTYsMTMg
KzE2NCwxMyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVk
aW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmlj
ZSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGlmIChub3RpZnkgPT0gTm90aWZ5KQorICAg
ICAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9CiAKIE9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1
ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgc3RhdGlj
X2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlm
eSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKaW5kZXggOGMyOGU4Mjc5ODRjYWZmNDg2YTQ1NTQxOTA1NTEwMzc1YTQ1OTAy
ZC4uY2Y0ODI3NjQxNGIyNDJhYWZhNDg2ZDkyNTAzNzVjODgxNGNjMWI5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTUsOCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50
MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCopOwogICAgIFZlY3Rv
cjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsKIAot
ICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICBlbnVtIE5vdGlmeUlm
RGV2aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05vdE5vdGlmeSB9OworICAgIHZvaWQgcmVm
cmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5SWZEZXZpY2VzSGF2ZUNoYW5nZWQpOwogCiAg
ICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fZGV2aWNlczsKICAgICBWZWN0b3I8Q29yZUF1ZGlv
Q2FwdHVyZURldmljZT4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
aW5kZXggMDg3NTQ5N2ExZWZhMTEwNDUzZjhlMmQ2ZTUyM2RhYjM2MTdjOTRhZi4uZWM0NDFlZmQ3
NWU5Mzg3Njc2NjU1YmQwMjVkOTM3YjUzODc3MzdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk3
LDYgKzk3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlQ2FwdHVyZURl
dmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpCiB7CiAgICAgc2V0RGV2aWNlcyhkZWZhdWx0RGV2aWNl
cygpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJl
RGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmIG5ld01vY2tEZXZpY2VzKQpAQCAtMTE1
LDYgKzExNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoVmVj
dG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNlCiAgICAgICAgIG1hcC5hZGQoZGV2
aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKICAgICAgICAgY3JlYXRlQ2FwdHVyZURldmljZShk
ZXZpY2UpOwogICAgIH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQpAQCAtMTIyLDYg
KzEyNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShjb25zdCBN
b2NrTWVkaWFEZXZpY2UmIGRldmljZSkKICAgICBkZXZpY2VzKCkuYXBwZW5kKGRldmljZSk7CiAg
ICAgZGV2aWNlTWFwKCkuc2V0KGRldmljZS5wZXJzaXN0ZW50SWQsIGRldmljZSk7CiAgICAgY3Jl
YXRlQ2FwdHVyZURldmljZShkZXZpY2UpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQp
CkBAIC0xNDAsNiArMTQzLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3Zl
RGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQogICAgIH0pOwogCiAgICAgbWFwLnJl
bW92ZShpdGVyYXRvcik7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVu
dElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGY5MWViZTBmZTg1NDQxMTRhNjYyYzc2ZTQy
YWZjYTdhNzAwZWRhYy4uZGI2ODgyMWUzMWQyY2UyN2Q4YmUxOGRmZDU3ZTA2ZmUzMDU2YTM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTUsMTkgKzU1LDE2IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
RW5hYmxlZChib29sCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzKFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiYgbmV3TW9ja0RldmljZXMpCiB7CiAgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoV1RGTW92ZShuZXdNb2NrRGV2aWNlcykp
OwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2
aWNlJiBkZXZpY2UpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShk
ZXZpY2UpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UoY29uc3QgU3Ry
aW5nJiBwZXJzaXN0ZW50SWQpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZURldmljZShwZXJzaXN0ZW50SWQpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZWUzNzAzOWQ5NWFmNjkwOTkyOGZkMDI0ZWY5Mjg1NGEzMmVjMTNi
Ni4uNzFhNGVkZDlhNzlmMTgxZDA3ZmE2NzUyZGVjMDE2OWU3MjIxOWRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgiCisj
aW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblRpbWVsaW5lLmgi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBdWRpb1Nl
c3Npb24uaCIKQEAgLTQzMzgsNiArNDMzOSwyNCBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZVZp
c2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRl
KTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUoYm9vbCBp
c0ZvY3VzZWRBbmRBY3RpdmUpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gZm9jdXNlZEFjdGl2ZVdpbmRvdyA9IHsgQWN0aXZpdHlTdGF0ZTo6
SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9OworCisgICAgYXV0byog
ZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgcGFnZSA9ICpkb2N1bWVu
dC0+cGFnZSgpOworICAgIGF1dG8gc3RhdGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKKworICAg
IGlmICghaXNGb2N1c2VkQW5kQWN0aXZlKQorICAgICAgICBzdGF0ZSAtPSBmb2N1c2VkQWN0aXZl
V2luZG93OworICAgIGVsc2UKKyAgICAgICAgc3RhdGUgfD0gZm9jdXNlZEFjdGl2ZVdpbmRvdzsK
KworICAgIHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7Cit9CisKICNpZiBFTkFCTEUoV0VC
X1JUQykKIHZvaWQgSW50ZXJuYWxzOjpzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29s
IGFsbG93ZWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBkMGQyODc5Y2U2
ZjY3Mzc5NDVkNTczNzkxNDdiNjM3NmQzNDQ2NDZmLi5lMTE4MmRlNTRkODZlNTRmOTkxMTI5NmI3
NmQzZDE1MzcxMGZkM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTY0MSw2
ICs2NDEsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0UGFnZVZpc2liaWxpdHko
Ym9vbCBpc1Zpc2libGUpOworICAgIHZvaWQgc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShib29s
KTsKKwogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNv
ZGVyQWxsb3dlZChib29sIGFsbG93ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IDAxMTQ4Yjk4ZDliMGY4YmZiNDU0YTdkNzQxMWE2ZjZmNjRjODgyMGYuLjkxOWJiZGFm
MmQwYWE3MWFkY2E3OTk3OWNkYzhmZWMyMGMyZWFmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTYwMyw2ICs2MDMsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsK
ICAgICBbQ29uZGl0aW9uYWw9V0VCR0xdIHZvaWQgZmFpbE5leHRHUFVTdGF0dXNDaGVjayhXZWJH
TFJlbmRlcmluZ0NvbnRleHQgY29udGV4dCk7CiAKICAgICB2b2lkIHNldFBhZ2VWaXNpYmlsaXR5
KGJvb2xlYW4gaXNWaXNpYmxlKTsKKyAgICB2b2lkIHNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUo
Ym9vbGVhbiBpc0ZvY3VzZWQpOwogCiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHZvaWQgc2V0
SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbGVhbiBhbGxvd2VkKTsKICAgICBbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gdm9pZCBhcHBseVJvdGF0aW9uRm9yT3V0Z29pbmdWaWRlb1NvdXJjZXMo
UlRDUGVlckNvbm5lY3Rpb24gY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCBhNzgyYmFhYzlkNDViYjNjOWQwYjg5OTI2MjJmYWE2MjUyYWEx
ODRkLi4wOWU0NjRmY2Q3MTYwYjJlZThmZTJjOTMzNjIwMjZlYjRiMzgwZDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTQxOSw2ICs0MTksNyBAQCBkZWYg
aGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvblJlY3Qn
OiBbJyJFZGl0b3JTdGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJL
aXQ6OkRldmljZUFjY2Vzc1N0YXRlJzogWyciVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRy
ZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25T
dGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQnOiBbJyJXZWJFdmVu
dC5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDNjMDcyOTVm
MTA1M2ZjMTVkY2M4ODQ0NTYzMjkwNWI4YzNmY2I5NmIuLjAyYjJhMjMxZTY3OTYzODJhYTFhNDAw
YTQ5ZTc4MDE0Yjg2ZWZjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJB
UElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCisjaW5jbHVkZSAi
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgpAQCAtNzcsNiArNzgsMTUgQEAgdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c3RvcENhcHR1cmUoKQogICAgIG1fcGFn
ZS5zdG9wTWVkaWFDYXB0dXJlKCk7CiB9CiAKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCit7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICAvLyBGSVhNRTogYSBwYWdlIHdpdGggcGVyc2lzdGVudCBhY2Nlc3Mg
c2hvdWxkIGFsd2F5cyBnZXQgZGV2aWNlIGNoYW5nZSBub3RpZmljYXRpb25zLgorICAgIGF1dG8g
YWNjZXNzU3RhdGUgPSBtX2dyYW50ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgPyBEZXZpY2VBY2Nlc3NT
dGF0ZTo6Tm9BY2Nlc3MgOiBEZXZpY2VBY2Nlc3NTdGF0ZTo6U2Vzc2lvbkFjY2VzczsKKyAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2VzQ2hh
bmdlZChhY2Nlc3NTdGF0ZSksIG1fcGFnZS5wYWdlSUQoKSk7CisjZW5kaWYKK30KKwogdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2xlYXJDYWNoZWRTdGF0ZSgp
CiB7CiAgICAgaW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0cygpOwpAQCAtNDM0LDcgKzQ0NCw3IEBA
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVTdGF0
ZUNoYW5nZWQoTWVkaWFQcm9kdWNlcjo6CiAjZW5kaWYKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc1ByZWdyYW50ZWRSZXF1ZXN0cygpCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp2aWV3SXNCZWNvbWlu
Z1Zpc2libGUoKQogewogICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcHJlZ3JhbnRlZFJlcXVl
c3RzKQogICAgICAgICByZXF1ZXN0LT5hbGxvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgKaW5kZXggNTczYWYwNGQ3MWI4NTM5NTc1MTI0OTlkOTJjNDMwNjQ4YmJkMTc5Zi4uOGQz
YzA5NjczYzcwYzA4NmMwYjJiODhlZGViZjViMDViZGFmNmQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmICB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFt
UmVxdWVzdCYpOwogCiAgICAgdm9pZCByZXNldEFjY2Vzcyh1aW50NjRfdCBtYWluRnJhbWVJRCk7
Ci0gICAgdm9pZCBwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKCk7CisgICAgdm9pZCB2aWV3SXNC
ZWNvbWluZ1Zpc2libGUoKTsKIAogICAgIHZvaWQgdXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1
aW50NjRfdCwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYmIGF1ZGlvRGV2aWNlLCBXZWJDb3JlOjpD
YXB0dXJlRGV2aWNlJiYgdmlkZW9EZXZpY2UpOwogICAgIHZvaWQgdXNlck1lZGlhQWNjZXNzV2Fz
RGVuaWVkKHVpbnQ2NF90LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVk
aWFBY2Nlc3NEZW5pYWxSZWFzb24pOwpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY2hlZHVsZU5leHRSZWplY3Rpb24oKTsKICAgICB2b2lkIHJlamVjdGlvblRpbWVyRmlyZWQo
KTsKICAgICB2b2lkIGNsZWFyQ2FjaGVkU3RhdGUoKTsKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2Vz
Q2hhbmdlZCgpOwogCiAgICAgdm9pZCBjYXB0dXJlU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBvbGRTdGF0ZSwgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZUZsYWdzIG5ld1N0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDdhZTY5MDk3NDZiZmQ3
ODkzZDFjZTlmMzA5ODg0ZGQzMTYzYmM0YzIuLjcwMjVkNGQ5OTkxYzU5YmI5MTAwMjVhM2Y0ODBh
YTUyYmIwYzM5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zNSw2
ICszNiw4IEBAIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgYXVkaW9FeHRlbnNpb25QYXRoIHsg
ImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9uZSJfcyB9CiBzdGF0aWMgY29uc3QgQVNDSUlMaXRl
cmFsIHZpZGVvRXh0ZW5zaW9uUGF0aCB7ICJjb20uYXBwbGUud2Via2l0LmNhbWVyYSJfcyB9Owog
I2VuZGlmCiAKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGRldmljZUNoYW5nZURlYm91bmNlVGltZXJJ
bnRlcnZhbCB7IDIwMF9tcyB9OworCiBjbGFzcyBQcm9jZXNzU3RhdGUgewogcHVibGljOgogICAg
IFByb2Nlc3NTdGF0ZSgpIHsgfQpAQCAtMTAxLDYgKzEwNCwxMSBAQCBVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlciYgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpCiAgICAgcmV0dXJu
IG1hbmFnZXI7CiB9CiAKK1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlcigpCisgICAgOiBtX2RlYm91bmNlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCkKK3sKK30KKwog
dm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHBy
b3h5KQogewogICAgIHByb2Nlc3NTdGF0ZShwcm94eS5wYWdlKCkucHJvY2VzcygpKS5hZGRSZXF1
ZXN0TWFuYWdlcihwcm94eSk7CkBAIC0yNTQsNiArMjYyLDU4IEBAIHZvaWQgVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXI6OnNldENhcHR1cmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICB9CiB9CiAK
K3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCit7
CisgICAgYXV0byYgbWFwID0gc3RhdGVNYXAoKTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbWFw
KSB7CisgICAgICAgIGF1dG8qIHByb2Nlc3MgPSBzdGF0ZS5rZXk7CisgICAgICAgIGZvciAoYXV0
byYgbWFuYWdlciA6IHN0YXRlLnZhbHVlLT5tYW5hZ2VycygpKSB7CisgICAgICAgICAgICBpZiAo
bWFwLmZpbmQocHJvY2VzcykgPT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgbWFuYWdlci0+Y2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmJlZ2luTW9uaXRvcmlu
Z0NhcHR1cmVEZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW3RoaXNdIHsKKyAgICAgICAgbV9jYXB0
dXJlRGV2aWNlcyA9IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOworCisgICAgICAgIFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIo
W3RoaXNdKCkgeworICAgICAgICAgICAgYXV0byBvbGREZXZpY2VzID0gV1RGTW92ZShtX2NhcHR1
cmVEZXZpY2VzKTsKKyAgICAgICAgICAgIG1fY2FwdHVyZURldmljZXMgPSBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0cmVhbURldmljZXMo
KTsKKworICAgICAgICAgICAgaWYgKG1fY2FwdHVyZURldmljZXMuc2l6ZSgpID09IG9sZERldmlj
ZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBoYXZlQ2hhbmdlcyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGZvciAoYXV0byAmbmV3RGV2aWNlIDogbV9jYXB0dXJlRGV2aWNlcykg
eworICAgICAgICAgICAgICAgICAgICBpZiAobmV3RGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgJiYgbmV3RGV2aWNlLnR5cGUoKSAhPSBX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpbmRl
eCA9IG9sZERldmljZXMuZmluZE1hdGNoaW5nKFsmbmV3RGV2aWNlXSAoYXV0byYgb2xkRGV2aWNl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3RGV2aWNlLnBlcnNpc3RlbnRJ
ZCgpID09IG9sZERldmljZS5wZXJzaXN0ZW50SWQoKSAmJiBuZXdEZXZpY2UuZW5hYmxlZCgpICE9
IG9sZERldmljZS5lbmFibGVkKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaGF2ZUNoYW5nZXMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoIWhhdmVDaGFuZ2VzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdoZW4gYSBkZXZpY2Ugd2l0aCBjYW1lcmEgYW5k
IG1pY3JvcGhvbmUgaXMgYXR0YWNoZWQgb3IgZGV0YWNoZWQsIHRoZSBDYXB0dXJlRGV2aWNlIG5v
dGlmaWNhdGlvbiBmb3IKKyAgICAgICAgICAgIC8vIHRoZSBkaWZmZXJlbnQgZGV2aWNlcyB3b24n
dCBhcnJpdmUgYXQgdGhlIHNhbWUgdGltZSBzbyBkZWxheSBhIGJpdCBzbyB3ZSBjYW4gY29hbGVz
Y2UgdGhlIGNhbGxiYWNrcy4KKyAgICAgICAgICAgIGlmICghbV9kZWJvdW5jZVRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgICAgICAgICAgbV9kZWJvdW5jZVRpbWVyLnN0YXJ0T25lU2hvdChkZXZp
Y2VDaGFuZ2VEZWJvdW5jZVRpbWVySW50ZXJ2YWwpOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggODE5OThiNGFjYjdkZGY5
MWQ1MGE4M2M3OWQyZTVjYWMzZDE4NzQ3My4uYWUxNmViZWQ4NWQ4MGJmZGNhYzA1ZWM2YjgwYzc2
NDNiOGVmNTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0yMSw2ICsyMSw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUg
IlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DYXB0dXJlRGV2aWNlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTMxLDYgKzMzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBzaW5nbGV0b24oKTsKIAorICAgIFVzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyKCk7CisKICAgICB2b2lkIGFkZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CiAgICAg
dm9pZCByZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOwogCkBAIC00NSw3ICs0OSwxMyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGRlbnlOZXh0VXNlck1lZGlhUmVxdWVzdCgpIHsgbV9kZW55TmV4
dFJlcXVlc3QgPSB0cnVlOyB9CiAKKyAgICB2b2lkIGJlZ2luTW9uaXRvcmluZ0NhcHR1cmVEZXZp
Y2VzKCk7CisKIHByaXZhdGU6CisgICAgdm9pZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiBtX2NhcHR1cmVEZXZpY2VzOworICAg
IFJ1bkxvb3A6OlRpbWVyPFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyPiBtX2RlYm91bmNlVGltZXI7
CiAgICAgYm9vbCBtX2NhcHR1cmVFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9kZW55TmV4
dFJlcXVlc3QgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDU0N2I3MjEzZDI3MGRhMWNiNmFkZjdhZDAxMWQ4Yjg5YTA1OGJlNGMuLmZl
MzE1Nzk2ZjJhOTIwNjk5MWY3YTAxY2Q0ZmQ5NjM2OTBiMTYxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzg0MCw3ICszODQwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKQogdm9pZCBX
ZWJQYWdlUHJveHk6OnZpZXdJc0JlY29taW5nVmlzaWJsZSgpCiB7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5wcm9jZXNz
UHJlZ3JhbnRlZFJlcXVlc3RzKCk7CisgICAgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCkudmlld0lzQmVjb21pbmdWaXNpYmxlKCk7CiAjZW5kaWYKIH0KIApAQCAtNjQ1Niw2ICs2
NDU2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFt
ZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QKICNlbmRpZgogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6YmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKQoreworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmJl
Z2luTW9uaXRvcmluZ0NhcHR1cmVEZXZpY2VzKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyVXNlck1lZGlhU3RhdGUoKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGZlNDNjMzhkMGZmN2E4
YzFmYTQ5ZDhlOGU4M2IwY2U2YWJlZDI0NDIuLmZkMzkyYmQ0NGJjZjhmZWI2OGYwMmNiZGRjNWJj
NzA5MDhjNTBkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NDg3LDYgKzE0ODcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCByZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50
T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1S
ZXF1ZXN0Jik7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbkRhdGEpOworICAgIHZvaWQg
YmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKIAogICAgIHZvaWQgcnVuTW9kYWwoKTsK
ICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGIzMWY1ZjBiZTM0Y2M5NDg5MjdhOWIxMzZkMGNjMzJjNTFiYzlj
MmEuLjZkMjlhOWZkMmU0NjNkZjlhMGYwNmUwMzQ3ZmFjNjQ1MWI1YzA4NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4Nyw2
ICsyODcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgTWVkaWFTdGVhbSBt
ZXNzYWdlcwogICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3Qg
dXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IHJlcXVlc3QpCiAgICAgRW51bWVyYXRl
TWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW5JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExl
dmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKQorICAgIEJlZ2luTW9uaXRvcmluZ0NhcHR1cmVE
ZXZpY2VzKCkKICNlbmRpZgogCiAgICAgIyBOb3RpZmljYXRpb24gbWVzc2FnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhNzFkNTM5
ODc0Y2I3NjkzYWRmY2ZjYjJhNzExNTUzYmJkYmUxODMuLmZhYWI0ZDVkMDgzNmY3NzU3MTFiNzc0
YWJmNDkzOGNkZjRmODA0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsNyBAQAogCQkwNzRFNzVGRTFERjIyMTE5MDBE
MzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NUZCMURGMUZEMTMwMEQzMThFQyAvKiBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5oICovOyB9OwogCQkwNzRFNzYwMjFERjcwN0JFMDBEMzE4RUMg
LyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzYwMDFERjcwNzVEMDBEMzE4RUMgLyogTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAgKi87IH07CiAJCTA3NkU4ODRFMUExM0NBREYw
MDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNv
bnRleHRNZW51Q2xpZW50LmggKi87IH07CisJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYyRSAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAvKiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKIAkJMDdBNUVCQkIxQzdCQTQz
RTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJh
bWVIYW5kbGVSZWYuY3BwICovOyB9OwogCQkwN0E1RUJCQzFDN0JBNDNFMDBCOUNBNjkgLyogV0tG
cmFtZUhhbmRsZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRTk3RDc0RDIw
MEU5MDA0MDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2Fm
ZUJyb3dzaW5nU1BJLmggKi87IH07CkBAIC05NDQ3LDYgKzk0NDgsNyBAQAogCQkJCUNENDkxQjEz
MUU3MzQ4MjEwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDQ5MUIxODFFNzM1MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFDMTdC
QkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYyRSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBM0NDMThCMTlCMDY0MEYwMEQx
NEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NEU3NUZFMURGMjIxMTkwMEQz
MThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IDljY2FjZTA1
NzdjN2ZiYzhmZjU3MDZiZGZhZDkzZTQzN2NjNmUxZjMuLjVmZWY2MGVlYzQ4MDkwOWFkYmZmOTgz
MGYzZjQ3MjM0MGI0MmViMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDYgKzQwLDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29u
c3RleHByIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBmb2N1c2VkQWN0
aXZlV2luZG93ID0geyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisKIHN0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZVJlcXVlc3RJRCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVJlcXVlc3RJRCA9
IDE7CkBAIC01Myw2ICs1NSw4IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmIHBhCiAKIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcigpCiB7CisgICAgaWYgKG1fbW9uaXRvcmluZ0FjdGl2aXR5U3RhdGVDaGFuZ2UpCisgICAg
ICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5yZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIo
KnRoaXMpOwogICAgIGZvciAoYXV0byYgc2FuZGJveEV4dGVuc2lvbiA6IG1fdXNlck1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMpCiAgICAgICAgIHNhbmRib3hFeHRlbnNpb24udmFsdWUtPnJl
dm9rZSgpOwogfQpAQCAtMjIyLDYgKzIyNiw3NyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoYwog
ICAgIH0KIH0KIAorVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCit7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudDo6RGV2
aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGU+KCk7CisgICAgbV9kZXZpY2VDaGFuZ2VPYnNlcnZl
ck1hcC5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShvYnNlcnZlcikpOworCisgICAgaWYgKCFtX21v
bml0b3JpbmdEZXZpY2VDaGFuZ2UpIHsKKyAgICAgICAgbV9tb25pdG9yaW5nRGV2aWNlQ2hhbmdl
ID0gdHJ1ZTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmVn
aW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKSk7CisgICAgfQorICAgIHJldHVybiBpZGVudGlm
aWVyOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3Zl
RGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZl
clRva2VuIHRva2VuKQoreworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fZGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXJNYXAucmVtb3ZlKHRva2VuKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdh
c1JlbW92ZWQpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
Y2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlIGFjY2Vzc1N0YXRlKQorewor
ICAgIC8vIFdoZW4gbmV3IG1lZGlhIGlucHV0IGFuZC9vciBvdXRwdXQgZGV2aWNlcyBhcmUgbWFk
ZSBhdmFpbGFibGUsIG9yIGFueSBhdmFpbGFibGUgaW5wdXQgYW5kL29yCisgICAgLy8gb3V0cHV0
IGRldmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlLCB0aGUgVXNlciBBZ2VudCBNVVNUIHJ1biB0aGUg
Zm9sbG93aW5nIHN0ZXBzIGluIGJyb3dzaW5nCisgICAgLy8gY29udGV4dHMgd2hlcmUgYXQgbGVh
c3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEgYXJlIG1ldCwgYnV0IGluIG5vIG90aGVy
IGNvbnRleHRzOgorCisgICAgLy8gKiBUaGUgcGVybWlzc2lvbiBzdGF0ZSBvZiB0aGUgImRldmlj
ZS1pbmZvIiBwZXJtaXNzaW9uIGlzICJncmFudGVkIiwKKyAgICAvLyAqIGFueSBvZiB0aGUgaW5w
dXQgZGV2aWNlcyBhcmUgYXR0YWNoZWQgdG8gYW4gYWN0aXZlIE1lZGlhU3RyZWFtIGluIHRoZSBi
cm93c2luZyBjb250ZXh0LCBvcgorICAgIC8vICogdGhlIGFjdGl2ZSBkb2N1bWVudCBpcyBmdWxs
eSBhY3RpdmUgYW5kIGhhcyBmb2N1cy4KKworICAgIGJvb2wgaXNBY3RpdmUgPSAobV9wYWdlLmNv
cmVQYWdlKCktPmFjdGl2aXR5U3RhdGUoKSAmIGZvY3VzZWRBY3RpdmVXaW5kb3cpID09IGZvY3Vz
ZWRBY3RpdmVXaW5kb3c7CisgICAgaWYgKCFpc0FjdGl2ZSAmJiBhY2Nlc3NTdGF0ZSA9PSBEZXZp
Y2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nlc3MpIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSkgeworICAg
ICAgICAgICAgaWYgKCFtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdlKSB7CisgICAgICAg
ICAgICAgICAgbV9tb25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNoYW5nZSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
cigqdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3BlbmRpbmdEZXZpY2VDaGFu
Z2VFdmVudCA9IHRydWU7CisgICAgICAgICAgICBtX2FjY2Vzc1N0YXRlV2hlbkRldmljZXNDaGFu
Z2VkID0gYWNjZXNzU3RhdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllcnMgPSBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwLmtleXMoKTsK
KyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykgeworICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5maW5kKGlkZW50aWZpZXIpOwor
ICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcC5lbmQoKSkK
KyAgICAgICAgICAgIChpdGVyYXRvci0+dmFsdWUpKCk7CisgICAgfQorfQorCit2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpCit7
CisgICAgaWYgKChuZXdBY3Rpdml0eVN0YXRlICYgZm9jdXNlZEFjdGl2ZVdpbmRvdykgIT0gZm9j
dXNlZEFjdGl2ZVdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9tb25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNo
YW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX21vbml0b3JpbmdBY3Rpdml0
eVN0YXRlQ2hhbmdlID0gZmFsc2U7CisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5yZW1vdmVB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoKnRoaXMpOworICAgIH0pOworCisgICAgaWYgKCFt
X3BlbmRpbmdEZXZpY2VDaGFuZ2VFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5k
aW5nRGV2aWNlQ2hhbmdlRXZlbnQgPSBmYWxzZTsKKyAgICBhdXRvIGFjY2Vzc1N0YXRlID0gbV9h
Y2Nlc3NTdGF0ZVdoZW5EZXZpY2VzQ2hhbmdlZDsKKyAgICBtX2FjY2Vzc1N0YXRlV2hlbkRldmlj
ZXNDaGFuZ2VkID0gRGV2aWNlQWNjZXNzU3RhdGU6Ok5vQWNjZXNzOworICAgIGNhcHR1cmVEZXZp
Y2VzQ2hhbmdlZChhY2Nlc3NTdGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBhN2VmYzhhZGVhYWVlNTA5MDVhYzQwYTc4NTI1NWU4
ZjZmOGI0MTQwLi41NzQ2NzEyYzA2Zjk4NjIxMDAwYmM0NzRkMzI3YzU4YjA2YWJmOTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJh
aW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0
Lmg+CkBAIC0zNyw4ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdl
OwogCi1jbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIKLSAgICA6IHByaXZh
dGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVyIHsKK2VudW0gY2xhc3MgRGV2aWNlQWNj
ZXNzU3RhdGUgeyBOb0FjY2VzcywgU2Vzc2lvbkFjY2VzcywgUGVyc2lzdGVudEFjY2VzcyB9Owor
CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiwgcHJpdmF0ZSBXZWJD
b3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHByaXZhdGUgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKTsKQEAgLTU1LDExICs1NywxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFu
dFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKE1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMmJik7CiAgICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCisgICAgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50
OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbW92ZURldmljZUNoYW5nZU9ic2VydmVy
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CisK
KyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZChEZXZpY2VBY2Nlc3NTdGF0ZSk7CisKIHBy
aXZhdGU6CiAgICAgdm9pZCBzZW5kVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Jik7CiAKICAgICAvLyBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIKLSAgICB2
b2lkIG1lZGlhQ2FuU3RhcnQoV2ViQ29yZTo6RG9jdW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IG1lZGlhQ2FuU3RhcnQoV2ViQ29yZTo6RG9jdW1lbnQmKSBmaW5hbDsKKworICAgIC8vIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcgorICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZp
dHlTdGF0ZSwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2
aXR5U3RhdGUpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmVNZWRpYVJlcXVlc3RGcm9tTWFwcyhX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKQEAgLTczLDEwICs4MywyOSBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVx
dWVzdD4sIHVpbnQ2NF90PiBtX21lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdFRvSURNYXA7
CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX3VzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2Vy
TWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4sIFdURjo6RnVuY3Rpb248dm9p
ZCgpPj4gbV9kZXZpY2VDaGFuZ2VPYnNlcnZlck1hcDsKKyAgICBEZXZpY2VBY2Nlc3NTdGF0ZSBt
X2FjY2Vzc1N0YXRlV2hlbkRldmljZXNDaGFuZ2VkIHsgRGV2aWNlQWNjZXNzU3RhdGU6Ok5vQWNj
ZXNzIH07CisgICAgYm9vbCBtX21vbml0b3JpbmdEZXZpY2VDaGFuZ2UgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9wZW5kaW5nRGV2aWNlQ2hhbmdlRXZlbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9t
b25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNoYW5nZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6RGV2aWNlQWNjZXNzU3RhdGUsCisgICAgICAgIFdl
YktpdDo6RGV2aWNlQWNjZXNzU3RhdGU6Ok5vQWNjZXNzLAorICAgICAgICBXZWJLaXQ6OkRldmlj
ZUFjY2Vzc1N0YXRlOjpTZXNzaW9uQWNjZXNzLAorICAgICAgICBXZWJLaXQ6OkRldmljZUFjY2Vz
c1N0YXRlOjpQZXJzaXN0ZW50QWNjZXNzCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2VuZGlmIC8vIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCmlu
ZGV4IDZmNjA1NzQyZWVjMzA0MjAyYTY0MDRiNTM1YmNhN2M1NTU5YjRmZDEuLjBiMDZkNjM5Mjk5
ZGI1NGY3NGM4YTAyNmQwMjNhMDY5OTcwZDBlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTYyLDYgKzYyLDE2IEBAIHZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpjYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZp
Y2VzRW51bWVyCiAgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
LmNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uKHJlcXVlc3QpOwogfQogCitXZWJVc2VyTWVk
aWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gV2ViVXNlck1lZGlhQ2xpZW50Ojph
ZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikK
K3sKKyAgICByZXR1cm4gbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
LmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURk1vdmUob2JzZXJ2ZXIpKTsKK30KKwordm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnQ6OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKERldmljZUNoYW5n
ZU9ic2VydmVyVG9rZW4gdG9rZW4pCit7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcigpLnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKHRva2VuKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0OwogCiAjZW5kaWYgLy8gTUVESUFfU1RSRUFNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNl
ck1lZGlhQ2xpZW50LmgKaW5kZXggYTZlMzEzMjYyZDViYTdjNGJhZjQzYmQzMDRmM2Q4Njk4MDk0
ZjM2Yy4uMTA5MzA0NTNjZTc5N2VkZDkwZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00Miw2ICs0Miw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXMoV2ViQ29yZTo6TWVkaWFEZXZp
Y2VzRW51bWVyYXRpb25SZXF1ZXN0JikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxNZWRpYURldmlj
ZXNFbnVtZXJhdGlvblJlcXVlc3QoV2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1
ZXN0JikgZmluYWw7CiAKKyAgICBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNo
YW5nZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
bW92ZURldmljZUNoYW5nZU9ic2VydmVyKERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4pIGZpbmFs
OworCiAgICAgdm9pZCBpbml0aWFsaXplRmFjdG9yaWVzKCk7CiAKICAgICBXZWJQYWdlJiBtX3Bh
Z2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDJiYTk4YjZiZDc4Y2RjZDVmZGY2ZDZlNDYzNTc5OTQ3ZDRhNDUxMDAuLmQ1OGY0NjU0Y2I5MzBl
OGRhZWU2MDcxMGRhYTQyZjE2M2Y3NmEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzM1LDYgKzM3MzUsMTIgQEAgdm9pZCBXZWJQYWdl
OjpkaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odWludDY0X3QgdXNlck1lZGlhSUQs
IGNvbnN0IFZlY3QKIHsKICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci0+
ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBkZXZpY2VzLCBX
VEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nl
c3MpOwogfQorCit2b2lkIFdlYlBhZ2U6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZChEZXZpY2VBY2Nl
c3NTdGF0ZSBhY2Nlc3NTdGF0ZSkKK3sKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci0+Y2FwdHVyZURldmljZXNDaGFuZ2VkKGFjY2Vzc1N0YXRlKTsKK30KKwogI2lmIEVO
QUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiB2b2lkIFdlYlBhZ2U6OmdyYW50VXNlck1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYmIGV4dGVu
c2lvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggMmIyN2NjODgyZTI1ZGE3MjM5ZGUwOWEwMWNjYjNlYjg0OThiYzYzYy4uZTUxYTYwNGM3MDhl
NmU0MmRkZjNjNTgwMjRiYzljMzU3NmI4YjM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjI4LDYgKzIyOCw3IEBAIGNsYXNzIFdlYlRvdWNoRXZl
bnQ7CiBjbGFzcyBXZWJDcmVkZW50aWFsc01lc3NlbmdlcjsKIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOwogCitlbnVtIGNsYXNzIERldmljZUFjY2Vzc1N0YXRlOwogZW51bSBGaW5k
T3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBEcmFnQ29udHJvbGxlckFjdGlvbjsKIApA
QCAtNTY1LDYgKzU2Niw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciYgdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOyB9CiAgICAgdm9pZCBwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
KTsKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZChEZXZpY2VBY2Nlc3NTdGF0ZSk7CiAj
ZW5kaWYKIAogICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6Ok5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDY0MzYwNzY4YTMwYzYyMTQ2MmFjNTVkNGNiM2FjZTkwMjQyODc4ZjUuLmI3MWYyOGI2
ZGZhMDM0MjQzNDRkZDkyZmJiZTg5MThiMGNlMmM2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzE4LDYgKzMx
OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJNZWRp
YUFjY2Vzc1dhc0dyYW50ZWQodWludDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2UgYXVkaW9EZXZpY2UsIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UgdmlkZW9EZXZpY2UsIFN0
cmluZyBtZWRpYURldmljZUlkZW50aWZpZXJIYXNoU2FsdCkKICAgICBVc2VyTWVkaWFBY2Nlc3NX
YXNEZW5pZWQodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IHJlYXNvbiwgU3RyaW5nIGlu
dmFsaWRDb25zdHJhaW50KQogICAgIERpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1
aW50NjRfdCB1c2VyTWVkaWFJRCwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IGRldmlj
ZXMsIFN0cmluZyBtZWRpYURldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgYm9vbCBoYXNQZXJzaXN0
ZW50QWNjZXNzKQorICAgIENhcHR1cmVEZXZpY2VzQ2hhbmdlZChlbnVtIFdlYktpdDo6RGV2aWNl
QWNjZXNzU3RhdGUgYWNjZXNzU3RhdGUpCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykK
ICAgICBHcmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFdlYktpdDo6TWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyBzYW5kYm94RXh0ZW5zaW9ucykKICAgICBSZXZva2VVc2Vy
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBzYW5kYm94RXh0ZW5z
aW9uSURzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGMxM2ZmZDQwM2YzZTAyZWU5OTdmZDg2NWM3NDM0YTYyOGU5ZDkzNTcu
LmYxZmM4YWFkZTFkMGMwYzAwMDFmOTVmOGQzZDZkODMyZDJhODc1NzMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOC0wOC0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIE1vdmUgY2FwdHVyZSBkZXZpY2UgbW9uaXRvcmlu
ZyB0byBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4ODUyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMyNTE3ODc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0v
ZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sOiBVcGRhdGVkLgorCiAy
MDE4LTA4LTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vZGVybml6ZSByZXN1bHRzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dApp
bmRleCA2NGM2YjYxMDc2ZmFhYTNkZTRmODE2OGY3OTY5Y2YxMGY2MDdhNjlkLi44ZGNmNTI2ZmQ2
MDI0NTU0NjcwMWI2N2E2ZmU5YjJjOTBlODc1MGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0
ZWQudHh0CkBAIC0xLDMgKzEsNiBAQAogCiBQQVNTICdkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVk
IHdoZW4gZGV2aWNlIGxpc3QgY2hhbmdlcyAKK1BBU1MgJ2RldmljZWNoYW5nZScgZXZlbnRzIGZp
cmVkIHF1aWNrbHkgYXJlIGNvYWxlc2NlZCAKK1BBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQgaXMg
bm90IGZpcmVkIHdoZW4gdGhlIGRvY3VtZW50IGRvZXNuJ3QgaGFzIGZvY3VzIG9yIHBlcm1pc3Np
b24gdG8gY2FwdHVyZSAKK1BBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQgaXMgZmlyZWQgd2hlbiB0
aGUgZG9jdW1lbnQgZG9lc24ndCBoYXMgZm9jdXMgYnV0IGhhcyBwZXJtaXNzaW9uIHRvIGNhcHR1
cmUgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNo
YW5nZS1ldmVudC0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1j
aGFuZ2UtZXZlbnQtMi5odG1sCmluZGV4IDQzZDVmMmJkZmVkZDkxZWNiZDIzZmM3MWI4MzU3MWUw
NzA3YjI1NWIuLjYxNGI4ZDExMDlkYzc5MDI5OWJkYmI3MDhiZWNmNmFiNDc5MzlhYTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0y
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2
ZW50LTIuaHRtbApAQCAtNiwxNiArNiwyNSBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+Ci0g
ICAgbGV0IGRldmljZUlkcyA9IFtdOwotICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIGxldCBzdHJlYW0gPSBudWxsOworICAgIAorICAgIGxldCBzZXR1cCA9IGFzeW5jICh0
ZXN0KSA9PiB7CiAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QoInRlc3QgcmVxdWlyZXMgaW50ZXJuYWwgQVBJIik7CiAKICAg
ICAgICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiB7IHRlc3RSdW5uZXIucmVzZXRNb2NrTWVkaWFE
ZXZpY2VzKCk7IH0pOwogCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lv
bih0cnVlKTsKKyAgICAgICAgCisgICAgICAgIHN0cmVhbSA9IG51bGw7CisgICAgfQorCisgICAg
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgCisgICAgICAgIGF3YWl0IHNldHVw
KHRlc3QpOwogCi0gICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHsgYXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZSB9KTsKKyAgICAgICAgYXdhaXQgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzp0cnVlLCB2aWRlbzp0cnVlIH0pCisg
ICAgICAgICAgICAudGhlbihzID0+IHN0cmVhbSA9IHMpCiAKICAgICAgICAgbGV0IGRldmljZXMg
PSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTsKIApAQCAt
MjksNyArMzgsNyBAQAogICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdl
ID0gcmVzb2x2ZTsKICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJldmVudCAxIHRha2luZyBhIGxvbmcgdGltZSIpOworICAgICAgICAg
ICAgICAgIGNvbnNvbGUubG9nKCJldmVudCAxIHRvb2sgdG9vIGxvbmciKTsKICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9LCA1MDAwKTsKICAgICAgICAgICAgIHRlc3RS
dW5uZXIuYWRkTW9ja0NhbWVyYURldmljZSgiaWQxIiwgIm15IGNhbWVyYSIpOwpAQCAtNDEsNyAr
NTAsNyBAQAogICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
CiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gcmVz
b2x2ZTsKICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJldmVudCAyIHRha2luZyBhIGxvbmcgdGltZSIpOworICAgICAgICAgICAgICAg
IGNvbnNvbGUubG9nKCJldmVudCAyIHRvb2sgdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9LCA1MDAwKTsKICAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWRkTW9ja01pY3JvcGhvbmVEZXZpY2UoImlkMiIsICJteSBtaWMiKTsKQEAgLTUxLDYgKzYwLDEw
MiBAQAogICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZXNbMF0ubGFiZWwsICJteSBtaWMiKTsK
IAogICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVudCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNo
YW5nZXMiKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworCisgICAgICAg
IGF3YWl0IHNldHVwKHRlc3QpOworCisgICAgICAgIGxldCBldmVudENvdW50ID0gMDsKKyAgICAg
ICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IChldnQpID0+IHsKKyAgICAg
ICAgICAgICAgICArK2V2ZW50Q291bnQ7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9
PiB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9LCA1
MDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmxvZygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmlj
ZWNoYW5nZSB0b29rIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgICAgfSwgNDAwMCk7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja01pY3Jv
cGhvbmVEZXZpY2UoImlkNCIsICJtaWNyb3Bob25lIDMiKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuYWRkTW9ja01pY3JvcGhvbmVEZXZpY2UoImlkNSIsICJtaWNyb3Bob25lIDQiKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMSwgIm9uZSBldmVudCBm
aXJlZCIpOworCisgICAgfSwgIidkZXZpY2VjaGFuZ2UnIGV2ZW50cyBmaXJlZCBxdWlja2x5IGFy
ZSBjb2FsZXNjZWQiKTsKKworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisK
KyAgICAgICAgYXdhaXQgc2V0dXAodGVzdCk7CisKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSBzZXRUaW1l
b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygid2luZG93Lm9uYmx1ciB0
b29rIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAg
fSwgNTAwMCk7CisKKyAgICAgICAgICAgIHdpbmRvdy5vbmJsdXIgPSAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOworICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGFn
ZUlzRm9jdXNlZEFuZEFjdGl2ZShmYWxzZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGF3YWl0
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShkb2N1bWVudC5oYXNGb2N1cygpLCAiZG9jdW1lbnQuaGFzRm9jdXMoKSIpOworCisgICAg
ICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gKCkgPT4gewor
ICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGRvY3VtZW50Lmhhc0ZvY3VzKCksICJkZXZpY2Vj
aGFuZ2Ugc2hvdWxkIG9ubHkgZmlyZSB3aGVuIHRoZSBkb2N1bWVudCBpcyBmb2N1c2VkIGFuZCBh
Y3RpdmUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZSh0cnVlKTsKKyAgICAgICAgICAgIH0sIDIwMCk7CisK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja01pY3JvcGhvbmVEZXZpY2UoImlkMyIsICJt
aWNyb3Bob25lIDIiKTsKKyAgICAgICAgfSk7CisKKyAgICB9LCAiJ2RldmljZWNoYW5nZScgZXZl
bnQgaXMgbm90IGZpcmVkIHdoZW4gdGhlIGRvY3VtZW50IGRvZXNuJ3QgaGFzIGZvY3VzIG9yIHBl
cm1pc3Npb24gdG8gY2FwdHVyZSIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7CisKKyAgICAgICAgYXdhaXQgc2V0dXAodGVzdCk7CisKKyAgICAgICAgYXdhaXQgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzp0cnVlLCB2aWRlbzp0cnVlIH0p
CisgICAgICAgICAgICAudGhlbihzID0+IHN0cmVhbSA9IHMpOworCisgICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGxldCB0aW1lb3V0
ID0gc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIndpbmRv
dy5vbmJsdXIgdG9vayB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgIH0sIDUwMDApOworCisgICAgICAgICAgICB3aW5kb3cub25ibHVyID0gKCkgPT4g
eworICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUoZmFsc2UpOworICAgICAgICB9KTsKKworICAg
ICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnRfZmFsc2UoZG9jdW1lbnQuaGFzRm9jdXMoKSwgImRvY3VtZW50Lmhhc0ZvY3VzKCki
KTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9
ICgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZG9jdW1lbnQuaGFzRm9jdXMo
KSwgImRldmljZWNoYW5nZSBzaG91bGQgZmlyZSB3aGVuIHRoZSBkb2N1bWVudCBpcyBub3QgZm9j
dXNlZCBidXQgY2FuIGNhcHR1cmUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICB9OworCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZE1vY2tNaWNyb3Bob25lRGV2
aWNlKCJpZDMiLCAibWljcm9waG9uZSAyIik7CisgICAgICAgIH0pOworCisgICAgfSwgIidkZXZp
Y2VjaGFuZ2UnIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIGRvY3VtZW50IGRvZXNuJ3QgaGFzIGZv
Y3VzIGJ1dCBoYXMgcGVybWlzc2lvbiB0byBjYXB0dXJlIik7CisKICAgICA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347501</attachid>
            <date>2018-08-20 09:19:40 -0700</date>
            <delta_ts>2018-08-20 11:10:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-188521-20180820091940.patch</filename>
            <type>text/plain</type>
            <size>73657</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiNzdjOGYzMTVjYTAy
MmRmNzIyNDlkNTE3ODRkZjdjYjdmZmU2Ni4uMGM5ZGNhYjU3OGM1YjA1NDk3MDE3NGZjNmExMmRl
NmNlODM3NzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE4LTA4LTE3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdXBkYXRlZCBmYXN0L21lZGlhc3RyZWFtL2Rldmlj
ZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGZvciB0aGUgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlczo6TWVkaWFEZXZpY2VzKTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBhZGRlZCBp
biBhZGRFdmVudExpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpzdG9w
KTogRGV2aWNlIGNoYW5nZSBsaXN0ZW5lciBpcyBvbiB0aGUgdXNlciBtZWRpYSBjb250cm9sbGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKTogQWRk
IHRoZSBkZXZpY2UgY2hhbmdlIGxpc3RlbmVyIG9ubHkgb25jZSB0aGUgZmlyc3QKKyAgICAgICAg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5oOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNo
YW5nZU9ic2VydmVyKTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZlcik6IERp
dHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNoYW5nZWQpOiBO
b3RpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci4KKyAgICAgICAgKG5leHRPYnNlcnZlclRv
a2VuKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJl
RGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpyZW1vdmVDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpvYnNl
cnZlck1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjphZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2Jz
ZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMpOiBDYWxsIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKTogRGl0
dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlSGFzSW5wdXRTdHJl
YW1zKTogRHJpdmUtYnkgZml4LCBjaGVjayB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gc2VlIGlm
IHRoZQorICAgICAgICBkZXZpY2UgaGFzIGlucHV0IHN0cmVhbXMuCisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvQ2FwdHVyZURldmljZXMp
OiBVc2UgbmV3IGJvb2wgcGFyYW1ldGVyCisgICAgICAgIGFkZGVkIHRvIHJlZnJlc2hBdWRpb0Nh
cHR1cmVEZXZpY2VzIHNvIHdlIHdvbid0IHRyaWdnZXIgYSBkZXZpY2UgY2hhbmdlIGV2ZW50IG9u
IHRoZSBmaXJzdCBzY2FuLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKTogQWRkIHBhcmFtLgorICAgICAg
ICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2Vk
KTogVXNlIG5ldyBwYXJhbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldERldmljZXMpOiBEb24ndCBuZWVkIHRvIGNh
bGwgY2FwdHVyZURldmljZXNDaGFuZ2VkLAorICAgICAgICBpdCBpcyBkb25lIGluIHRoZSBVSSBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OmFkZERldmljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnJlbW92ZURldmljZSk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOiBOZXcsIHVzZWQgYnkgdXBkYXRlZCB0ZXN0Lgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorCiAyMDE4LTA4LTE3ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+IGFuZCBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtKU0NdIEFkZCBHUFJSZWc6OkludmFsaWRHUFJSZWcgYW5kIEZQUlJlZzo6SW52
YWxpZEZQUlJlZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYzkzNmMzOWU4ZDNhNjcxMzk4YWRjODBlZGY3MzFhOGNi
MTk3NmY1Li5hZTI2Y2MxYzA5NzJhYWY0MWRjNmViOTRlN2RlOTljNGJiMzVkNzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTA4LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmlj
ZSBtb25pdG9yaW5nIHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg4NTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzI1MTc4Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCk6IE5vdGlmeSBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnZpZXdJc0JlY29taW5nVmlz
aWJsZSk6IENoYW5nZSBuYW1lIGZyb20KKyAgICAgICAgdmlld0lzQmVjb21pbmdWaXNpYmxlLiBD
YWxsIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCBpZiBhIGNoYW5nZSBoYXBwZW5lZCB3aGVuIG5vdCB2
aXNpYmxlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6d2F0Y2hkb2dUaW1lckZpcmVkKTogQ2xlYXIgbV9wZW5kaW5nRGV2aWNlQ2hhbmdl
RXZlbnQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Ojpwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcik6
IEluaXRpYWxpemUgdGltZXIuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOiBOZXcsIG5vdGlmeSBlYWNoIG1hbmFnZXIuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpiZWdpbk1vbml0b3JpbmdD
YXB0dXJlRGV2aWNlcyk6IENhY2hlIHRoZSBkZXZpY2UgbGlzdCBhbmQgCisgICAgICAgIHJlZ2lz
dGVyIGRldmljZSBjaGFuZ2UgbGlzdGVuZXIgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOiBBZGQgbGlzdGVu
ZXIsIHRlbGwgcGFnZQorICAgICAgICB0byBzdGFydCBtb25pdG9yaW5nIGRldmljZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJl
bW92ZURldmljZUNoYW5nZU9ic2VydmVyKTogUmVtb3ZlIGxpc3RlbmVyLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCk6IENhbGwgbGlzdGVuZXJzLgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRNb2NrTWVkaWFEZXZpY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhck1vY2tNZWRpYURldmljZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVNb2NrTWVkaWFEZXZpY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldE1vY2tNZWRpYURldmljZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDE4LTA4LTE3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyB3ZWJQYWdlSUQgYW5kIHdl
YkZyYW1lSUQgdG8gTmV0d29ya0xvYWQgZm9yIHNwZWN1bGF0aXZlIGxvYWRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXgg
YmU5MDUxYzkzOTk0ZDViYmMxMGEwZDhhYTY5NDE5YjE3MTRhZWVhYi4uNmU1YTlhYTdmZWM1MDRk
Y2RmZTYxYjQ0MzU3YTQ1MWM3ZWRmNTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJN
ZWRpYVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKQEAgLTUxLDE3
ICs1Miw2IEBAIGlubGluZSBNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZNZWRpYURldmljZXM6
OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fZXZlbnROYW1lcyhldmVudE5hbWVz
KCkpCiB7Ci0gICAgbV9kZXZpY2VDaGFuZ2VkVG9rZW4gPSBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpzaW5nbGV0b24oKS5hZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oKSB7Ci0KLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9ubHkgZGlz
cGF0Y2ggYW4gZXZlbnQgaWYgdGhlIHVzZXIgaGFzIGJlZW4gZ3JhbnRlZCBhY2Nlc3MgdG8gdGhl
IHR5cGUgb2YKLSAgICAgICAgLy8gZGV2aWNlIHRoYXQgd2FzIGFkZGVkIG9yIHJlbW92ZWQuCi0g
ICAgICAgIGlmICghbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMocmFuZG9tTnVtYmVy
KCkgLyAyKSk7Ci0gICAgfSk7Ci0KICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJl
U3VyZmFjZVR5cGU6Ok1vbml0b3IpID09IHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3IpLCAiTWVkaWFEZXZp
Y2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpNb25pdG9yIGlzIG5vdCBlcXVhbCB0byBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciBh
cyBleHBlY3RlZCIpOwpAQCAtNzQsOCArNjQsMTIgQEAgTWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZp
Y2VzKCkgPSBkZWZhdWx0OwogCiB2b2lkIE1lZGlhRGV2aWNlczo6c3RvcCgpCiB7Ci0gICAgaWYg
KG1fZGV2aWNlQ2hhbmdlZFRva2VuKQotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5yZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2VydmVyKG1fZGV2aWNlQ2hhbmdl
ZFRva2VuKTsKKyAgICBpZiAobV9kZXZpY2VDaGFuZ2VUb2tlbikgeworICAgICAgICBhdXRvKiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBk
b2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBu
dWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQgJiYgY29udHJvbGxlcikKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKG1fZGV2aWNlQ2hhbmdlVG9r
ZW4pOworICAgIH0KIH0KIAogUmVmPE1lZGlhRGV2aWNlcz4gTWVkaWFEZXZpY2VzOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTgxLDYgKzE3NSwyNyBAQCBib29sIE1lZGlhRGV2aWNl
czo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgTWVkaWFEZXZpY2VzOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFtX2xpc3Rlbmlu
Z0ZvckRldmljZUNoYW5nZXMgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VjaGFu
Z2VFdmVudCkgeworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBkb2N1bWVudCA/IFVzZXJNZWRpYUNvbnRyb2xsZXI6
OmZyb20oZG9jdW1lbnQtPnBhZ2UoKSkgOiBudWxscHRyOworICAgICAgICBpZiAoZG9jdW1lbnQg
JiYgY29udHJvbGxlcikgeworICAgICAgICAgICAgbV9saXN0ZW5pbmdGb3JEZXZpY2VDaGFuZ2Vz
ID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9kZXZpY2VDaGFuZ2VUb2tlbiA9IGNvbnRyb2xsZXIt
PmFkZERldmljZUNoYW5nZU9ic2VydmVyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
dGhpc10oKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IG1fc2NoZWR1bGVk
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KFNlY29uZHMo
cmFuZG9tTnVtYmVyKCkgLyAyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggMDJk
MWFlZjlkNmYzMTc4NjdhOTdmMTk1YmU5MDYxNDg1OTU0OWNmNS4uMDcyYmExNWQ0OTZlM2E2Yjg3
MmYxMDlhOTYzNTgyZDJmMjAwZDk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDExICs0MSwxMSBAQAogI2luY2x1ZGUgIk1l
ZGlhVHJhY2tDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBNZWRpYURldmljZUluZm87CiBjbGFzcyBNZWRpYVN0cmVhbTsKIApA
QCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhRGV2aWNlcyhEb2N1
bWVudCYpOwogCiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKKyAgICBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgZnJpZW5kIGNsYXNzIEpTTWVkaWFEZXZpY2VzT3duZXI7CiAKQEAgLTEwMSw4ICsxMDIs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQogCiAgICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OkRldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBtX2RldmljZUNoYW5n
ZWRUb2tlbjsKKyAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4g
bV9kZXZpY2VDaGFuZ2VUb2tlbjsKICAgICBjb25zdCBFdmVudE5hbWVzJiBtX2V2ZW50TmFtZXM7
IC8vIE5lZWQgdG8gY2FjaGUgdGhpcyBzbyB3ZSBjYW4gdXNlIGl0IGZyb20gR0MgdGhyZWFkcy4K
KyAgICBib29sIG1fbGlzdGVuaW5nRm9yRGV2aWNlQ2hhbmdlcyB7IGZhbHNlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAppbmRleCAzZTNhZGUxYThjMmJkNWVhNzBjMDI3
NjMyZDc2MGUzYTAxNzM3ZGJmLi5iMmFhNTYwM2Y1NzUxMjdlNWY1YTg2NDZhOWE4NzdlMjE0YTRh
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ2xpZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0OwpAQCAtNDksNiArNTEs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXMoTWVk
aWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QoTWVkaWFEZXZpY2VzRW51bWVyYXRpb25S
ZXF1ZXN0JikgPSAwOwogCisgICAgZW51bSBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuVHlwZSB7
IH07CisgICAgdXNpbmcgRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiA9IE9iamVjdElkZW50aWZp
ZXI8RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGU+OworICAgIHZpcnR1YWwgRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEZXZpY2VDaGFuZ2VPYnNlcnZl
cihEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5Vc2VyTWVkaWFDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAppbmRl
eCAyMjQ5YWJmMjc4NmJkMjIzNWM0MDE4OGM0YWM0NGFhMTg3ZDYyYmY1Li5jZmFjNTk5ZDdmYmUz
NGJkNTA0MDQ4NDkxNjVlNTNmYmIzYTViMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0Vu
dW1lcmF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRp
b25SZXF1ZXN0KE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpOwogCisgICAgVXNlck1l
ZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9ic2Vy
dmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbW92ZURldmljZUNoYW5n
ZU9ic2VydmVyKFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
ICAgICBzdGF0aWMgVXNlck1lZGlhQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxVc2VyTWVkaWFDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJv
bShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KIApAQCAtNzUsNiArNzgsMTYgQEAgaW5saW5l
IHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb25S
ZXF1ZXN0KE1lZGlhRGV2aWMKICAgICBtX2NsaWVudC0+Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVy
YXRpb25SZXF1ZXN0KHJlcXVlc3QpOwogfQogCitpbmxpbmUgVXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNoYW5n
ZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQoreworICAgIHJldHVy
biBtX2NsaWVudC0+YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGTW92ZShvYnNlcnZlcikpOwor
fQorCitpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpyZW1vdmVEZXZpY2VDaGFuZ2VP
YnNlcnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gdG9rZW4p
Cit7CisgICAgbV9jbGllbnQtPnJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKHRva2VuKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggZDBkOTUxMTI4NTQzOWI3MjZmMmQzYjE4YTgzZTgyNzkyOWFi
ZWUxYi4uOGY3YjEyN2UxYzQwNGExY2VhMTliMmNiYWM0YWZjNGM2MGQ0MDQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTQzNCw4ICs0MzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Jlc3Rvcmlu
Z0NhY2hlZFBhZ2UoYm9vbCB2YWx1ZSkgeyBtX2lzUmVzdG9yaW5nQ2FjaGVkUGFnZSA9IHZhbHVl
OyB9CiAgICAgYm9vbCBpc1Jlc3RvcmluZ0NhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lz
UmVzdG9yaW5nQ2FjaGVkUGFnZTsgfQogCi0gICAgdm9pZCBhZGRBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIo
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlv
bnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IGNkMTQ3YTAyYjRjZDdjMGU4MTI3Zjk3YWMw
Mzk4NjVhNGY2NzI4ZWQuLjhhMzliMjkyZjkzOGFjZDQ5MDU5MDJhNDVhYzRhZjhhODc1NTBjYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwyNCArNTAsMTQgQEAgQ2FwdHVyZURl
dmljZSBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21QZXJzaXN0ZW50SUQo
Y29uc3QgU3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6T2JzZXJ2ZXJUb2tlbiBuZXh0T2JzZXJ2ZXJUb2tlbigpCit2b2lkIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VDaGFuZ2VkKCkKIHsKLSAgICBzdGF0aWMgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6Ok9ic2VydmVyVG9rZW4gbmV4dFRva2VuID0gMDsKLSAgICByZXR1cm4gKytuZXh0
VG9rZW47Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpPYnNlcnZlclRva2VuIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjphZGRDYXB0dXJlRGV2aWNlQ2hhbmdlZE9ic2VydmVyKENhcHR1cmVEZXZp
Y2VDaGFuZ2VkQ2FsbGJhY2smJiBvYnNlcnZlcikKLXsKLSAgICBhdXRvIHRva2VuID0gbmV4dE9i
c2VydmVyVG9rZW4oKTsKLSAgICBtX29ic2VydmVycy5zZXQodG9rZW4sIFdURk1vdmUob2JzZXJ2
ZXIpKTsKLSAgICByZXR1cm4gdG9rZW47Ci19CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotdm9pZCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVtb3ZlQ2FwdHVy
ZURldmljZUNoYW5nZWRPYnNlcnZlcihPYnNlcnZlclRva2VuIHRva2VuKQotewotICAgIEFTU0VS
VChtX29ic2VydmVycy5jb250YWlucyh0b2tlbikpOwotICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZSh0
b2tlbik7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNh
cHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworICAgIH0pOwogfQogCi0KICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggNDVlZGIzMDBjM2I3MmU4Nzcz
NDVjOWYwMDIzNmZkMDZkMzU0OWNkZS4uNTczMmRlMDNkZWViNGZjMDk4NWExYjFhNzRiY2JiMTQ2
MGZlYzViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjMgKzI5LDE5IEBACiAKICNp
bmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FwdHVyZURldmljZU1hbmFnZXIgeworY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2FwdHVyZURldmljZU1hbmFnZXI+IHsKIHB1YmxpYzoKLSAg
ICB1c2luZyBDYXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KCk+OwotICAgIHVzaW5nIE9ic2VydmVyVG9rZW4gPSB1aW50MzJfdDsKLSAgICB2aXJ0dWFsIE9i
c2VydmVyVG9rZW4gYWRkQ2FwdHVyZURldmljZUNoYW5nZWRPYnNlcnZlcihDYXB0dXJlRGV2aWNl
Q2hhbmdlZENhbGxiYWNrJiYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDYXB0dXJlRGV2aWNl
Q2hhbmdlZE9ic2VydmVyKE9ic2VydmVyVG9rZW4pOwotCiAgICAgdmlydHVhbCBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
KCk7CiAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChjb25z
dCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCk7Ci0gICAgSGFzaE1hcDxPYnNlcnZlclRva2VuLCBD
YXB0dXJlRGV2aWNlQ2hhbmdlZENhbGxiYWNrPiBtX29ic2VydmVyczsKKyAgICB2b2lkIGRldmlj
ZUNoYW5nZWQoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKaW5kZXggOTUyMTE5Y2NhYjMxOWFmYzZmMWEzMzllMjgxMmUwZjZiOTU2NGRhOS4uOGE0
NjA5YTJkMjY0NzQxMDY4OWJmNDAyYTJjMWQ2MzQ2MTJjN2ZkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKQEAgLTI0NiwxMCArMjQ2LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAg
ICB9CiAKICAgICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERp
c3RhbmNlKTsKLSAgICAgICAgaWYgKHdpZHRoQ29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgewot
ICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICAg
ICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUo
KS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
KTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7
CisgICAgICAgIHdpZHRoID0gd2lkdGhDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5n
ZShzaXplKCkud2lkdGgoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodDsKQEAgLTI2
MSwxMCArMjU5LDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRG
cmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAgICB9CiAKICAgICAg
ICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKLSAg
ICAgICAgaWYgKGhlaWdodENvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHQg
PSBoZWlnaHRDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkuaGVpZ2h0
KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOwotICAg
ICAgICB9CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7CisgICAg
ICAgIGhlaWdodCA9IGhlaWdodENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNp
emUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0ludCk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKQEAg
LTI3NiwxMCArMjcyLDggQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVB
bmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PgogICAgICAgICB9CiAKICAg
ICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsK
LSAgICAgICAgaWYgKGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCk7Ci0gICAgICAgICAg
ICBmcmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5n
ZSh0aGlzLT5mcmFtZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFu
Z2VNYXgoKS5hc0RvdWJsZSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFi
aWxpdGllcy5mcmFtZVJhdGUoKTsKKyAgICAgICAgZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3Ry
YWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2UodGhpcy0+ZnJhbWVSYXRlKCksIHJhbmdlLnJh
bmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUpOwogICAgIH0KIAog
ICAgIC8vIEVhY2ggb2YgdGhlIG5vbi1udWxsIHZhbHVlcyBpcyBzdXBwb3J0ZWQgaW5kaXZpZHVh
bGx5LCBzZWUgaWYgdGhleSBhbGwgY2FuIGJlIGFwcGxpZWQgYXQgdGhlIHNhbWUgdGltZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggMzg4NmZmODc1Y2U4OWY1YzEwOGM0
MzdiYjljYWEyZjRkN2YxNjAyYS4uZmZkNTFkNGU0NmQ1ZThhYWEyYTIzYTA2MmFhMTI0Zjg1MmYz
ZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDEyICs1Myw2
IEBAIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKiYgbWVkaWFTdHJlYW1DZW50ZXJP
dmVycmlkZSgpCiAgICAgcmV0dXJuIG92ZXJyaWRlOwogfQogCi1zdGF0aWMgSGFzaE1hcDx1bnNp
Z25lZCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiYgb2JzZXJ2ZXJNYXAoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+
PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkKIHsKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyKiBvdmVycmlkZSA9IG1lZGlhU3RyZWFtQ2VudGVyT3ZlcnJpZGUoKTsK
QEAgLTE5OSwyNSArMTkzLDE4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiBpZCwKICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciB9OwogfQogCi1SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNl
cnZlcikKLXsKLSAgICBzdGF0aWMgRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2VuIG5leHRUb2tl
biA9IDA7Ci0gICAgb2JzZXJ2ZXJNYXAoKS5zZXQoKytuZXh0VG9rZW4sIFdURk1vdmUob2JzZXJ2
ZXIpKTsKLSAgICByZXR1cm4gbmV4dFRva2VuOwotfQotCi12b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoRGV2aWNlc0NoYW5nZWRPYnNl
cnZlclRva2VuIHRva2VuKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQogewot
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG9ic2VydmVyTWFwKCkucmVtb3ZlKHRva2VuKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2RldmljZUNoYW5nZWRPYnNlcnZlcik7CisgICAgbV9k
ZXZpY2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEZNb3ZlKG9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogewotICAgIC8v
IENvcHkgdGhlIGhhc2ggbWFwIGJlY2F1c2UgdGhlIG9ic2VydmVyIGNhbGxiYWNrIG1heSBjYWxs
IGJhY2sgaW4gYW5kIG1vZGlmeSB0aGUgbWFwLgotICAgIGF1dG8gY2FsbGJhY2tzID0gb2JzZXJ2
ZXJNYXAoKTsKLSAgICBmb3IgKGF1dG8mIGl0IDogY2FsbGJhY2tzKQotICAgICAgICBpdC52YWx1
ZSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fZGV2aWNlQ2hhbmdl
ZE9ic2VydmVyKQorICAgICAgICBtX2RldmljZUNoYW5nZWRPYnNlcnZlcigpOwogfQogCiB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFZh
bGlkQ29uc3RyYWludHNIYW5kbGVyJiYgdmFsaWRIYW5kbGVyLCBJbnZhbGlkQ29uc3RyYWludHNI
YW5kbGVyJiYgaW52YWxpZEhhbmRsZXIsIGNvbnN0IE1lZGlhU3RyZWFtUmVxdWVzdCYgcmVxdWVz
dCwgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCmluZGV4IGVmN2IzY2ZjZDkxNmVkY2NhZTYyMGU0NDIxZjhjMGJhYmU4ZmUzZWMu
LmQ1NGFlOGU3ZmE1N2QzMjU3MWUwNzMwY2Q2Mjk3NzU0ODhkZmNmNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg1LDIyICs4NSwyMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlV2l0aFVuaXF1ZUlEKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAK
LSAgICB1c2luZyBEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gPSB1bnNpZ25lZDsKLSAgICBE
ZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmVEZXZpY2VzQ2hhbmdlZE9ic2Vy
dmVyKERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
ICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKGJvb2wsIGJvb2wpOwogCisgICAgdm9p
ZCBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIoKTsKIAotICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7Ci0K
ICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKIAogICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyKiBtX2F1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIgeyBudWxscHRyIH07CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fdmlk
ZW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKKworICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX2RldmljZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggMzJlNzBlMTZkY2EzMDZmNWZkNzkwZDJlMzQ1MTU3ODFmNzc3NmY0ZS4uZjYx
ZDhkZmFmNjIzYjY0MDBlZDg1NDdjYzc3OGQ2ZjU4ZDMzYzkzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUgIkFW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KICNp
bmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0x
NDEsOCArMTQyLDcgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKTsKICAgICBtX2RldmljZXMgPSBXVEZNb3Zl
KG5ld0RldmljZXMpOwogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZh
bHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpp
bmRleCBjMDExYjI2ZTY4NmIwNWMxZmEwYjY5YTBkOTFkN2NmMGNhNjNmMzQwLi4wZWZjOTJhMGZl
ZTkwMmFkOTY4OWU2Y2VhY2M1NWE2NTcyZjRmYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE3OSw5ICsxNzksNyBAQCB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygpCiB2b2lkIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCgpCiB7CiAgICAgcmVmcmVzaENhcHR1cmVEZXZpY2Vz
KCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMudmFsdWVzKCkpCi0g
ICAgICAgIG9ic2VydmVyKCk7CisgICAgZGV2aWNlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2VUeXBl
ZGVmKiBkZXZpY2UpCkBAIC0yMDAsOCArMTk4LDcgQEAgdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
LnZhbHVlcygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGRldmljZUNoYW5nZWQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKaW5kZXggNTQxM2E4Zjg2NzIyMjA0ZTRjNDJmYWU2ZWVkYjMwNmE1
MmY1NTFhOC4uMTExMWVhYjAzMjBmNDFiZTE2YjMwOGZiNzA4NDM0NDNiZWY0ZTk0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUg
PEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTY0LDEwICs2NSwxNyBAQCBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJl
RGV2aWNlV2l0aFBlcgogc3RhdGljIGJvb2wgZGV2aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2Jq
ZWN0SUQgZGV2aWNlSUQpCiB7CiAgICAgVUludDMyIGRhdGFTaXplID0gMDsKLSAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVh
bXMsIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlF
bGVtZW50TWFzdGVyIH07CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9
IHsga0F1ZGlvRGV2aWNlUHJvcGVydHlTdHJlYW1Db25maWd1cmF0aW9uLCBrQXVkaW9EZXZpY2VQ
cm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owog
ICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGFTaXplKGRldmljZUlELCAm
YWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplKTsKIAotICAgIHJldHVybiAhZXJyICYmIGRh
dGFTaXplOworICAgIGlmIChlcnIgfHwgIWRhdGFTaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGJ1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0
PigoQXVkaW9CdWZmZXJMaXN0KikgOjpvcGVyYXRvciBuZXcgKGRhdGFTaXplKSk7CisgICAgbWVt
c2V0KGJ1ZmZlckxpc3QuZ2V0KCksIDAsIGRhdGFTaXplKTsKKyAgICBlcnIgPSBBdWRpb09iamVj
dEdldFByb3BlcnR5RGF0YShkZXZpY2VJRCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6
ZSwgYnVmZmVyTGlzdC5nZXQoKSk7CisKKyAgICByZXR1cm4gIWVyciAmJiBidWZmZXJMaXN0LT5t
TnVtYmVyQnVmZmVyczsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZENhcHR1cmVEZXZpY2UoY29u
c3QgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSYgZGV2aWNlKQpAQCAtODEsNyArODksNyBAQCBWZWN0
b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojpjb3JlQXVkaW9DYXB0dXJlRAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICBy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgICAgICByZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyhEb05vdE5vdGlmeSk7CiAKICAgICAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVj
dFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9
OwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihrQXVk
aW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCBkZXZpY2VzQ2hhbmdlZCwgdGhpcyk7CkBA
IC0xMDIsNyArMTEwLDcgQEAgc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvRGUKIH0KIAogCi12b2lkIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygp
Cit2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJl
RGV2aWNlcyhOb3RpZnlJZkRldmljZXNIYXZlQ2hhbmdlZCBub3RpZnkpCiB7CiAgICAgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURl
dmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3Bl
cnR5RWxlbWVudE1hc3RlciB9OwogICAgIFVJbnQzMiBkYXRhU2l6ZSA9IDA7CkBAIC0xNTYsMTMg
KzE2NCwxMyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVk
aW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmlj
ZSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICBvYnNlcnZlcigpOworICAgIGlmIChub3RpZnkgPT0gTm90aWZ5KQorICAg
ICAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9CiAKIE9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1
ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgc3RhdGlj
X2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIqPih1c2VyRGF0YSktPnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKE5vdGlm
eSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKaW5kZXggOGMyOGU4Mjc5ODRjYWZmNDg2YTQ1NTQxOTA1NTEwMzc1YTQ1OTAy
ZC4uY2Y0ODI3NjQxNGIyNDJhYWZhNDg2ZDkyNTAzNzVjODgxNGNjMWI5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNyArNTUsOCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBPU1N0YXR1cyBkZXZpY2VzQ2hhbmdlZChBdWRpb09iamVjdElELCBVSW50
MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCopOwogICAgIFZlY3Rv
cjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsKIAot
ICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICBlbnVtIE5vdGlmeUlm
RGV2aWNlc0hhdmVDaGFuZ2VkIHsgTm90aWZ5LCBEb05vdE5vdGlmeSB9OworICAgIHZvaWQgcmVm
cmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoTm90aWZ5SWZEZXZpY2VzSGF2ZUNoYW5nZWQpOwogCiAg
ICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fZGV2aWNlczsKICAgICBWZWN0b3I8Q29yZUF1ZGlv
Q2FwdHVyZURldmljZT4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
aW5kZXggMDg3NTQ5N2ExZWZhMTEwNDUzZjhlMmQ2ZTUyM2RhYjM2MTdjOTRhZi4uZWM0NDFlZmQ3
NWU5Mzg3Njc2NjU1YmQwMjVkOTM3YjUzODc3MzdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk3
LDYgKzk3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlQ2FwdHVyZURl
dmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlc2V0RGV2aWNlcygpCiB7CiAgICAgc2V0RGV2aWNlcyhkZWZhdWx0RGV2aWNl
cygpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJl
RGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
RGV2aWNlcyhWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYmIG5ld01vY2tEZXZpY2VzKQpAQCAtMTE1
LDYgKzExNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoVmVj
dG9yPE1vY2tNZWRpYURldmljZT4mJiBuZXdNb2NrRGV2aWNlCiAgICAgICAgIG1hcC5hZGQoZGV2
aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKICAgICAgICAgY3JlYXRlQ2FwdHVyZURldmljZShk
ZXZpY2UpOwogICAgIH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YWRkRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2aWNlKQpAQCAtMTIyLDYg
KzEyNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShjb25zdCBN
b2NrTWVkaWFEZXZpY2UmIGRldmljZSkKICAgICBkZXZpY2VzKCkuYXBwZW5kKGRldmljZSk7CiAg
ICAgZGV2aWNlTWFwKCkuc2V0KGRldmljZS5wZXJzaXN0ZW50SWQsIGRldmljZSk7CiAgICAgY3Jl
YXRlQ2FwdHVyZURldmljZShkZXZpY2UpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQp
CkBAIC0xNDAsNiArMTQzLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3Zl
RGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKQogICAgIH0pOwogCiAgICAgbWFwLnJl
bW92ZShpdGVyYXRvcik7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVu
dElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGY5MWViZTBmZTg1NDQxMTRhNjYyYzc2ZTQy
YWZjYTdhNzAwZWRhYy4uZGI2ODgyMWUzMWQyY2UyN2Q4YmUxOGRmZDU3ZTA2ZmUzMDU2YTM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTUsMTkgKzU1LDE2IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
RW5hYmxlZChib29sCiB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXREZXZp
Y2VzKFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+JiYgbmV3TW9ja0RldmljZXMpCiB7CiAgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNldERldmljZXMoV1RGTW92ZShuZXdNb2NrRGV2aWNlcykp
OwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZpY2UoY29uc3QgTW9ja01lZGlhRGV2
aWNlJiBkZXZpY2UpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZERldmljZShk
ZXZpY2UpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOwogfQogCiB2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpyZW1vdmVEZXZpY2UoY29uc3QgU3Ry
aW5nJiBwZXJzaXN0ZW50SWQpCiB7CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZURldmljZShwZXJzaXN0ZW50SWQpOwotICAgIHNpbmdsZXRvbigpLmNhcHR1cmVEZXZpY2VzQ2hh
bmdlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZWUzNzAzOWQ5NWFmNjkwOTkyOGZkMDI0ZWY5Mjg1NGEzMmVjMTNi
Ni4uYzc1ZGZlZmUwY2Y5NThiNDNlMTY4NjI5NGM5ZjY1Y2ZiODEzNTZiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgiCisj
aW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblRpbWVsaW5lLmgi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBdWRpb1Nl
c3Npb24uaCIKQEAgLTQzMzgsNiArNDMzOSwyMiBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZVZp
c2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRl
KTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUoYm9vbCBp
c0ZvY3VzZWRBbmRBY3RpdmUpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1l
bnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byYgcGFnZSA9ICpkb2N1bWVudC0+cGFnZSgpOworICAgIGF1dG8gc3Rh
dGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKKworICAgIGlmICghaXNGb2N1c2VkQW5kQWN0aXZl
KQorICAgICAgICBzdGF0ZSAtPSB7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKyAgICBlbHNlCisgICAgICAgIHN0YXRlIHw9IHsgQWN0
aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9Owor
CisgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKK30KKwogI2lmIEVOQUJMRShXRUJf
UlRDKQogdm9pZCBJbnRlcm5hbHM6OnNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wg
YWxsb3dlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGQwZDI4NzljZTZm
NjczNzk0NWQ1NzM3OTE0N2I2Mzc2ZDM0NDY0NmYuLmUxMTgyZGU1NGQ4NmU1NGY5OTExMjk2Yjc2
ZDNkMTUzNzEwZmQzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNjQxLDYg
KzY0MSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRQYWdlVmlzaWJpbGl0eShi
b29sIGlzVmlzaWJsZSk7CisgICAgdm9pZCBzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKGJvb2wp
OworCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICB2b2lkIHNldEgyNjRIYXJkd2FyZUVuY29k
ZXJBbGxvd2VkKGJvb2wgYWxsb3dlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
aW5kZXggMDExNDhiOThkOWIwZjhiZmI0NTRhN2Q3NDExYTZmNmY2NGM4ODIwZi4uOTE5YmJkYWYy
ZDBhYTcxYWRjYTc5OTc5Y2RjOGZlYzIwYzJlYWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbApAQCAtNjAzLDYgKzYwMyw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewog
ICAgIFtDb25kaXRpb25hbD1XRUJHTF0gdm9pZCBmYWlsTmV4dEdQVVN0YXR1c0NoZWNrKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCBjb250ZXh0KTsKIAogICAgIHZvaWQgc2V0UGFnZVZpc2liaWxpdHko
Ym9vbGVhbiBpc1Zpc2libGUpOworICAgIHZvaWQgc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShi
b29sZWFuIGlzRm9jdXNlZCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdm9pZCBzZXRI
MjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRp
b25hbD1XRUJfUlRDXSB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRnb2luZ1ZpZGVvU291cmNlcyhS
VENQZWVyQ29ubmVjdGlvbiBjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IGE3ODJiYWFjOWQ0NWJiM2M5ZDBiODk5MjYyMmZhYTYyNTJhYTE4
NGQuLjA5ZTQ2NGZjZDcxNjBiMmVlOGZlMmM5MzM2MjAyNmViNGIzODBkODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDE5LDYgKzQxOSw3IEBAIGRlZiBo
ZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6
IFsnIkVkaXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYktp
dDo6RGV2aWNlQWNjZXNzU3RhdGUnOiBbJyJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJl
ZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0
YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50
LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggM2MwNzI5NWYx
MDUzZmMxNWRjYzg4NDQ1NjMyOTA1YjhjM2ZjYjk2Yi4uMDJiMmEyMzFlNjc5NjM4MmFhMWE0MDBh
NDllNzgwMTRiODZlZmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCkBAIC03Nyw2ICs3OCwxNSBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpzdG9wQ2FwdHVyZSgpCiAgICAgbV9wYWdl
LnN0b3BNZWRpYUNhcHR1cmUoKTsKIH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKK3sKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIC8vIEZJWE1FOiBhIHBhZ2Ugd2l0aCBwZXJzaXN0ZW50IGFjY2VzcyBz
aG91bGQgYWx3YXlzIGdldCBkZXZpY2UgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgYXV0byBh
Y2Nlc3NTdGF0ZSA9IG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSA/IERldmljZUFjY2Vzc1N0
YXRlOjpOb0FjY2VzcyA6IERldmljZUFjY2Vzc1N0YXRlOjpTZXNzaW9uQWNjZXNzOworICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFu
Z2VkKGFjY2Vzc1N0YXRlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyNlbmRpZgorfQorCiB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjbGVhckNhY2hlZFN0YXRlKCkK
IHsKICAgICBpbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3RzKCk7CkBAIC00MzQsNyArNDQ0LDcgQEAg
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2FwdHVyZVN0YXRl
Q2hhbmdlZChNZWRpYVByb2R1Y2VyOjoKICNlbmRpZgogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpwcm9jZXNzUHJlZ3JhbnRlZFJlcXVlc3RzKCkKK3Zv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnZpZXdJc0JlY29taW5n
VmlzaWJsZSgpCiB7CiAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wcmVncmFudGVkUmVxdWVz
dHMpCiAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaAppbmRleCA1NzNhZjA0ZDcxYjg1Mzk1NzUxMjQ5OWQ5MmM0MzA2NDhiYmQxNzlmLi44ZDNj
MDk2NzNjNzBjMDg2YzBiMmI4OGVkZWJmNWIwNWJkYWY2ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1S
ZXF1ZXN0Jik7CiAKICAgICB2b2lkIHJlc2V0QWNjZXNzKHVpbnQ2NF90IG1haW5GcmFtZUlEKTsK
LSAgICB2b2lkIHByb2Nlc3NQcmVncmFudGVkUmVxdWVzdHMoKTsKKyAgICB2b2lkIHZpZXdJc0Jl
Y29taW5nVmlzaWJsZSgpOwogCiAgICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVp
bnQ2NF90LCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2UsIFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2UmJiB2aWRlb0RldmljZSk7CiAgICAgdm9pZCB1c2VyTWVkaWFBY2Nlc3NXYXNE
ZW5pZWQodWludDY0X3QsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRp
YUFjY2Vzc0RlbmlhbFJlYXNvbik7CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNjaGVkdWxlTmV4dFJlamVjdGlvbigpOwogICAgIHZvaWQgcmVqZWN0aW9uVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgY2xlYXJDYWNoZWRTdGF0ZSgpOworICAgIHZvaWQgY2FwdHVyZURldmljZXND
aGFuZ2VkKCk7CiAKICAgICB2b2lkIGNhcHR1cmVTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZFN0YXRlLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggN2FlNjkwOTc0NmJmZDc4
OTNkMWNlOWYzMDk4ODRkZDMxNjNiYzRjMi4uNzAyNWQ0ZDk5OTFjNTliYjkxMDAyNWEzZjQ4MGFh
NTJiYjBjMzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTM1LDYg
KzM2LDggQEAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBhdWRpb0V4dGVuc2lvblBhdGggeyAi
Y29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zIH0KIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVy
YWwgdmlkZW9FeHRlbnNpb25QYXRoIHsgImNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIl9zIH07CiAj
ZW5kaWYKIAorc3RhdGljIGNvbnN0IFNlY29uZHMgZGV2aWNlQ2hhbmdlRGVib3VuY2VUaW1lcklu
dGVydmFsIHsgMjAwX21zIH07CisKIGNsYXNzIFByb2Nlc3NTdGF0ZSB7CiBwdWJsaWM6CiAgICAg
UHJvY2Vzc1N0YXRlKCkgeyB9CkBAIC0xMDEsNiArMTA0LDExIEBAIFVzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyJiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4g
bWFuYWdlcjsKIH0KIAorVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OlVzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyKCkKKyAgICA6IG1fZGVib3VuY2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKQoreworfQorCiB2
b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjphZGRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJv
eHkpCiB7CiAgICAgcHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpLmFkZFJlcXVl
c3RNYW5hZ2VyKHByb3h5KTsKQEAgLTI1NCw2ICsyNjIsNTggQEAgdm9pZCBVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6c2V0Q2FwdHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAor
dm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKK3sK
KyAgICBhdXRvJiBtYXAgPSBzdGF0ZU1hcCgpOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtYXAp
IHsKKyAgICAgICAgYXV0byogcHJvY2VzcyA9IHN0YXRlLmtleTsKKyAgICAgICAgZm9yIChhdXRv
JiBtYW5hZ2VyIDogc3RhdGUudmFsdWUtPm1hbmFnZXJzKCkpIHsKKyAgICAgICAgICAgIGlmICht
YXAuZmluZChwcm9jZXNzKSA9PSBtYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBtYW5hZ2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YmVnaW5Nb25pdG9yaW5n
Q2FwdHVyZURldmljZXMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
KworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbdGhpc10geworICAgICAgICBtX2NhcHR1
cmVEZXZpY2VzID0gV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCk7CisKKyAgICAgICAgV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0RGV2aWNlc0NoYW5nZWRPYnNlcnZlcihb
dGhpc10oKSB7CisgICAgICAgICAgICBhdXRvIG9sZERldmljZXMgPSBXVEZNb3ZlKG1fY2FwdHVy
ZURldmljZXMpOworICAgICAgICAgICAgbV9jYXB0dXJlRGV2aWNlcyA9IFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygp
OworCisgICAgICAgICAgICBpZiAobV9jYXB0dXJlRGV2aWNlcy5zaXplKCkgPT0gb2xkRGV2aWNl
cy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGhhdmVDaGFuZ2VzID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgZm9yIChhdXRvICZuZXdEZXZpY2UgOiBtX2NhcHR1cmVEZXZpY2VzKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdEZXZpY2UudHlwZSgpICE9IFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiBuZXdEZXZpY2UudHlwZSgpICE9IFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIGluZGV4
ID0gb2xkRGV2aWNlcy5maW5kTWF0Y2hpbmcoWyZuZXdEZXZpY2VdIChhdXRvJiBvbGREZXZpY2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdEZXZpY2UucGVyc2lzdGVudElk
KCkgPT0gb2xkRGV2aWNlLnBlcnNpc3RlbnRJZCgpICYmIG5ld0RldmljZS5lbmFibGVkKCkgIT0g
b2xkRGV2aWNlLmVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBoYXZlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmICghaGF2ZUNoYW5nZXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2hlbiBhIGRldmljZSB3aXRoIGNhbWVyYSBhbmQg
bWljcm9waG9uZSBpcyBhdHRhY2hlZCBvciBkZXRhY2hlZCwgdGhlIENhcHR1cmVEZXZpY2Ugbm90
aWZpY2F0aW9uIGZvcgorICAgICAgICAgICAgLy8gdGhlIGRpZmZlcmVudCBkZXZpY2VzIHdvbid0
IGFycml2ZSBhdCB0aGUgc2FtZSB0aW1lIHNvIGRlbGF5IGEgYml0IHNvIHdlIGNhbiBjb2FsZXNj
ZSB0aGUgY2FsbGJhY2tzLgorICAgICAgICAgICAgaWYgKCFtX2RlYm91bmNlVGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgICAgICAgICBtX2RlYm91bmNlVGltZXIuc3RhcnRPbmVTaG90KGRldmlj
ZUNoYW5nZURlYm91bmNlVGltZXJJbnRlcnZhbCk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaAppbmRleCA4MTk5OGI0YWNiN2RkZjkx
ZDUwYTgzYzc5ZDJlNWNhYzNkMTg3NDczLi5hZTE2ZWJlZDg1ZDgwYmZkY2FjMDVlYzZiODBjNzY0
M2I4ZWY1MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTIxLDYgKzIxLDggQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAi
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NhcHR1cmVEZXZpY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApAQCAtMzEsNiArMzMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXImIHNpbmdsZXRvbigpOwogCisgICAgVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXIoKTsKKwogICAgIHZvaWQgYWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKICAgICB2
b2lkIHJlbW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CiAKQEAgLTQ1LDcgKzQ5LDEzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGVueU5leHRVc2VyTWVkaWFSZXF1ZXN0KCkgeyBtX2RlbnlOZXh0
UmVxdWVzdCA9IHRydWU7IH0KIAorICAgIHZvaWQgYmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURldmlj
ZXMoKTsKKwogcHJpdmF0ZToKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworCisg
ICAgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IG1fY2FwdHVyZURldmljZXM7CisgICAg
UnVuTG9vcDo6VGltZXI8VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI+IG1fZGVib3VuY2VUaW1lcjsK
ICAgICBib29sIG1fY2FwdHVyZUVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2RlbnlOZXh0
UmVxdWVzdCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggNTQ3YjcyMTNkMjcwZGExY2I2YWRmN2FkMDExZDhiODlhMDU4YmU0Yy4uZmUz
MTU3OTZmMmE5MjA2OTkxZjdhMDFjZDRmZDk2MzY5MGIxNjE2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODQwLDcgKzM4NDAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKIHsKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnByb2Nlc3NQ
cmVncmFudGVkUmVxdWVzdHMoKTsKKyAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIoKS52aWV3SXNCZWNvbWluZ1Zpc2libGUoKTsKICNlbmRpZgogfQogCkBAIC02NDU2LDYgKzY0
NTYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1l
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpiZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpCit7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuYmVn
aW5Nb25pdG9yaW5nQ2FwdHVyZURldmljZXMoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZmU0M2MzOGQwZmY3YThj
MWZhNDlkOGU4ZTgzYjBjZTZhYmVkMjQ0Mi4uZmQzOTJiZDQ0YmNmOGZlYjY4ZjAyY2JkZGM1YmM3
MDkwOGM1MGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0
ODcsNiArMTQ4Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHJlcXVlc3RVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExl
dmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJl
cXVlc3QmKTsKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luRGF0YSwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luRGF0YSk7CisgICAgdm9pZCBi
ZWdpbk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpOwogCiAgICAgdm9pZCBydW5Nb2RhbCgpOwog
ICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYjMxZjVmMGJlMzRjYzk0ODkyN2E5YjEzNmQwY2MzMmM1MWJjOWMy
YS4uNmQyOWE5ZmQyZTQ2M2RmOWEwZjA2ZTAzNDdmYWM2NDUxYjVjMDg2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjg3LDYg
KzI4Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBNZWRpYVN0ZWFtIG1l
c3NhZ2VzCiAgICAgUmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1
c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIHN0
cnVjdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgcmVxdWVzdCkKICAgICBFbnVtZXJhdGVN
ZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIpCisgICAgQmVnaW5Nb25pdG9yaW5nQ2FwdHVyZURl
dmljZXMoKQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGE3MWQ1Mzk4
NzRjYjc2OTNhZGZjZmNiMmE3MTE1NTNiYmRiZTE4My4uZmFhYjRkNWQwODM2Zjc3NTcxMWI3NzRh
YmY0OTM4Y2RmNGY4MDQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03NCw2ICs3NCw3IEBACiAJCTA3NEU3NUZFMURGMjIxMTkwMEQz
MThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NEU3NjAyMURGNzA3QkUwMEQzMThFQyAv
KiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NjAwMURGNzA3NUQwMEQzMThFQyAvKiBNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCAqLzsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAw
NUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29u
dGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKKwkJMDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9OwogCQkwN0E1RUJCQjFDN0JBNDNF
MDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFt
ZUhhbmRsZVJlZi5jcHAgKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0Zy
YW1lSGFuZGxlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAw
RTkwMDQwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZl
QnJvd3NpbmdTUEkuaCAqLzsgfTsKQEAgLTk0NDcsNiArOTQ0OCw3IEBACiAJCQkJQ0Q0OTFCMTMx
RTczNDgyMTAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNENDkxQjE4MUU3MzUyNTUwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JC
RUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0
QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QTNDQzE4RDE5QjA2NDE5MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc0RTc1RkUxREYyMjExOTAwRDMx
OEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggOWNjYWNlMDU3
N2M3ZmJjOGZmNTcwNmJkZmFkOTNlNDM3Y2M2ZTFmMy4uNWZlZjYwZWVjNDgwOTA5YWRiZmY5ODMw
ZjNmNDcyMzQwYjQyZWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNiArNDAsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25z
dGV4cHIgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGZvY3VzZWRBY3Rp
dmVXaW5kb3cgPSB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKwogc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlUmVxdWVzdElEKCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlUmVxdWVzdElEID0g
MTsKQEAgLTUzLDYgKzU1LDggQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYgcGEKIAogVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCkKIHsKKyAgICBpZiAobV9tb25pdG9yaW5nQWN0aXZpdHlTdGF0ZUNoYW5nZSkKKyAgICAg
ICAgbV9wYWdlLmNvcmVQYWdlKCktPnJlbW92ZUFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigq
dGhpcyk7CiAgICAgZm9yIChhdXRvJiBzYW5kYm94RXh0ZW5zaW9uIDogbV91c2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucykKICAgICAgICAgc2FuZGJveEV4dGVuc2lvbi52YWx1ZS0+cmV2
b2tlKCk7CiB9CkBAIC0yMjIsNiArMjI2LDc3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjCiAg
ICAgfQogfQogCitVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjphZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuVHlwZT4oKTsKKyAgICBtX2RldmljZUNoYW5nZU9ic2VydmVy
TWFwLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKG9ic2VydmVyKSk7CisKKyAgICBpZiAoIW1fbW9u
aXRvcmluZ0RldmljZUNoYW5nZSkgeworICAgICAgICBtX21vbml0b3JpbmdEZXZpY2VDaGFuZ2Ug
PSB0cnVlOworICAgICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCZWdp
bk1vbml0b3JpbmdDYXB0dXJlRGV2aWNlcygpKTsKKyAgICB9CisgICAgcmV0dXJuIGlkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmVE
ZXZpY2VDaGFuZ2VPYnNlcnZlcihVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVy
VG9rZW4gdG9rZW4pCit7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9kZXZpY2VDaGFuZ2VPYnNl
cnZlck1hcC5yZW1vdmUodG9rZW4pOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2Fz
UmVtb3ZlZCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpj
YXB0dXJlRGV2aWNlc0NoYW5nZWQoRGV2aWNlQWNjZXNzU3RhdGUgYWNjZXNzU3RhdGUpCit7Cisg
ICAgLy8gV2hlbiBuZXcgbWVkaWEgaW5wdXQgYW5kL29yIG91dHB1dCBkZXZpY2VzIGFyZSBtYWRl
IGF2YWlsYWJsZSwgb3IgYW55IGF2YWlsYWJsZSBpbnB1dCBhbmQvb3IKKyAgICAvLyBvdXRwdXQg
ZGV2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUsIHRoZSBVc2VyIEFnZW50IE1VU1QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHMgaW4gYnJvd3NpbmcKKyAgICAvLyBjb250ZXh0cyB3aGVyZSBhdCBsZWFz
dCBvbmUgb2YgdGhlIGZvbGxvd2luZyBjcml0ZXJpYSBhcmUgbWV0LCBidXQgaW4gbm8gb3RoZXIg
Y29udGV4dHM6CisKKyAgICAvLyAqIFRoZSBwZXJtaXNzaW9uIHN0YXRlIG9mIHRoZSAiZGV2aWNl
LWluZm8iIHBlcm1pc3Npb24gaXMgImdyYW50ZWQiLAorICAgIC8vICogYW55IG9mIHRoZSBpbnB1
dCBkZXZpY2VzIGFyZSBhdHRhY2hlZCB0byBhbiBhY3RpdmUgTWVkaWFTdHJlYW0gaW4gdGhlIGJy
b3dzaW5nIGNvbnRleHQsIG9yCisgICAgLy8gKiB0aGUgYWN0aXZlIGRvY3VtZW50IGlzIGZ1bGx5
IGFjdGl2ZSBhbmQgaGFzIGZvY3VzLgorCisgICAgYm9vbCBpc0FjdGl2ZSA9IChtX3BhZ2UuY29y
ZVBhZ2UoKS0+YWN0aXZpdHlTdGF0ZSgpICYgZm9jdXNlZEFjdGl2ZVdpbmRvdykgPT0gZm9jdXNl
ZEFjdGl2ZVdpbmRvdzsKKyAgICBpZiAoIWlzQWN0aXZlICYmIGFjY2Vzc1N0YXRlID09IERldmlj
ZUFjY2Vzc1N0YXRlOjpOb0FjY2VzcykgeworICAgICAgICBpZiAoIWlzQWN0aXZlKSB7CisgICAg
ICAgICAgICBpZiAoIW1fbW9uaXRvcmluZ0FjdGl2aXR5U3RhdGVDaGFuZ2UpIHsKKyAgICAgICAg
ICAgICAgICBtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+YWRkQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fcGVuZGluZ0RldmljZUNoYW5n
ZUV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fYWNjZXNzU3RhdGVXaGVuRGV2aWNlc0NoYW5n
ZWQgPSBhY2Nlc3NTdGF0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBpZGVudGlmaWVycyA9IG1fZGV2aWNlQ2hhbmdlT2JzZXJ2ZXJNYXAua2V5cygpOwor
ICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwLmZpbmQoaWRlbnRpZmllcik7Cisg
ICAgICAgIGlmIChpdGVyYXRvciAhPSBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwLmVuZCgpKQor
ICAgICAgICAgICAgKGl0ZXJhdG9yLT52YWx1ZSkoKTsKKyAgICB9Cit9CisKK3ZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlv
blNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkKK3sK
KyAgICBpZiAoKG5ld0FjdGl2aXR5U3RhdGUgJiBmb2N1c2VkQWN0aXZlV2luZG93KSAhPSBmb2N1
c2VkQWN0aXZlV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFtX21vbml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hh
bmdlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbW9uaXRvcmluZ0FjdGl2aXR5
U3RhdGVDaGFuZ2UgPSBmYWxzZTsKKyAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPnJlbW92ZUFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CisgICAgfSk7CisKKyAgICBpZiAoIW1f
cGVuZGluZ0RldmljZUNoYW5nZUV2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BlbmRp
bmdEZXZpY2VDaGFuZ2VFdmVudCA9IGZhbHNlOworICAgIGF1dG8gYWNjZXNzU3RhdGUgPSBtX2Fj
Y2Vzc1N0YXRlV2hlbkRldmljZXNDaGFuZ2VkOworICAgIG1fYWNjZXNzU3RhdGVXaGVuRGV2aWNl
c0NoYW5nZWQgPSBEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nlc3M7CisgICAgY2FwdHVyZURldmlj
ZXNDaGFuZ2VkKGFjY2Vzc1N0YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGE3ZWZjOGFkZWFhZWU1MDkwNWFjNDBhNzg1MjU1ZThm
NmY4YjQxNDAuLjU3NDY3MTJjMDZmOTg2MjEwMDBiYzQ3NGQzMjdjNThiMDZhYmY5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFDYW5TdGFydExpc3RlbmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFp
bnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Qu
aD4KQEAgLTM3LDggKzM4LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7
CiAKLWNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcgotICAgIDogcHJpdmF0
ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIgeworZW51bSBjbGFzcyBEZXZpY2VBY2Nl
c3NTdGF0ZSB7IE5vQWNjZXNzLCBTZXNzaW9uQWNjZXNzLCBQZXJzaXN0ZW50QWNjZXNzIH07CisK
K2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+LCBwcml2YXRlIFdlYkNv
cmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHJpdmF0ZSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
Q2hhbmdlT2JzZXJ2ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpOwpAQCAtNTUsMTEgKzU3LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50
VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucyYmKTsKICAgICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKKyAgICBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQ6
OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIo
V2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuKTsKKwor
ICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIHNlbmRVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3QmKTsKIAogICAgIC8vIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lcgotICAgIHZv
aWQgbWVkaWFDYW5TdGFydChXZWJDb3JlOjpEb2N1bWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQg
bWVkaWFDYW5TdGFydChXZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOworCisgICAgLy8gV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyCisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0
eVN0YXRlLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbmV3QWN0aXZp
dHlTdGF0ZSkgZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZU1lZGlhUmVxdWVzdEZyb21NYXBzKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsKIApAQCAtNzMsMTAgKzgzLDI5IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1
ZXN0PiwgdWludDY0X3Q+IG1fbWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0VG9JRE1hcDsK
IAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fdXNlck1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlVzZXJN
ZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+PiBtX2RldmljZUNoYW5nZU9ic2VydmVyTWFwOworICAgIERldmljZUFjY2Vzc1N0YXRlIG1f
YWNjZXNzU3RhdGVXaGVuRGV2aWNlc0NoYW5nZWQgeyBEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nl
c3MgfTsKKyAgICBib29sIG1fbW9uaXRvcmluZ0RldmljZUNoYW5nZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3BlbmRpbmdEZXZpY2VDaGFuZ2VFdmVudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX21v
bml0b3JpbmdBY3Rpdml0eVN0YXRlQ2hhbmdlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJLaXQ6OkRldmljZUFjY2Vzc1N0YXRlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZSwKKyAgICAgICAgV2Vi
S2l0OjpEZXZpY2VBY2Nlc3NTdGF0ZTo6Tm9BY2Nlc3MsCisgICAgICAgIFdlYktpdDo6RGV2aWNl
QWNjZXNzU3RhdGU6OlNlc3Npb25BY2Nlc3MsCisgICAgICAgIFdlYktpdDo6RGV2aWNlQWNjZXNz
U3RhdGU6OlBlcnNpc3RlbnRBY2Nlc3MKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjZW5kaWYgLy8gVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKaW5k
ZXggNmY2MDU3NDJlZWMzMDQyMDJhNjQwNGI1MzViY2E3YzU1NTliNGZkMS4uMGIwNmQ2MzkyOTlk
YjU0Zjc0YzhhMDI2ZDAyM2EwNjk5NzBkMGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjIsNiArNjIsMTYgQEAgdm9pZCBXZWJVc2VyTWVk
aWFDbGllbnQ6OmNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdChNZWRpYURldmlj
ZXNFbnVtZXIKICAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCku
Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24ocmVxdWVzdCk7CiB9CiAKK1dlYlVzZXJNZWRp
YUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBXZWJVc2VyTWVkaWFDbGllbnQ6OmFk
ZERldmljZUNoYW5nZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIG9ic2VydmVyKQor
eworICAgIHJldHVybiBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCku
YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGTW92ZShvYnNlcnZlcikpOworfQorCit2b2lkIFdl
YlVzZXJNZWRpYUNsaWVudDo6cmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdl
T2JzZXJ2ZXJUb2tlbiB0b2tlbikKK3sKKyAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCkucmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIodG9rZW4pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNlbmRpZiAvLyBNRURJQV9TVFJFQU0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2Vy
TWVkaWFDbGllbnQuaAppbmRleCBhNmUzMTMyNjJkNWJhN2M0YmFmNDNiZDMwNGYzZDg2OTgwOTRm
MzZjLi4xMDkzMDQ1M2NlNzk3ZWRkOTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDYgKzQyLDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlcyhXZWJDb3JlOjpNZWRpYURldmlj
ZXNFbnVtZXJhdGlvblJlcXVlc3QmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbE1lZGlhRGV2aWNl
c0VudW1lcmF0aW9uUmVxdWVzdChXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVl
c3QmKSBmaW5hbDsKIAorICAgIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVt
b3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbikgZmluYWw7
CisKICAgICB2b2lkIGluaXRpYWxpemVGYWN0b3JpZXMoKTsKIAogICAgIFdlYlBhZ2UmIG1fcGFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MmJhOThiNmJkNzhjZGNkNWZkZjZkNmU0NjM1Nzk5NDdkNGE0NTEwMC4uZDU4ZjQ2NTRjYjkzMGU4
ZGFlZTYwNzEwZGFhNDJmMTYzZjc2YTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3MzUsNiArMzczNSwxMiBAQCB2b2lkIFdlYlBhZ2U6
OmRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Y29uc3QgVmVjdAogewogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLT5k
aWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQsIGRldmljZXMsIFdU
Rk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2Vz
cyk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vz
c1N0YXRlIGFjY2Vzc1N0YXRlKQoreworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLT5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoYWNjZXNzU3RhdGUpOworfQorCiAjaWYgRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKIHZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiYgZXh0ZW5z
aW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCAyYjI3Y2M4ODJlMjVkYTcyMzlkZTA5YTAxY2NiM2ViODQ5OGJjNjNjLi5lNTFhNjA0YzcwOGU2
ZTQyZGRmM2M1ODAyNGJjOWMzNTc2YjhiMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMjgsNiArMjI4LDcgQEAgY2xhc3MgV2ViVG91Y2hFdmVu
dDsKIGNsYXNzIFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb247CiAKK2VudW0gY2xhc3MgRGV2aWNlQWNjZXNzU3RhdGU7CiBlbnVtIEZpbmRP
cHRpb25zIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIERyYWdDb250cm9sbGVyQWN0aW9uOwogCkBA
IC01NjUsNiArNTY2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyJiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKSB7IHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI7IH0KICAgICB2b2lkIHByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgp
OworICAgIHZvaWQgY2FwdHVyZURldmljZXNDaGFuZ2VkKERldmljZUFjY2Vzc1N0YXRlKTsKICNl
bmRpZgogCiAgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggNjQzNjA3NjhhMzBjNjIxNDYyYWM1NWQ0Y2IzYWNlOTAyNDI4NzhmNS4uYjcxZjI4YjZk
ZmEwMzQyNDM0NGRkOTJmYmJlODkxOGIwY2UyYzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTgsNiArMzE4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXNlck1lZGlh
QWNjZXNzV2FzR3JhbnRlZCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6Q2FwdHVyZURl
dmljZSBhdWRpb0RldmljZSwgV2ViQ29yZTo6Q2FwdHVyZURldmljZSB2aWRlb0RldmljZSwgU3Ry
aW5nIG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KQogICAgIFVzZXJNZWRpYUFjY2Vzc1dh
c0RlbmllZCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgcmVhc29uLCBTdHJpbmcgaW52
YWxpZENvbnN0cmFpbnQpCiAgICAgRGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVp
bnQ2NF90IHVzZXJNZWRpYUlELCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNl
cywgU3RyaW5nIG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0LCBib29sIGhhc1BlcnNpc3Rl
bnRBY2Nlc3MpCisgICAgQ2FwdHVyZURldmljZXNDaGFuZ2VkKGVudW0gV2ViS2l0OjpEZXZpY2VB
Y2Nlc3NTdGF0ZSBhY2Nlc3NTdGF0ZSkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQog
ICAgIEdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoV2ViS2l0OjpNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zIHNhbmRib3hFeHRlbnNpb25zKQogICAgIFJldm9rZVVzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNp
b25JRHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzEzZmZkNDAzZjNlMDJlZTk5N2ZkODY1Yzc0MzRhNjI4ZTlkOTM1Ny4u
ZjFmYzhhYWRlMWQwYzBjMDAwMWY5NWY4ZDNkNmQ4MzJkMmE4NzU3MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE4LTA4LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTW92ZSBjYXB0dXJlIGRldmljZSBtb25pdG9yaW5n
IHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg4NTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzI1MTc4Nz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9k
ZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0OiBVcGRhdGVkLgorICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWw6IFVwZGF0ZWQuCisKIDIw
MTgtMDgtMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW9kZXJuaXplIHJlc3VsdHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDY0YzZiNjEwNzZmYWFhM2RlNGY4MTY4Zjc5NjljZjEwZjYwN2E2OWQuLjhkY2Y1MjZmZDYw
MjQ1NTQ2NzAxYjY3YTZmZTliMmM5MGU4NzUwYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSw2IEBACiAKIFBBU1MgJ2RldmljZWNoYW5nZScgZXZlbnQgZmlyZWQg
d2hlbiBkZXZpY2UgbGlzdCBjaGFuZ2VzIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudHMgZmly
ZWQgcXVpY2tseSBhcmUgY29hbGVzY2VkIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudCBpcyBu
b3QgZmlyZWQgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBoYXMgZm9jdXMgb3IgcGVybWlzc2lv
biB0byBjYXB0dXJlIAorUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudCBpcyBmaXJlZCB3aGVuIHRo
ZSBkb2N1bWVudCBkb2Vzbid0IGhhcyBmb2N1cyBidXQgaGFzIHBlcm1pc3Npb24gdG8gY2FwdHVy
ZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hh
bmdlLWV2ZW50LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNo
YW5nZS1ldmVudC0yLmh0bWwKaW5kZXggNDNkNWYyYmRmZWRkOTFlY2JkMjNmYzcxYjgzNTcxZTA3
MDdiMjU1Yi4uNjE0YjhkMTEwOWRjNzkwMjk5YmRiYjcwOGJlY2Y2YWI0NzkzOWFhNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZl
bnQtMi5odG1sCkBAIC02LDE2ICs2LDI1IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KLSAg
ICBsZXQgZGV2aWNlSWRzID0gW107Ci0gICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgbGV0IHN0cmVhbSA9IG51bGw7CisgICAgCisgICAgbGV0IHNldHVwID0gYXN5bmMgKHRl
c3QpID0+IHsKICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdCgidGVzdCByZXF1aXJlcyBpbnRlcm5hbCBBUEkiKTsKIAogICAg
ICAgICB0ZXN0LmFkZF9jbGVhbnVwKCgpID0+IHsgdGVzdFJ1bm5lci5yZXNldE1vY2tNZWRpYURl
dmljZXMoKTsgfSk7CiAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9u
KHRydWUpOworICAgICAgICAKKyAgICAgICAgc3RyZWFtID0gbnVsbDsKKyAgICB9CisKKyAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICAgICAgYXdhaXQgc2V0dXAo
dGVzdCk7CiAKLSAgICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoeyBhdWRpbzp0cnVlLCB2aWRlbzp0cnVlIH0pOworICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOnRydWUsIHZpZGVvOnRydWUgfSkKKyAg
ICAgICAgICAgIC50aGVuKHMgPT4gc3RyZWFtID0gcykKIAogICAgICAgICBsZXQgZGV2aWNlcyA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpOwogCkBAIC0y
OSw3ICszOCw3IEBACiAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2Ug
PSByZXNvbHZlOwogICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgY29uc29sZS5sb2coImV2ZW50IDEgdGFraW5nIGEgbG9uZyB0aW1lIik7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5sb2coImV2ZW50IDEgdG9vayB0b28gbG9uZyIpOwogICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0sIDUwMDApOwogICAgICAgICAgICAgdGVzdFJ1
bm5lci5hZGRNb2NrQ2FtZXJhRGV2aWNlKCJpZDEiLCAibXkgY2FtZXJhIik7CkBAIC00MSw3ICs1
MCw3IEBACiAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
ICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSByZXNv
bHZlOwogICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY29u
c29sZS5sb2coImV2ZW50IDIgdGFraW5nIGEgbG9uZyB0aW1lIik7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5sb2coImV2ZW50IDIgdG9vayB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKICAgICAgICAgICAgIH0sIDUwMDApOwogICAgICAgICAgICAgdGVzdFJ1bm5lci5h
ZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQyIiwgIm15IG1pYyIpOwpAQCAtNTEsNiArNjAsMTAy
IEBACiAgICAgICAgIGFzc2VydF9lcXVhbHMoZGV2aWNlc1swXS5sYWJlbCwgIm15IG1pYyIpOwog
CiAgICAgfSwgIidkZXZpY2VjaGFuZ2UnIGV2ZW50IGZpcmVkIHdoZW4gZGV2aWNlIGxpc3QgY2hh
bmdlcyIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisKKyAgICAgICAg
YXdhaXQgc2V0dXAodGVzdCk7CisKKyAgICAgICAgbGV0IGV2ZW50Q291bnQgPSAwOworICAgICAg
ICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gKGV2dCkgPT4geworICAgICAg
ICAgICAgICAgICsrZXZlbnRDb3VudDsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0sIDUw
MCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAg
ICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNl
Y2hhbmdlIHRvb2sgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICB9LCA0MDAwKTsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9w
aG9uZURldmljZSgiaWQ0IiwgIm1pY3JvcGhvbmUgMyIpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQ1IiwgIm1pY3JvcGhvbmUgNCIpOworICAgICAg
ICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAxLCAib25lIGV2ZW50IGZp
cmVkIik7CisKKyAgICB9LCAiJ2RldmljZWNoYW5nZScgZXZlbnRzIGZpcmVkIHF1aWNrbHkgYXJl
IGNvYWxlc2NlZCIpOworCisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKwor
ICAgICAgICBhd2FpdCBzZXR1cCh0ZXN0KTsKKworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBsZXQgdGltZW91dCA9IHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ3aW5kb3cub25ibHVyIHRv
b2sgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
LCA1MDAwKTsKKworICAgICAgICAgICAgd2luZG93Lm9uYmx1ciA9ICgpID0+IHsKKyAgICAgICAg
ICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGludGVybmFscy5zZXRQYWdl
SXNGb2N1c2VkQW5kQWN0aXZlKGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXdhaXQg
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKGRvY3VtZW50Lmhhc0ZvY3VzKCksICJkb2N1bWVudC5oYXNGb2N1cygpIik7CisKKyAgICAg
ICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSAoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuaGFzRm9jdXMoKSwgImRldmljZWNo
YW5nZSBzaG91bGQgb25seSBmaXJlIHdoZW4gdGhlIGRvY3VtZW50IGlzIGZvY3VzZWQgYW5kIGFj
dGl2ZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGludGVybmFscy5z
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKHRydWUpOworICAgICAgICAgICAgfSwgMjAwKTsKKwor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRNb2NrTWljcm9waG9uZURldmljZSgiaWQzIiwgIm1p
Y3JvcGhvbmUgMiIpOworICAgICAgICB9KTsKKworICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVu
dCBpcyBub3QgZmlyZWQgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBoYXMgZm9jdXMgb3IgcGVy
bWlzc2lvbiB0byBjYXB0dXJlIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKworICAgICAgICBhd2FpdCBzZXR1cCh0ZXN0KTsKKworICAgICAgICBhd2FpdCBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOnRydWUsIHZpZGVvOnRydWUgfSkK
KyAgICAgICAgICAgIC50aGVuKHMgPT4gc3RyZWFtID0gcyk7CisKKyAgICAgICAgYXdhaXQgbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbGV0IHRpbWVvdXQg
PSBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygid2luZG93
Lm9uYmx1ciB0b29rIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgICAgfSwgNTAwMCk7CisKKyAgICAgICAgICAgIHdpbmRvdy5vbmJsdXIgPSAoKSA9PiB7
CisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOworICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0UGFnZUlzRm9jdXNlZEFuZEFjdGl2ZShmYWxzZSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAg
IGFzc2VydF9mYWxzZShkb2N1bWVudC5oYXNGb2N1cygpLCAiZG9jdW1lbnQuaGFzRm9jdXMoKSIp
OworCisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0g
KCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShkb2N1bWVudC5oYXNGb2N1cygp
LCAiZGV2aWNlY2hhbmdlIHNob3VsZCBmaXJlIHdoZW4gdGhlIGRvY3VtZW50IGlzIG5vdCBmb2N1
c2VkIGJ1dCBjYW4gY2FwdHVyZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgICAgIH07CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkTW9ja01pY3JvcGhvbmVEZXZp
Y2UoImlkMyIsICJtaWNyb3Bob25lIDIiKTsKKyAgICAgICAgfSk7CisKKyAgICB9LCAiJ2Rldmlj
ZWNoYW5nZScgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgZG9jdW1lbnQgZG9lc24ndCBoYXMgZm9j
dXMgYnV0IGhhcyBwZXJtaXNzaW9uIHRvIGNhcHR1cmUiKTsKKwogICAgIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>