<?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>228753</bug_id>
          
          <creation_ts>2021-08-03 14:49:46 -0700</creation_ts>
          <short_desc>[iOS] getUserMedia sometimes doesn&apos;t capture from specified microphone</short_desc>
          <delta_ts>2021-08-06 12:01:44 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1781745</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-03 14:49:46 -0700</bug_when>
    <thetext>getUserMedia sometimes doesn&apos;t capture from the non-default microphone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781746</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-03 14:50:08 -0700</bug_when>
    <thetext>rdar://79704226</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781758</commentid>
    <comment_count>2</comment_count>
      <attachid>434863</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-03 15:19:58 -0700</bug_when>
    <thetext>Created attachment 434863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781846</commentid>
    <comment_count>3</comment_count>
      <attachid>434863</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-04 01:34:13 -0700</bug_when>
    <thetext>Comment on attachment 434863
Patch

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

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:130
&gt; +    else if (captureCount || preparingToCapture) {

Is there a possibility we go through that state:
preparingToCapture = true, captureCount = false -&gt; PlayAndRecord
preparingToCapture = false, captureCount = false -&gt; Not PlayAndRecord
preparingToCapture = false, captureCount = true -&gt; PlayAndRecord again

I wonder whether preparingToCapture mechanism might not get sometimes broken leading to flaky PlayAndRecord value in GPUProcess.

Now that we are doing capture in GPUProcess, maybe we should let know the GPUProcess AudioSession that we are doing capture (using startProducing/stopProducing signal).
Then the GPUProcess AudioSession would actually set its parameters based on what WebProcess and GPUProcess capture say.
It seems easier to manipulate the real AudioSession to handle capture in GPUProcess than at distance in WebProcess.

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:303
&gt; +        RELEASE_LOG_ERROR(Media, &quot;failed to set preferred buffer duration to %f with error: %@&quot;, duration, error.localizedDescription);

RELEASE_LOG_ERROR_IF(error, ...)

&gt; Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:151
&gt; +        if (deviceUID == String(portDescription.UID)) {

Maybe better to convert deviceUID to NSString or const char* once instead of converting every portDescription.UID to String?

&gt; Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:158
&gt; +        RELEASE_LOG_ERROR(WebRTC, &quot;failed to find preferred input &apos;%s&apos;&quot;, deviceUID.ascii().data());

Do we want %{public}s?

&gt; Source/WebCore/platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm:164
&gt; +        RELEASE_LOG_ERROR(WebRTC, &quot;failed to set preferred input to &apos;%s&apos; with error: %@&quot;, deviceUID.ascii().data(), error.localizedDescription);

Do we want %{public}s?

&gt; Source/WebKit/ChangeLog:12
&gt; +        capture begins.

The Mac wk2 debug tests failures seem relevant, it seems the PlayAndRecord category is not always set with this code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782004</commentid>
    <comment_count>4</comment_count>
      <attachid>434863</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-04 12:41:58 -0700</bug_when>
    <thetext>Comment on attachment 434863
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:12
&gt;&gt; +        capture begins.
&gt; 
&gt; The Mac wk2 debug tests failures seem relevant, it seems the PlayAndRecord category is not always set with this code path.

The assert:

    ASSERT(!DeprecatedGlobalSettings::shouldManageAudioSessionCategory() || AudioSession::sharedSession().category() == AudioSession::CategoryType::PlayAndRecord);

is invalid because `AudioSession::sharedSession()` doesn&apos;t return the audio session in use by the GPU Process, where the RemoteAudioSessionProxyManager which owns an audio session. It looks like this is a more general problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782018</commentid>
    <comment_count>5</comment_count>
      <attachid>434863</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-04 13:22:54 -0700</bug_when>
    <thetext>Comment on attachment 434863
Patch

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:12
&gt;&gt;&gt; +        capture begins.
&gt;&gt; 
&gt;&gt; The Mac wk2 debug tests failures seem relevant, it seems the PlayAndRecord category is not always set with this code path.
&gt; 
&gt; The assert:
&gt; 
&gt;     ASSERT(!DeprecatedGlobalSettings::shouldManageAudioSessionCategory() || AudioSession::sharedSession().category() == AudioSession::CategoryType::PlayAndRecord);
&gt; 
&gt; is invalid because `AudioSession::sharedSession()` doesn&apos;t return the audio session in use by the GPU Process, where the RemoteAudioSessionProxyManager which owns an audio session. It looks like this is a more general problem.

Actually, the assert is valid, the problem is that RemoteAudioSessionProxyManager creates an uses an AudioSession. This is bad because any code that moves from the WP to the GPUP will continue to use `AudioSession::sharedSession` so we&apos;ll end up with two session objects in the GPUP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782039</commentid>
    <comment_count>6</comment_count>
      <attachid>434863</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-04 14:07:30 -0700</bug_when>
    <thetext>Comment on attachment 434863
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/ChangeLog:12
&gt;&gt;&gt;&gt; +        capture begins.
&gt;&gt;&gt; 
&gt;&gt;&gt; The Mac wk2 debug tests failures seem relevant, it seems the PlayAndRecord category is not always set with this code path.
&gt;&gt; 
&gt;&gt; The assert:
&gt;&gt; 
&gt;&gt;     ASSERT(!DeprecatedGlobalSettings::shouldManageAudioSessionCategory() || AudioSession::sharedSession().category() == AudioSession::CategoryType::PlayAndRecord);
&gt;&gt; 
&gt;&gt; is invalid because `AudioSession::sharedSession()` doesn&apos;t return the audio session in use by the GPU Process, where the RemoteAudioSessionProxyManager which owns an audio session. It looks like this is a more general problem.
&gt; 
&gt; Actually, the assert is valid, the problem is that RemoteAudioSessionProxyManager creates an uses an AudioSession. This is bad because any code that moves from the WP to the GPUP will continue to use `AudioSession::sharedSession` so we&apos;ll end up with two session objects in the GPUP.

https://bugs.webkit.org/show_bug.cgi?id=228795</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782106</commentid>
    <comment_count>7</comment_count>
      <attachid>434954</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-04 17:24:15 -0700</bug_when>
    <thetext>Created attachment 434954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782241</commentid>
    <comment_count>8</comment_count>
      <attachid>434997</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-05 09:40:58 -0700</bug_when>
    <thetext>Created attachment 434997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782244</commentid>
    <comment_count>9</comment_count>
      <attachid>434997</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-05 09:47:51 -0700</bug_when>
    <thetext>Comment on attachment 434997
Patch

We need to think of whether changing the default device should fire a devicechange event.
As per spec, I would say yes, and it might make sense in MacOS. But let&apos;s leave that to a follow-up

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

&gt; Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp:122
&gt; +    for (const auto&amp; source : m_audioCaptureSources) {

Could we use anyOf maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782283</commentid>
    <comment_count>10</comment_count>
      <attachid>435007</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-05 10:57:04 -0700</bug_when>
    <thetext>Created attachment 435007
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782287</commentid>
    <comment_count>11</comment_count>
      <attachid>434997</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-05 11:01:13 -0700</bug_when>
    <thetext>Comment on attachment 434997
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp:122
&gt;&gt; +    for (const auto&amp; source : m_audioCaptureSources) {
&gt; 
&gt; Could we use anyOf maybe?

Good idea, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782309</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-05 12:29:15 -0700</bug_when>
    <thetext>Committed r280702 (240298@main): &lt;https://commits.webkit.org/240298@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435007.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782523</commentid>
    <comment_count>13</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-08-06 10:46:30 -0700</bug_when>
    <thetext>it looks like the changes in https://trac.webkit.org/changeset/280702/webkit

broke two tests:
fast/speechrecognition/start-recognition-twice-exception.html [ Crash ]
fast/text/international/system-language/navigator-language/navigator-language-en-GB.html [ Crash ]

History:
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;test=fast%2Fspeechrecognition%2Fstart-recognition-twice-exception.html&amp;test=fast%2Ftext%2Finternational%2Fsystem-language%2Fnavigator-language%2Fnavigator-language-en-GB.html

Log: https://ews-build.s3-us-west-2.amazonaws.com/macOS-AppleSilicon-Big-Sur-Debug-WK2-Tests-EWS/r435044-9395-rerun/fast/speechrecognition/start-recognition-twice-exception-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782538</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-06 12:01:44 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #13)
&gt; it looks like the changes in https://trac.webkit.org/changeset/280702/webkit
&gt; 
&gt; broke two tests:
&gt; fast/speechrecognition/start-recognition-twice-exception.html [ Crash ]
&gt; fast/text/international/system-language/navigator-language/navigator-
&gt; language-en-GB.html [ Crash ]
&gt; 
&gt; History:
&gt; https://results.webkit.org/?suite=layout-tests&amp;suite=layout-
&gt; tests&amp;test=fast%2Fspeechrecognition%2Fstart-recognition-twice-exception.
&gt; html&amp;test=fast%2Ftext%2Finternational%2Fsystem-language%2Fnavigator-
&gt; language%2Fnavigator-language-en-GB.html
&gt; 
&gt; Log:
&gt; https://ews-build.s3-us-west-2.amazonaws.com/macOS-AppleSilicon-Big-Sur-
&gt; Debug-WK2-Tests-EWS/r435044-9395-rerun/fast/speechrecognition/start-
&gt; recognition-twice-exception-crash-log.txt

That was fixed by r280722 (bug 228847)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434863</attachid>
            <date>2021-08-03 15:19:58 -0700</date>
            <delta_ts>2021-08-04 17:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>ios-preferred-capture-device-patch.txt</filename>
            <type>text/plain</type>
            <size>22934</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZGFiYzU1ODY3ZDAuLmVkOGFhNzczZmQ0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDcyIEBACisyMDIxLTA4LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIGdldFVzZXJNZWRpYSBzb21ldGltZXMgZG9lc24ndCBj
YXB0dXJlIGZyb20gc3BlY2lmaWVkIG1pY3JvcGhvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODc1MworICAgICAgICByZGFyOi8vNzk3MDQyMjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc3lz
dGVtIHdpbGwgYWx3YXlzIGNob29zZSB0aGUgImRlZmF1bHQiIGF1ZGlvIGlucHV0IHNvdXJjZSB1
bmxlc3MKKyAgICAgICAgK1tBVkF1ZGlvU2Vzc2lvbiBzZXRQcmVmZXJyZWRJbnB1dDplcnJvcjpd
IGlzIGNhbGxlZCBmaXJzdCwgYW5kIHRoYXQgb25seSB3b3JrcworICAgICAgICBpZiB0aGUgYXVk
aW8gc2Vzc2lvbiBjYXRlZ29yeSBoYXMgYmVlbiBzZXQgdG8gUGxheUFuZFJlY29yZCAqYmVmb3Jl
KiBpdCBpcyBjYWxsZWQsCisgICAgICAgIHNvIGNvbmZpZ3VyZSB0aGUgYXVkaW8gc2Vzc2lvbiBm
b3IgcmVjb3JkaW5nIGJlZm9yZSB3ZSBjaG9vc2UgYW5kIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAg
YXVkaW8gY2FwdHVyZSBkZXZpY2UuCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgbWFudWFsbHks
IHRoaXMgb25seSByZXByb2R1Y2VzIG9uIGhhcmR3YXJlLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQg
Y29uc3QpOiBBdWRpbworICAgICAgICBjYXB0dXJlIHJlcXVpcmVzIGFuIGFjdGl2ZSBhdWRpbyBz
ZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVTZXNzaW9uKTogTW92ZSBgI2lmIFVTRShBVURJT19TRVNTSU9OKWAKKyAgICAgICAgZ3Vh
cmQgaW5zaWRlIG9mIG1heWJlRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbiBzbyBpdCBpc24ndCBzcHJl
YWQgdGhyb3VnaG91dCB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnByb2Nlc3NXaWxsU3VzcGVu
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
Ojpwcm9jZXNzRGlkUmVzdW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKTogQWRkIGxv
Z2dpbmcsCisgICAgICAgIGNhbGwgYG1heWJlQWN0aXZhdGVBdWRpb1Nlc3Npb24oKWAgc28gd2Ug
YWN0aXZhdGUgdGhlIGF1ZGlvIHNlc3Npb24gaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luQ2FwdHVyaW5n
QXVkaW8pOiBOZXcsIHNldAorICAgICAgICBtX3ByZXBhcmluZ1RvQ2FwdHVyZUF1ZGlvIGFuZCBm
b3JjZSBhIHNlc3Npb24gc3RhdGUgdXBkYXRlIHNvIHdlIHdpbGwgc2V0IHRoZSBhdWRpbworICAg
ICAgICBzZXNzaW9uIGNhdGVnb3J5IHRvIFBsYXlBbmRSZWNvcmQgKmJlZm9yZSogc2VsZWN0aW5n
IHRoZSBjYXB0dXJlIGRldmljZS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6bWF5YmVEZWFjdGl2YXRlQXVkaW9TZXNzaW9uKTogTW92ZSAKKyAgICAgICAg
YCNpZiBVU0UoQVVESU9fU0VTU0lPTilgIGludG8gdGhlIGZ1bmN0aW9uIHNvIGl0IGRvZXNuJ3Qg
bmVlZCB0byBiZSBzcHJlYWQgCisgICAgICAgIHRocm91Z2hvdXQgdGhlIGZpbGUuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1heWJlQWN0aXZhdGVBdWRp
b1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6aXNBcHBsaWNhdGlvbkluQmFja2dyb3VuZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnByZXBhcmluZ1RvQ2FwdHVyZUF1ZGlv
IGNvbnN0KToKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6dXBkYXRlU2Vzc2lvblN0YXRlKTogU2V0IHByZWZlcnJlZCBidWZmZXIgc2l6ZQorICAgICAg
ICBhbmQgYXVkaW8gc2Vzc2lvbiBjYXRlZ29yeSBmb3IgY2FwdHVyZSB3aGVuIHdlJ3JlIHByZXBh
cmluZyB0byBjYXB0dXJlIGF1ZGlvIHNvIHRoZQorICAgICAgICBhdWRpbyBzZXNzaW9uIGJlaGF2
ZXMgYXMgZXhwZWN0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKTogTG9nIGFuIGVycm9yIGlmIHdlIGFyZSB1bmFibGUKKyAgICAgICAgdG8g
c2V0IHRoZSBwcmVmZXJyZWQgYnVmZmVyIHNpemUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKTogQ2FsbCBgc2Vz
c2lvbldpbGxCZWdpbkNhcHR1cmluZ0F1ZGlvKClgCisgICAgICAgIGJlZm9yZSBjcmVhdGluZyB0
aGUgY2FwdHVyZSBzb3VyY2Ugc28gdGhlIGF1ZGlvIHNlc3Npb24gaXMgY29uZmlndXJlZCBjb3Jy
ZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0UHJlZmVycmVkQXVk
aW9TZXNzaW9uRGV2aWNlVUlEKToKKyAgICAgICAgTmV3LCBzZXQgdGhlIHByZWZlcnJlZCBpbnB1
dCBzbyBjYXB0dXJlIHdpbGwgdXNlIHNlbGVjdCB0aGUgZGV2aWNlIHdlIHdhbnQuCisgICAgICAg
IChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzY2hlZHVsZVVw
ZGF0ZUNhcHR1cmVEZXZpY2VzKTogUmVtb3ZlCisgICAgICAgIG1fcmVjb21wdXRlRGV2aWNlcywg
YHNldEF1ZGlvQ2FwdHVyZURldmljZXNgIGhhcyBiZWVuIHJlc3RydWN0dXJlZCBzbyB3ZSBkb24n
dCBuZWVkIGl0LgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRBdWRpb0NhcHR1cmVEZXZp
Y2VzKTogRG9uJ3QgdXBkYXRlCisgICAgICAgIHRoZSBsaXN0IG9mIGNhcHR1cmUgZGV2aWNlcyB3
aGVuIHRoZSBkZWZhdWx0IGRldmljZSBjaGFuZ2VzLCBvbmx5IHdoZW4gYSBkZXZpY2UgaXMKKyAg
ICAgICAgYWRkZWQsIHJlbW92ZWQsIGVuYWJsZWQsIG9yIGRpc2FibGVkLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0Q2FwdHVyZURldmljZSk6IENh
bGwgYHNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRGAKKyAgICAgICAgc28gdGhlIGNv
cnJlY3QgZGV2aWNlIGlzIHNlbGVjdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvU2hh
cmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCk6IENsZWFyIG1fcGVyc2lzdGVudElELgorICAgICAg
ICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKTogUmV0dXJuIGFuIGVy
cm9yIHdpdGggYSBzdHJpbmcsIG9yIHRoZQorICAgICAgICB3ZWIgcHJvY2VzcyBjYW4gZGV0ZWN0
IGEgZmFpbHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
b3BQcm9kdWNpbmdEYXRhKTogQWRkIGxvZ2dpbmcuCisKIDIwMjEtMDctMjkgIEFkcmlhbiBQZXJl
eiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBh
biBpbXBvcnRlZCB0YXJnZXQgZm9yIHRoZSBsaWJnY3J5cHQgbGlicmFyeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAKaW5kZXggMTgxMWQ5YjZjYzM1Li4yNGFlYTMyN2M0MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcApAQCAtMTE2LDkgKzExNiwxNSBAQCBib29sIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6aGFzKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgdHlwZSkg
Y29ucwogCiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWN0aXZlQXVkaW9TZXNz
aW9uUmVxdWlyZWQoKSBjb25zdAogewotICAgIHJldHVybiBhbnlPZlNlc3Npb25zKFtdIChhdXRv
JiBzZXNzaW9uKSB7Ci0gICAgICAgIHJldHVybiBzZXNzaW9uLmFjdGl2ZUF1ZGlvU2Vzc2lvblJl
cXVpcmVkKCk7Ci0gICAgfSk7CisgICAgaWYgKGFueU9mU2Vzc2lvbnMoW10gKGF1dG8mIHNlc3Np
b24pIHsgcmV0dXJuIHNlc3Npb24uYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKTsgfSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgZm9yIChjb25zdCBhdXRvJiBzb3VyY2UgOiBtX2F1
ZGlvQ2FwdHVyZVNvdXJjZXMpIHsKKyAgICAgICAgaWYgKHNvdXJjZS5pc0NhcHR1cmluZ0F1ZGlv
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjYW5Qcm9kdWNlQXVkaW8o
KSBjb25zdApAQCAtMTk5LDEwICsyMDUsOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6cmVtb3ZlU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIAogICAg
IG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAg
IGlmIChoYXNOb1Nlc3Npb24oKSkKICAgICAgICAgbWF5YmVEZWFjdGl2YXRlQXVkaW9TZXNzaW9u
KCk7Ci0jZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIG1fbG9nZ2VyLT5y
ZW1vdmVMb2dnZXIoc2Vzc2lvbi5sb2dnZXIoKSk7CkBAIC0yMzcsMTcgKzI0MSwxMCBAQCBib29s
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBs
YXRmb3JtTWVkaWFTZXNzaW9uJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0jaWYg
VVNFKEFVRElPX1NFU1NJT04pCi0gICAgaWYgKGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkp
IHsKLSAgICAgICAgaWYgKCFBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFj
dGl2ZSh0cnVlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzZXNz
aW9uLmxvZ0lkZW50aWZpZXIoKSwgIiByZXR1cm5pbmcgZmFsc2UgZmFpbGVkIHRvIHNldCBhY3Rp
dmUgQXVkaW9TZXNzaW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHNlc3Npb24ubG9nSWRlbnRpZmll
cigpLCAiIHN1Y2Vzc2Z1bGx5IGFjdGl2YXRlZCBBdWRpb1Nlc3Npb24iKTsKLSAgICAgICAgbV9i
ZWNhbWVBY3RpdmUgPSB0cnVlOworICAgIGlmICghbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigp
KSB7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc2Vzc2lvbi5sb2dJZGVudGlm
aWVyKCksICIgcmV0dXJuaW5nIGZhbHNlLCBmYWlsZWQgdG8gYWN0aXZhdGUgQXVkaW9TZXNzaW9u
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGlmIChtX2lu
dGVycnVwdGVkKQogICAgICAgICBlbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok5vRmxhZ3MpOwpAQCAtMzk0LDkgKzM5MSw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpwcm9jZXNzV2lsbFN1c3BlbmQoKQogICAgICAgICBzZXNzaW9uLmNsaWVudCgpLnBy
b2Nlc3NJc1N1c3BlbmRlZENoYW5nZWQoKTsKICAgICB9KTsKIAotI2lmIFVTRShBVURJT19TRVNT
SU9OKQogICAgIG1heWJlRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwotI2VuZGlmCiB9CiAKIHZv
aWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzRGlkUmVzdW1lKCkKQEAgLTQx
MCwxMCArNDA1LDggQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnByb2Nlc3NE
aWRSZXN1bWUoKQogICAgIH0pOwogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgaWYgKCFt
X2JlY2FtZUFjdGl2ZSAmJiBhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpKSB7Ci0gICAgICAg
IG1fYmVjYW1lQWN0aXZlID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRB
Y3RpdmUodHJ1ZSk7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyaWVkIHRv
IHNldCBhY3RpdmUgQXVkaW9TZXNzaW9uLCAiLCBtX2JlY2FtZUFjdGl2ZSA/ICJzdWNjZWVkZWQi
IDogImZhaWxlZCIpOwotICAgIH0KKyAgICBpZiAoIW1fYmVjYW1lQWN0aXZlKQorICAgICAgICBt
YXliZUFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7CiAjZW5kaWYKIH0KIApAQCAtNDM3LDkgKzQzMCwx
OSBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbklzUGxheWluZ1Rv
V2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5nZQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKQogeworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisgICAgbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAg
IHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbldpbGxCZWdpbkNhcHR1cmluZ0F1ZGlvKCkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworICAgIG1fcHJlcGFyaW5nVG9DYXB0dXJlQXVkaW8gPSB0cnVlOwor
ICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworICAgIG1fcHJlcGFyaW5nVG9DYXB0dXJlQXVkaW8g
PSBmYWxzZTsKK30KKwogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnByb2Nlc3NE
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29tbWFuZEFyZ3VtZW50JiBhcmd1bWVudCkKIHsKICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRTZXNzaW9uKCk7CkBAIC02MDMsMTggKzYwNiwz
MSBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVTZXNz
aW9uU3RhdGUoKQogICAgIH0pOwogfQogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCiB2b2lkIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVEZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkK
IHsKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoIW1fYmVjYW1lQWN0aXZlIHx8ICFz
aG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyaWVkIHRvIHNldCBpbmFjdGl2ZSBBdWRpb1Nlc3Np
b24iKTsKICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2ZShm
YWxzZSk7CiAgICAgbV9iZWNhbWVBY3RpdmUgPSBmYWxzZTsKLX0KICNlbmRpZgorfQorCitib29s
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigp
Cit7CisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgaWYgKCFhY3RpdmVBdWRpb1Nlc3Npb25S
ZXF1aXJlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIG1fYmVjYW1lQWN0aXZlID0g
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSk7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX2JlY2FtZUFjdGl2ZSA/ICJzdWNjZXNzZnVsbHkg
YWN0aXZhdGVkIiA6ICJmYWlsZWQgdG8gYWN0aXZhdGUiLCAiIEF1ZGlvU2Vzc2lvbiIpOworICAg
IHJldHVybiBtX2JlY2FtZUFjdGl2ZTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
K30KIHN0YXRpYyBib29sJiBkZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKIHsKICAgICBzdGF0aWMg
Ym9vbCBkZWFjdGl2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBjYWMyYzY1YTU1MTUu
LmRhOGFmNjJkMDdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTEzMyw2ICsxMzMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25EaWRFbmRSZW1vdGVTY3J1YmJpbmco
UGxhdGZvcm1NZWRpYVNlc3Npb24mKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGNsaWVudENoYXJh
Y3RlcmlzdGljc0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKKyAgICB2b2lkIHNlc3Npb25X
aWxsQmVnaW5DYXB0dXJpbmdBdWRpbygpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2aXJ0dWFsIHZvaWQgY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkgeyB9CkBA
IC0xODEsOSArMTgyLDEwIEBAIHByb3RlY3RlZDoKICAgICBib29sIGFueU9mU2Vzc2lvbnMoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpIGNvbnN0Owog
CiAgICAgYm9vbCBpc0FwcGxpY2F0aW9uSW5CYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9p
c0FwcGxpY2F0aW9uSW5CYWNrZ3JvdW5kOyB9Ci0jaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAg
dm9pZCBtYXliZURlYWN0aXZhdGVBdWRpb1Nlc3Npb24oKTsKLSNlbmRpZgorICAgIGJvb2wgbWF5
YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOworCisgICAgYm9vbCBwcmVwYXJpbmdUb0NhcHR1cmVB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyaW5nVG9DYXB0dXJlQXVkaW87IH0KIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KQEAgLTIxOSw2ICsyMjEsNyBAQCBwcml2YXRlOgog
CiAgICAgV2Vha0hhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvQ2FwdHVyZVNvdXJj
ZT4gbV9hdWRpb0NhcHR1cmVTb3VyY2VzOwogICAgIGJvb2wgbV9oYXNTY2hlZHVsZWRTZXNzaW9u
U3RhdGVVcGRhdGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wcmVwYXJpbmdUb0NhcHR1cmVBdWRp
byB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQogICAgIHN0YXRp
YyBib29sIG1fd2ViTUZvcm1hdFJlYWRlckVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0KaW5kZXggMjFlZTM0OTY2NzMyLi4xNTNjMDNjM2IwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KQEAgLTExNCw3ICsxMTQsMTAgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgICAgIH0KICAgICB9KTsKIAorICAg
IGF1dG8gcHJlcGFyaW5nVG9DYXB0dXJlID0gcHJlcGFyaW5nVG9DYXB0dXJlQXVkaW8oKTsKKwog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInR5cGVzOiAiCisgICAgICAgICJQcmVwYXJp
bmcgdG8gY2FwdHVyZSgiLCBwcmVwYXJpbmdUb0NhcHR1cmUsICIpLCAiCiAgICAgICAgICJBdWRp
b0NhcHR1cmUoIiwgY2FwdHVyZUNvdW50LCAiKSwgIgogICAgICAgICAiVmlkZW8oIiwgdmlkZW9D
b3VudCwgIiksICIKICAgICAgICAgIkF1ZGlvKCIsIGF1ZGlvQ291bnQsICIpLCAiCkBAIC0xMjQs
NyArMTI3LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZVNlc3Npb25T
dGF0ZSgpCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBtX2RlZmF1bHRCdWZmZXJTaXplOwogICAg
IGlmICh3ZWJBdWRpb0NvdW50KQogICAgICAgICBidWZmZXJTaXplID0gQXVkaW9VdGlsaXRpZXM6
OnJlbmRlclF1YW50dW1TaXplOwotICAgIGVsc2UgaWYgKGNhcHR1cmVDb3VudCkgeworICAgIGVs
c2UgaWYgKGNhcHR1cmVDb3VudCB8fCBwcmVwYXJpbmdUb0NhcHR1cmUpIHsKICAgICAgICAgLy8g
SW4gY2FzZSBvZiBhdWRpbyBjYXB0dXJlLCB3ZSB3YW50IHRvIGdyYWIgMjAgbXMgY2h1bmtzIHRv
IGxpbWl0IHRoZSBsYXRlbmN5IHNvIHRoYXQgaXQgaXMgbm90IG5vdGljZWFibGUgYnkgdXNlcnMK
ICAgICAgICAgLy8gd2hpbGUgaGF2aW5nIGEgbGFyZ2UgZW5vdWdoIGJ1ZmZlciBzbyB0aGF0IHRo
ZSBhdWRpbyByZW5kZXJpbmcgcmVtYWlucyBzdGFibGUsIGhlbmNlIGEgY29tcHV0YXRpb24gYmFz
ZWQgb24gc2FtcGxlIHJhdGUuCiAgICAgICAgIGJ1ZmZlclNpemUgPSBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCkgLyA1MDsKQEAgLTEzOCw3ICsxNDEsNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKIAogICAgIFJv
dXRlU2hhcmluZ1BvbGljeSBwb2xpY3kgPSBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQ7CiAg
ICAgYXV0byBjYXRlZ29yeSA9IEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlOjpOb25lOwotICAg
IGlmIChjYXB0dXJlQ291bnQpCisgICAgaWYgKGNhcHR1cmVDb3VudCB8fCBwcmVwYXJpbmdUb0Nh
cHR1cmUpCiAgICAgICAgIGNhdGVnb3J5ID0gQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6OlBs
YXlBbmRSZWNvcmQ7CiAgICAgZWxzZSBpZiAoaGFzQXVkaWJsZUF1ZGlvT3JWaWRlb01lZGlhVHlw
ZSkgewogICAgICAgICBjYXRlZ29yeSA9IEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlOjpNZWRp
YVBsYXliYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb1Nlc3Npb25JT1MubW0KaW5kZXggYTkzMWI1MjI0ZjE2Li5mZGRmMjAzODkyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklP
Uy5tbQpAQCAtMjk5LDYgKzI5OSw4IEBAIHZvaWQgQXVkaW9TZXNzaW9uSU9TOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6ZSAvIHNhbXBsZVJhdGUoKTsKICAgICBb
W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBzZXRQcmVmZXJy
ZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9yOiZlcnJvcl07CisgICAgaWYgKGVycm9y
KQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgImZhaWxlZCB0byBzZXQgcHJlZmVy
cmVkIGJ1ZmZlciBkdXJhdGlvbiB0byAlZiB3aXRoIGVycm9yOiAlQCIsIGR1cmF0aW9uLCBlcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKCFlcnJvcik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZTAzZGZhZmQyNDQ4Li44NWIzMzRlMGQz
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgog
I2luY2x1ZGUgPHd0Zi9TSEExLmg+CiAKQEAgLTc3LDYgKzc4LDcgQEAgdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShSZWY8Y29uc3QgTG9nZ2VyPiYmIGxv
Z2dlciwgTmUKIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZTsK
ICAgICBpZiAoYXVkaW9EZXZpY2UpIHsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpbkNhcHR1cmluZ0F1ZGlvKCk7CiAg
ICAgICAgIGF1dG8gc291cmNlID0gYXVkaW9DYXB0dXJlRmFjdG9yeSgpLmNyZWF0ZUF1ZGlvQ2Fw
dHVyZVNvdXJjZShXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgU3RyaW5nIHsgaGFzaFNhbHQgfSwgJnJl
cXVlc3QuYXVkaW9Db25zdHJhaW50cyk7CiAgICAgICAgIGlmICghc291cmNlKSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJGYWlsZWQg
dG8gY3JlYXRlIE1lZGlhU3RyZWFtIGF1ZGlvIHNvdXJjZTogIiwgc291cmNlLmVycm9yTWVzc2Fn
ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oCmluZGV4IDk1MTE3OTVlZTQ1NC4uNGJmODRkZmIwMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTU3LDYgKzU3LDggQEAg
cHVibGljOgogICAgIHZvaWQgZW5hYmxlQWxsRGV2aWNlc1F1ZXJ5KCk7CiAgICAgdm9pZCBkaXNh
YmxlQWxsRGV2aWNlc1F1ZXJ5KCk7CiAKKyAgICB2b2lkIHNldFByZWZlcnJlZEF1ZGlvU2Vzc2lv
bkRldmljZVVJRChjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KaW5kZXggMDhlZDUyM2IxZTFjLi4xNGUyMTYxYzhjOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xNDQs
MTIgKzE0NCwyOCBAQCBzdGQ6Om9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4g
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2No
ZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcygpCit2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRChjb25zdCBTdHJp
bmcmIGRldmljZVVJRCkKIHsKLSAgICBpZiAobV9yZWNvbXB1dGVEZXZpY2VzKQorICAgIEFWQXVk
aW9TZXNzaW9uUG9ydERlc2NyaXB0aW9uICpwcmVmZXJyZWRQb3J0ID0gbmlsOworICAgIGZvciAo
QVZBdWRpb1Nlc3Npb25Qb3J0RGVzY3JpcHRpb24gKnBvcnREZXNjcmlwdGlvbiBpbiBbbV9hdWRp
b1Nlc3Npb24gYXZhaWxhYmxlSW5wdXRzXSkgeworICAgICAgICBpZiAoZGV2aWNlVUlEID09IFN0
cmluZyhwb3J0RGVzY3JpcHRpb24uVUlEKSkgeworICAgICAgICAgICAgcHJlZmVycmVkUG9ydCA9
IHBvcnREZXNjcmlwdGlvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKCFwcmVmZXJyZWRQb3J0KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdl
YlJUQywgImZhaWxlZCB0byBmaW5kIHByZWZlcnJlZCBpbnB1dCAnJXMnIiwgZGV2aWNlVUlELmFz
Y2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIGlmICghW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFy
ZWRJbnN0YW5jZV0gc2V0UHJlZmVycmVkSW5wdXQ6cHJlZmVycmVkUG9ydCBlcnJvcjomZXJyb3Jd
KQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJmYWlsZWQgdG8gc2V0IHByZWZl
cnJlZCBpbnB1dCB0byAnJXMnIHdpdGggZXJyb3I6ICVAIiwgZGV2aWNlVUlELmFzY2lpKCkuZGF0
YSgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbik7Cit9CiAKLSAgICBtX3JlY29tcHV0ZURl
dmljZXMgPSB0cnVlOwordm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
Y2hlZHVsZVVwZGF0ZUNhcHR1cmVEZXZpY2VzKCkKK3sKICAgICBjb21wdXRlQ2FwdHVyZURldmlj
ZXMoW10geyB9KTsKIH0KIApAQCAtMTgwLDEzICsxOTYsOSBAQCB2b2lkIEFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFu
ZGxlcgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAoIW1fcmVjb21wdXRlRGV2aWNlcykK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChbdGhpcywg
Y29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgewogICAgICAgICBh
dXRvIG5ld0F1ZGlvRGV2aWNlcyA9IHJldHJpZXZlQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXMo
KTsKICAgICAgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKG1h
a2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiksIG5ld0F1
ZGlvRGV2aWNlcyA9IFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKS5pc29sYXRlZENvcHkoKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBtX3JlY29tcHV0ZURldmljZXMgPSBmYWxzZTsKICAgICAg
ICAgICAgIHNldEF1ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKICAgICAgICAgfSkuZ2V0KCkpOwpAQCAtMjIwLDE3
ICsyMzIsMzQgQEAgVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmV0cmlldmUKIHZvaWQgQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhWZWN0b3I8QVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlPiYmIG5ld0F1ZGlvRGV2aWNlcykKIHsKICAgICBib29sIGZp
cnN0VGltZSA9ICFtX2RldmljZXM7Ci0gICAgYm9vbCBoYXZlRGV2aWNlQ2hhbmdlcyA9ICFtX2Rl
dmljZXMgfHwgbmV3QXVkaW9EZXZpY2VzLnNpemUoKSAhPSBtX2RldmljZXMtPnNpemUoKTsKLSAg
ICBpZiAoIWhhdmVEZXZpY2VDaGFuZ2VzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmV3QXVkaW9EZXZpY2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvJiBvbGRT
dGF0ZSA9ICgqbV9kZXZpY2VzKVtpXTsKLSAgICAgICAgICAgIGF1dG8mIG5ld1N0YXRlID0gbmV3
QXVkaW9EZXZpY2VzW2ldOwotICAgICAgICAgICAgaWYgKG5ld1N0YXRlLnR5cGUoKSAhPSBvbGRT
dGF0ZS50eXBlKCkgfHwgbmV3U3RhdGUucGVyc2lzdGVudElkKCkgIT0gb2xkU3RhdGUucGVyc2lz
dGVudElkKCkgfHwgbmV3U3RhdGUuZW5hYmxlZCgpICE9IG9sZFN0YXRlLmVuYWJsZWQoKSB8fCBu
ZXdTdGF0ZS5pc0RlZmF1bHQoKSAhPSBvbGRTdGF0ZS5pc0RlZmF1bHQoKSkKLSAgICAgICAgICAg
ICAgICBoYXZlRGV2aWNlQ2hhbmdlcyA9IHRydWU7CisgICAgYm9vbCBkZXZpY2VMaXN0Q2hhbmdl
ZCA9IG5ld0F1ZGlvRGV2aWNlcy5zaXplKCkgIT0gbV9kZXZpY2VzLT5zaXplKCk7CisgICAgYm9v
bCBkZWZhdWx0RGV2aWNlQ2hhbmdlZCA9IGZhbHNlOworICAgIGlmICghZGV2aWNlTGlzdENoYW5n
ZWQgJiYgIWZpcnN0VGltZSkgeworICAgICAgICBmb3IgKGF1dG8mIG5ld1N0YXRlIDogbmV3QXVk
aW9EZXZpY2VzKSB7CisKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
b2xkU3RhdGU7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IG1fZGV2aWNl
cy52YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gbmV3U3Rh
dGUudHlwZSgpICYmIGRldmljZS5wZXJzaXN0ZW50SWQoKSA9PSBuZXdTdGF0ZS5wZXJzaXN0ZW50
SWQoKSkgeworICAgICAgICAgICAgICAgICAgICBvbGRTdGF0ZSA9IGRldmljZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIW9sZFN0YXRlLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAg
ZGV2aWNlTGlzdENoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKG5ld1N0YXRlLmlzRGVmYXVsdCgpICE9IG9sZFN0YXRl
LnZhbHVlKCkuaXNEZWZhdWx0KCkpCisgICAgICAgICAgICAgICAgZGVmYXVsdERldmljZUNoYW5n
ZWQgID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKG5ld1N0YXRlLmVuYWJsZWQoKSAhPSBvbGRT
dGF0ZS52YWx1ZSgpLmVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIGRldmljZUxpc3RDaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmICghaGF2ZURldmljZUNoYW5nZXMgJiYgIWZpcnN0VGltZSkK
KyAgICBpZiAoIWRldmljZUxpc3RDaGFuZ2VkICYmICFmaXJzdFRpbWUgJiYgIWRlZmF1bHREZXZp
Y2VDaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG5ld0RldmljZXMgPSBjb3B5
VG9WZWN0b3JPZjxDYXB0dXJlRGV2aWNlPihuZXdBdWRpb0RldmljZXMpOwpAQCAtMjQwLDcgKzI2
OSw3IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0QXVkaW9D
YXB0dXJlRGV2aWNlcyhWZWN0b3I8QVZBdWRpb1NlCiAgICAgfSk7CiAgICAgbV9kZXZpY2VzID0g
V1RGTW92ZShuZXdEZXZpY2VzKTsKIAotICAgIGlmICghZmlyc3RUaW1lKQorICAgIGlmIChkZXZp
Y2VMaXN0Q2hhbmdlZCAmJiAhZmlyc3RUaW1lKQogICAgICAgICBkZXZpY2VDaGFuZ2VkKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBmNGIzNjU4OTRkMzcu
Ljg3YmYzZGJhMDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAt
MTYzLDYgKzE2Myw5IEBAIENvcmVBdWRpb1NoYXJlZFVuaXQ6OkNvcmVBdWRpb1NoYXJlZFVuaXQo
KQogCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldENhcHR1cmVEZXZpY2UoU3RyaW5nJiYg
cGVyc2lzdGVudElELCB1aW50MzJfdCBjYXB0dXJlRGV2aWNlSUQpCiB7CisgICAgaWYgKG1fcGVy
c2lzdGVudElEID09IHBlcnNpc3RlbnRJRCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9wZXJz
aXN0ZW50SUQgPSBXVEZNb3ZlKHBlcnNpc3RlbnRJRCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBA
IC0xNzMsNiArMTc2LDcgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2
aWNlKFN0cmluZyYmIHBlcnNpc3RlbnRJRCwgdWludDMyX3QgY2FwdHUKICAgICByZWNvbmZpZ3Vy
ZUF1ZGlvVW5pdCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FwdHVyZURldmljZUlEKTsK
KyAgICBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRQ
cmVmZXJyZWRBdWRpb1Nlc3Npb25EZXZpY2VVSUQobV9wZXJzaXN0ZW50SUQpOwogI2VuZGlmCiB9
CiAKQEAgLTQ2Niw2ICs0NzAsNyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBB
dWRpb1VuaXQoKQogCiAgICAgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKICAg
ICBtX3NwZWFrZXJTYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIG1fcGVyc2lzdGVudElEID0g
ZW1wdHlTdHJpbmcoKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgbV9pb1VuaXROYW1lID0gZW1w
dHlTdHJpbmcoKTsKICNlbmRpZgpAQCAtNjE5LDcgKzYyNCw3IEBAIENhcHR1cmVTb3VyY2VPckVy
cm9yIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3Ry
aW5nJiYKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBkZXZpY2UgPSBBVkF1
ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5hdWRpb1Nlc3Npb25E
ZXZpY2VXaXRoVUlEKFdURk1vdmUoZGV2aWNlSUQpKTsKICAgICBpZiAoIWRldmljZSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHsgIk5vIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZSBkZXZpY2UiX3MgfTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBD
b3JlQXVkaW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBTdHJpbmcgeyBkZXZpY2Ut
PmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIDApKTsKICNlbmRpZgpAQCAtNzYwLDYgKzc2
NSw3IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
IAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Cisg
ICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgdW5pdCgp
LnN0b3BQcm9kdWNpbmdEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWEzYmQ2NTgwYjdhLi40YzEx
NjUzMGVkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDgtMDMgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gZ2V0VXNlck1l
ZGlhIHNvbWV0aW1lcyBkb2Vzbid0IGNhcHR1cmUgZnJvbSBzcGVjaWZpZWQgbWljcm9waG9uZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzUzCisg
ICAgICAgIHJkYXI6Ly83OTcwNDIyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwOiBSZQorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OjpTb3VyY2VQcm94eTo6YXVkaW9Vbml0V2lsbFN0YXJ0KTogRGVsZXRlLAorICAgICAgICB3
ZSBkb24ndCBuZWVkIGl0IG5vdyB0aGF0IHRoZSB3ZWIgcHJvY2VzcyBjb25maWd1cmVzIHRoZSBh
dWRpbyBzZXNzaW9uIGJlZm9yZQorICAgICAgICBjYXB0dXJlIGJlZ2lucy4KKwogMjAyMS0wNy0y
OSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBidW5kbGUg
cGF0aCBvZiBkb3dubGV2ZWwgU2FmYXJpIGlzIHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDlhYjJhMzc1YTllMC4uNjQxZjJkYjgxYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5LmNwcApAQCAtMTAwLDE1ICsxMDAsNiBAQCBwdWJsaWM6CiAgICAgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigpIHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KICAg
ICBpbnQ2NF90IG51bWJlck9mRnJhbWVzKCkgeyByZXR1cm4gbV9udW1iZXJPZkZyYW1lczsgfQog
Ci0gICAgdm9pZCBhdWRpb1VuaXRXaWxsU3RhcnQoKSBmaW5hbAotICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IFdlYlByb2Nlc3MgbWlnaHQgd2FudCB0byBzZXQgdGhlIGNhdGVnb3J5L2J1ZmZlclNp
emUgaXRzZWxmLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCByZW1vdmUgdGhhdCBjb2RlLgotICAg
ICAgICBhdXRvIGJ1ZmZlclNpemUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1w
bGVSYXRlKCkgLyA1MDsKLSAgICAgICAgaWYgKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LnByZWZlcnJlZEJ1ZmZlclNpemUoKSA+IGJ1ZmZlclNpemUpCi0gICAgICAgICAgICBBdWRpb1Nl
c3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGJ1ZmZlclNpemUp
OwotICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRDYXRlZ29yeShBdWRp
b1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6UGxheUFuZFJlY29yZCwgUm91dGVTaGFyaW5nUG9saWN5
OjpEZWZhdWx0KTsKLSAgICB9Ci0KICAgICB2b2lkIHN0YXJ0KCkKICAgICB7CiAgICAgICAgIG1f
c2hvdWxkUmVzZXQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434954</attachid>
            <date>2021-08-04 17:24:15 -0700</date>
            <delta_ts>2021-08-05 09:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228753-20210804172414.patch</filename>
            <type>text/plain</type>
            <size>19611</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhYmM1NTg2N2QwNTkx
YzJiMzJkZjJmMGRmZTJjZmIzMjVlNzFhNy4uZTdmN2E4YzI0NmY5MDBhZjEzODNhMjdiODIyOWY1
MTlmMTVjOTNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA4LTAzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIGdldFVz
ZXJNZWRpYSBzb21ldGltZXMgZG9lc24ndCBjYXB0dXJlIGZyb20gc3BlY2lmaWVkIG1pY3JvcGhv
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODc1
MworICAgICAgICByZGFyOi8vNzk3MDQyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgc3lzdGVtIHdpbGwgYWx3YXlzIGNob29zZSB0aGUgImRl
ZmF1bHQiIGF1ZGlvIGlucHV0IHNvdXJjZSB1bmxlc3MKKyAgICAgICAgK1tBVkF1ZGlvU2Vzc2lv
biBzZXRQcmVmZXJyZWRJbnB1dDplcnJvcjpdIGlzIGNhbGxlZCBmaXJzdCwgYW5kIHRoYXQgb25s
eSB3b3JrcworICAgICAgICBpZiB0aGUgYXVkaW8gc2Vzc2lvbiBjYXRlZ29yeSBoYXMgYmVlbiBz
ZXQgdG8gUGxheUFuZFJlY29yZCAqYmVmb3JlKiBpdCBpcyBjYWxsZWQsCisgICAgICAgIHNvIGNv
bmZpZ3VyZSB0aGUgYXVkaW8gc2Vzc2lvbiBmb3IgcmVjb3JkaW5nIGJlZm9yZSB3ZSBjaG9vc2Ug
YW5kIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAgYXVkaW8gY2FwdHVyZSBkZXZpY2UuCisgICAgICAg
IAorICAgICAgICBUZXN0ZWQgbWFudWFsbHksIHRoaXMgb25seSByZXByb2R1Y2VzIG9uIGhhcmR3
YXJlLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQgY29uc3QpOiBBdWRpbworICAgICAgICBjYXB0dXJl
IHJlcXVpcmVzIGFuIGFjdGl2ZSBhdWRpbyBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKTogTW92ZSBgI2lmIFVTRShB
VURJT19TRVNTSU9OKWAKKyAgICAgICAgZ3VhcmQgaW5zaWRlIG9mIG1heWJlRGVhY3RpdmF0ZUF1
ZGlvU2Vzc2lvbiBzbyBpdCBpc24ndCBzcHJlYWQgdGhyb3VnaG91dCB0aGUgZmlsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdp
blBsYXliYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnByb2Nlc3NXaWxsU3VzcGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzRGlkUmVzdW1lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Q
cm9kdWNlQXVkaW9DaGFuZ2VkKTogQWRkIGxvZ2dpbmcsCisgICAgICAgIGNhbGwgYG1heWJlQWN0
aXZhdGVBdWRpb1Nlc3Npb24oKWAgc28gd2UgYWN0aXZhdGUgdGhlIGF1ZGlvIHNlc3Npb24gaWYg
bmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphZGRBdWRpb0NhcHR1cmVTb3VyY2UpOiBDYWxsIHVwZGF0ZVNlc3Npb25TdGF0ZQorICAgICAg
ICBpbnN0ZWFkIG9mIHNjaGVkdWxlVXBkYXRlU2Vzc2lvblN0YXRlIHNvIHRoZSBhdWRpbyBzZXNz
aW9uIGNhdGVnb3J5IGlzIHVwZGF0ZWQKKyAgICAgICAgaW1tZWRpYXRlbHkuCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1heWJlRGVhY3RpdmF0ZUF1ZGlv
U2Vzc2lvbik6IE1vdmUgCisgICAgICAgIGAjaWYgVVNFKEFVRElPX1NFU1NJT04pYCBpbnRvIHRo
ZSBmdW5jdGlvbiBzbyBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgc3ByZWFkIAorICAgICAgICB0aHJv
dWdob3V0IHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjptYXliZUFjdGl2YXRlQXVkaW9TZXNzaW9uKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmlzQXBwbGljYXRpb25JbkJhY2tncm91
bmQgY29uc3QpOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0UHJlZmVycmVkQnVm
ZmVyU2l6ZSk6IExvZyBhbiBlcnJvciBpZiB3ZSBhcmUgdW5hYmxlCisgICAgICAgIHRvIHNldCB0
aGUgcHJlZmVycmVkIGJ1ZmZlciBzaXplLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRCk6CisgICAgICAgIE5ldywgc2V0
IHRoZSBwcmVmZXJyZWQgaW5wdXQgc28gY2FwdHVyZSB3aWxsIHVzZSBzZWxlY3QgdGhlIGRldmlj
ZSB3ZSB3YW50LgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcyk6IFJlbW92ZQorICAgICAgICBt
X3JlY29tcHV0ZURldmljZXMsIGBzZXRBdWRpb0NhcHR1cmVEZXZpY2VzYCBoYXMgYmVlbiByZXN0
cnVjdHVyZWQgc28gd2UgZG9uJ3QgbmVlZCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9T
ZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJlRGV2aWNlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2V0QXVkaW9DYXB0dXJlRGV2aWNlcyk6IERvbid0IHVwZGF0ZQorICAgICAgICB0aGUgbGlzdCBv
ZiBjYXB0dXJlIGRldmljZXMgd2hlbiB0aGUgZGVmYXVsdCBkZXZpY2UgY2hhbmdlcywgb25seSB3
aGVuIGEgZGV2aWNlIGlzCisgICAgICAgIGFkZGVkLCByZW1vdmVkLCBlbmFibGVkLCBvciBkaXNh
YmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnNl
dENhcHR1cmVEZXZpY2UpOiBDYWxsIGBzZXRQcmVmZXJyZWRBdWRpb1Nlc3Npb25EZXZpY2VVSURg
CisgICAgICAgIHNvIHRoZSBjb3JyZWN0IGRldmljZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQpOiBDbGVhciBtX3Bl
cnNpc3RlbnRJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNy
ZWF0ZSk6IFJldHVybiBhbiBlcnJvciB3aXRoIGEgc3RyaW5nLCBvciB0aGUKKyAgICAgICAgd2Vi
IHByb2Nlc3MgY2FuIGRldGVjdCBhIGZhaWx1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6IEFkZCBsb2dnaW5nLgorCiAyMDIx
LTA3LTI5ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0NNYWtlXSBVc2UgYW4gaW1wb3J0ZWQgdGFyZ2V0IGZvciB0aGUgbGliZ2NyeXB0IGxp
YnJhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMWEzYmQ2NTgwYjdhYjMyM2ZjZTgyMzMxZmRlNmRjOGIwMDE5ODY2
NS4uNGMxMTY1MzBlZDljNGMxMjI4ZGFjZjhjZTRjZjMyZGRlZmRjOGE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wOC0wMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBnZXRVc2VyTWVkaWEgc29tZXRpbWVzIGRvZXNuJ3Qg
Y2FwdHVyZSBmcm9tIHNwZWNpZmllZCBtaWNyb3Bob25lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3NTMKKyAgICAgICAgcmRhcjovLzc5NzA0MjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6IFJlCisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5OjphdWRp
b1VuaXRXaWxsU3RhcnQpOiBEZWxldGUsCisgICAgICAgIHdlIGRvbid0IG5lZWQgaXQgbm93IHRo
YXQgdGhlIHdlYiBwcm9jZXNzIGNvbmZpZ3VyZXMgdGhlIGF1ZGlvIHNlc3Npb24gYmVmb3JlCisg
ICAgICAgIGNhcHR1cmUgYmVnaW5zLgorCiAyMDIxLTA3LTI5ICBQZW5nIExpdSAgPHBlbmcubGl1
NkBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIGJ1bmRsZSBwYXRoIG9mIGRvd25sZXZlbCBTYWZh
cmkgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDE4MTFkOWI2Y2MzNTYy
YWI0ZmNlYWEzMmE2OGM0MWQ2OWRlOTI0NjcuLjdhOWU4MjA4ZjI0MDE2NDEzYzMxZDhhNjIyZmZk
YTE2NWMxYzQ4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNiw5ICsxMTYs
MTUgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnMKIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gYW55T2ZTZXNzaW9ucyhbXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAgICByZXR1cm4gc2Vz
c2lvbi5hY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpOwotICAgIH0pOworICAgIGlmIChhbnlP
ZlNlc3Npb25zKFtdIChhdXRvJiBzZXNzaW9uKSB7IHJldHVybiBzZXNzaW9uLmFjdGl2ZUF1ZGlv
U2Vzc2lvblJlcXVpcmVkKCk7IH0pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAo
Y29uc3QgYXV0byYgc291cmNlIDogbV9hdWRpb0NhcHR1cmVTb3VyY2VzKSB7CisgICAgICAgIGlm
IChzb3VyY2UuaXNDYXB0dXJpbmdBdWRpbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QKQEAgLTE5OSwxMCArMjA1LDggQEAgdm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb24mIHNlc3Npb24pCiAKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpbmRleCk7CiAKLSNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoaGFzTm9TZXNzaW9uKCkpCiAgICAgICAgIG1h
eWJlRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwotI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBtX2xvZ2dlci0+cmVtb3ZlTG9nZ2VyKHNlc3Npb24ubG9nZ2VyKCkpOwpA
QCAtMjM3LDE3ICsyNDEsMTAgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
c3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIGlmIChhY3Rp
dmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpKSB7Ci0gICAgICAgIGlmICghQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpIHsKLSAgICAgICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgc2Vzc2lvbi5sb2dJZGVudGlmaWVyKCksICIgcmV0dXJuaW5n
IGZhbHNlIGZhaWxlZCB0byBzZXQgYWN0aXZlIEF1ZGlvU2Vzc2lvbiIpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCBzZXNzaW9uLmxvZ0lkZW50aWZpZXIoKSwgIiBzdWNlc3NmdWxseSBhY3RpdmF0ZWQgQXVk
aW9TZXNzaW9uIik7Ci0gICAgICAgIG1fYmVjYW1lQWN0aXZlID0gdHJ1ZTsKKyAgICBpZiAoIW1h
eWJlQWN0aXZhdGVBdWRpb1Nlc3Npb24oKSkgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsIHNlc3Npb24ubG9nSWRlbnRpZmllcigpLCAiIHJldHVybmluZyBmYWxzZSwgZmFpbGVk
IHRvIGFjdGl2YXRlIEF1ZGlvU2Vzc2lvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotI2VuZGlmCiAKICAgICBpZiAobV9pbnRlcnJ1cHRlZCkKICAgICAgICAgZW5kSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzKTsKQEAgLTM5NCw5ICszOTEsNyBAQCB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cHJvY2Vzc1dpbGxTdXNwZW5kKCkKICAg
ICAgICAgc2Vzc2lvbi5jbGllbnQoKS5wcm9jZXNzSXNTdXNwZW5kZWRDaGFuZ2VkKCk7CiAgICAg
fSk7CiAKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBtYXliZURlYWN0aXZhdGVBdWRpb1Nl
c3Npb24oKTsKLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
cHJvY2Vzc0RpZFJlc3VtZSgpCkBAIC00MTAsMTAgKzQwNSw4IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzRGlkUmVzdW1lKCkKICAgICB9KTsKIAogI2lmIFVTRShB
VURJT19TRVNTSU9OKQotICAgIGlmICghbV9iZWNhbWVBY3RpdmUgJiYgYWN0aXZlQXVkaW9TZXNz
aW9uUmVxdWlyZWQoKSkgewotICAgICAgICBtX2JlY2FtZUFjdGl2ZSA9IEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLnRyeVRvU2V0QWN0aXZlKHRydWUpOwotICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJ0cmllZCB0byBzZXQgYWN0aXZlIEF1ZGlvU2Vzc2lvbiwgIiwgbV9i
ZWNhbWVBY3RpdmUgPyAic3VjY2VlZGVkIiA6ICJmYWlsZWQiKTsKLSAgICB9CisgICAgaWYgKCFt
X2JlY2FtZUFjdGl2ZSkKKyAgICAgICAgbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogI2Vu
ZGlmCiB9CiAKQEAgLTQzNyw2ICs0MzAsOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbklzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5nZQogCiB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0No
YW5nZWQoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgbWF5YmVBY3Rp
dmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCkBAIC01
ODEsNyArNTc2LDcgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZEF1ZGlv
Q2FwdHVyZVNvdXJjZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXUKIHsKICAgICBBU1NFUlQoIW1f
YXVkaW9DYXB0dXJlU291cmNlcy5jb250YWlucyhzb3VyY2UpKTsKICAgICBtX2F1ZGlvQ2FwdHVy
ZVNvdXJjZXMuYWRkKHNvdXJjZSk7Ci0gICAgc2NoZWR1bGVVcGRhdGVTZXNzaW9uU3RhdGUoKTsK
KyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAogCkBAIC02MDMsMTggKzU5OCwzMSBAQCB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVTZXNzaW9uU3Rh
dGUoKQogICAgIH0pOwogfQogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCiB2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVEZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKIHsKKyNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoIW1fYmVjYW1lQWN0aXZlIHx8ICFzaG91bGRE
ZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgInRyaWVkIHRvIHNldCBpbmFjdGl2ZSBBdWRpb1Nlc3Npb24iKTsK
ICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2ZShmYWxzZSk7
CiAgICAgbV9iZWNhbWVBY3RpdmUgPSBmYWxzZTsKLX0KICNlbmRpZgorfQogCitib29sIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpCit7Cisj
aWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgaWYgKCFhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJl
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG1fYmVjYW1lQWN0aXZlID0gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSk7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCBtX2JlY2FtZUFjdGl2ZSA/ICJzdWNjZXNzZnVsbHkgYWN0aXZh
dGVkIiA6ICJmYWlsZWQgdG8gYWN0aXZhdGUiLCAiIEF1ZGlvU2Vzc2lvbiIpOworICAgIHJldHVy
biBtX2JlY2FtZUFjdGl2ZTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KIHN0
YXRpYyBib29sJiBkZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKIHsKICAgICBzdGF0aWMgYm9vbCBk
ZWFjdGl2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBjYWMyYzY1YTU1MTUxNGRjZTE2
M2FkMjI1YWY0NjBkYjYwNTY0ZjQ2Li45NTMzZTNiMWQ1NjBlZTkyZjc4MDYwNmJhN2Y4ZDU4YWE4
MDk5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtMTgxLDkgKzE4MSw4IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGFueU9mU2Vzc2lvbnMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0FwcGxpY2F0aW9u
SW5CYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcGxpY2F0aW9uSW5CYWNrZ3JvdW5k
OyB9Ci0jaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgdm9pZCBtYXliZURlYWN0aXZhdGVBdWRp
b1Nlc3Npb24oKTsKLSNlbmRpZgorICAgIGJvb2wgbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigp
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggYTkzMWI1MjI0
ZjE2YzI1NDFmNzg1N2E5YmQyNDQzYjM0ODg0N2MxOS4uZjM3NWYwMzRjYjNkOWEyNzI2YmZiNjg4
NjY4MDA2YTZjMjcwYjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk5LDYgKzI5OSw3IEBAIHZvaWQgQXVk
aW9TZXNzaW9uSU9TOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQog
ICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6
ZSAvIHNhbXBsZVJhdGUoKTsKICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNo
YXJlZEluc3RhbmNlXSBzZXRQcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9y
OiZlcnJvcl07CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhLCAiZmFpbGVk
IHRvIHNldCBwcmVmZXJyZWQgYnVmZmVyIGR1cmF0aW9uIHRvICVmIHdpdGggZXJyb3I6ICVAIiwg
ZHVyYXRpb24sIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIWVycm9y
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgKaW5kZXggOTUxMTc5NWVlNDU0NjAzNTg4ZTBjZDVmYjRlY2UzNWY2MzJjZDNhYi4uNGJm
ODRkZmIwMmQxMGE5YWRkZGYzY2YxYjFhYzZjODU3YjhiM2UzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC01Nyw2ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZUFsbERldmljZXNRdWVyeSgpOwogICAgIHZvaWQgZGlz
YWJsZUFsbERldmljZXNRdWVyeSgpOwogCisgICAgdm9pZCBzZXRQcmVmZXJyZWRBdWRpb1Nlc3Np
b25EZXZpY2VVSUQoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCmluZGV4IDA4ZWQ1MjNiMWUxYzI0YTI2ZWFlYzY0NmJmNzg0YTQ2OGU1Y2Jj
ZTcuLjJmOTMzZDdlNjVlYzI0NmQyOWQ5MzZiNjQ1NWU3YmJhODk3YWJiNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xNDQs
MTIgKzE0NCwyOSBAQCBzdGQ6Om9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4g
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2No
ZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcygpCit2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRChjb25zdCBTdHJp
bmcmIGRldmljZVVJRCkKIHsKLSAgICBpZiAobV9yZWNvbXB1dGVEZXZpY2VzKQorICAgIEFWQXVk
aW9TZXNzaW9uUG9ydERlc2NyaXB0aW9uICpwcmVmZXJyZWRQb3J0ID0gbmlsOworICAgIE5TU3Ry
aW5nICpuc0RldmljZVVJRCA9IGRldmljZVVJRDsKKyAgICBmb3IgKEFWQXVkaW9TZXNzaW9uUG9y
dERlc2NyaXB0aW9uICpwb3J0RGVzY3JpcHRpb24gaW4gW21fYXVkaW9TZXNzaW9uIGF2YWlsYWJs
ZUlucHV0c10pIHsKKyAgICAgICAgaWYgKFtwb3J0RGVzY3JpcHRpb24uVUlEIGlzRXF1YWxUb1N0
cmluZzpuc0RldmljZVVJRF0pIHsKKyAgICAgICAgICAgIHByZWZlcnJlZFBvcnQgPSBwb3J0RGVz
Y3JpcHRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghcHJlZmVycmVkUG9ydCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJm
YWlsZWQgdG8gZmluZCBwcmVmZXJyZWQgaW5wdXQgJyVzJyIsIGRldmljZVVJRC5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5p
bDsKKyAgICBpZiAoIVtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFu
Y2VdIHNldFByZWZlcnJlZElucHV0OnByZWZlcnJlZFBvcnQgZXJyb3I6JmVycm9yXSkKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiZmFpbGVkIHRvIHNldCBwcmVmZXJyZWQgaW5w
dXQgdG8gJyVzJyB3aXRoIGVycm9yOiAlQCIsIGRldmljZVVJRC5hc2NpaSgpLmRhdGEoKSwgZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24pOworfQogCi0gICAgbV9yZWNvbXB1dGVEZXZpY2VzID0g
dHJ1ZTsKK3ZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2NoZWR1bGVV
cGRhdGVDYXB0dXJlRGV2aWNlcygpCit7CiAgICAgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKFtdIHsg
fSk7CiB9CiAKQEAgLTE4MCwxMyArMTk3LDkgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXIKICAg
ICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKCFtX3JlY29tcHV0ZURldmljZXMpCi0gICAgICAg
IHJldHVybjsKLQogICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBuZXdB
dWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzKCk7CiAgICAg
ICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQ
dHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0Rldmlj
ZXMgPSBXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUg
ewotICAgICAgICAgICAgbV9yZWNvbXB1dGVEZXZpY2VzID0gZmFsc2U7CiAgICAgICAgICAgICBz
ZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIH0pLmdldCgpKTsKQEAgLTIyMCwxNyArMjMzLDM0
IEBAIFZlY3RvcjxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnJldHJpZXZlCiB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZXMoVmVjdG9yPEFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZT4mJiBuZXdBdWRpb0RldmljZXMpCiB7CiAgICAgYm9vbCBmaXJzdFRpbWUg
PSAhbV9kZXZpY2VzOwotICAgIGJvb2wgaGF2ZURldmljZUNoYW5nZXMgPSAhbV9kZXZpY2VzIHx8
IG5ld0F1ZGlvRGV2aWNlcy5zaXplKCkgIT0gbV9kZXZpY2VzLT5zaXplKCk7Ci0gICAgaWYgKCFo
YXZlRGV2aWNlQ2hhbmdlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0F1
ZGlvRGV2aWNlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byYgb2xkU3RhdGUgPSAo
Km1fZGV2aWNlcylbaV07Ci0gICAgICAgICAgICBhdXRvJiBuZXdTdGF0ZSA9IG5ld0F1ZGlvRGV2
aWNlc1tpXTsKLSAgICAgICAgICAgIGlmIChuZXdTdGF0ZS50eXBlKCkgIT0gb2xkU3RhdGUudHlw
ZSgpIHx8IG5ld1N0YXRlLnBlcnNpc3RlbnRJZCgpICE9IG9sZFN0YXRlLnBlcnNpc3RlbnRJZCgp
IHx8IG5ld1N0YXRlLmVuYWJsZWQoKSAhPSBvbGRTdGF0ZS5lbmFibGVkKCkgfHwgbmV3U3RhdGUu
aXNEZWZhdWx0KCkgIT0gb2xkU3RhdGUuaXNEZWZhdWx0KCkpCi0gICAgICAgICAgICAgICAgaGF2
ZURldmljZUNoYW5nZXMgPSB0cnVlOworICAgIGJvb2wgZGV2aWNlTGlzdENoYW5nZWQgPSBuZXdB
dWRpb0RldmljZXMuc2l6ZSgpICE9IG1fZGV2aWNlcy0+c2l6ZSgpOworICAgIGJvb2wgZGVmYXVs
dERldmljZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBpZiAoIWRldmljZUxpc3RDaGFuZ2VkICYmICFm
aXJzdFRpbWUpIHsKKyAgICAgICAgZm9yIChhdXRvJiBuZXdTdGF0ZSA6IG5ld0F1ZGlvRGV2aWNl
cykgeworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IG9sZFN0YXRl
OworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBtX2RldmljZXMudmFsdWUo
KSkgeworICAgICAgICAgICAgICAgIGlmIChkZXZpY2UudHlwZSgpID09IG5ld1N0YXRlLnR5cGUo
KSAmJiBkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gbmV3U3RhdGUucGVyc2lzdGVudElkKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgb2xkU3RhdGUgPSBkZXZpY2U7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFvbGRTdGF0ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGRldmljZUxp
c3RDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5pc0RlZmF1bHQoKSAhPSBvbGRTdGF0ZS52YWx1ZSgp
LmlzRGVmYXVsdCgpKQorICAgICAgICAgICAgICAgIGRlZmF1bHREZXZpY2VDaGFuZ2VkICA9IHRy
dWU7CisKKyAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5lbmFibGVkKCkgIT0gb2xkU3RhdGUudmFs
dWUoKS5lbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBkZXZpY2VMaXN0Q2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoIWhhdmVEZXZpY2VDaGFuZ2VzICYmICFmaXJzdFRpbWUpCisgICAgaWYg
KCFkZXZpY2VMaXN0Q2hhbmdlZCAmJiAhZmlyc3RUaW1lICYmICFkZWZhdWx0RGV2aWNlQ2hhbmdl
ZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBuZXdEZXZpY2VzID0gY29weVRvVmVjdG9y
T2Y8Q2FwdHVyZURldmljZT4obmV3QXVkaW9EZXZpY2VzKTsKQEAgLTI0MCw3ICsyNzAsNyBAQCB2
b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnNldEF1ZGlvQ2FwdHVyZURl
dmljZXMoVmVjdG9yPEFWQXVkaW9TZQogICAgIH0pOwogICAgIG1fZGV2aWNlcyA9IFdURk1vdmUo
bmV3RGV2aWNlcyk7CiAKLSAgICBpZiAoIWZpcnN0VGltZSkKKyAgICBpZiAoZGV2aWNlTGlzdENo
YW5nZWQgJiYgIWZpcnN0VGltZSkKICAgICAgICAgZGV2aWNlQ2hhbmdlZCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZjRiMzY1ODk0ZDM3Y2Q5NGZmMjFi
N2ZiNTRmZGIyNjQxZjM2ZmU5Ni4uODdiZjNkYmEwMzM3ZDA5MzAwNmE4OGIwNTM0N2RlOTM3YWM4
NzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTYzLDYgKzE2
Myw5IEBAIENvcmVBdWRpb1NoYXJlZFVuaXQ6OkNvcmVBdWRpb1NoYXJlZFVuaXQoKQogCiB2b2lk
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldENhcHR1cmVEZXZpY2UoU3RyaW5nJiYgcGVyc2lzdGVu
dElELCB1aW50MzJfdCBjYXB0dXJlRGV2aWNlSUQpCiB7CisgICAgaWYgKG1fcGVyc2lzdGVudElE
ID09IHBlcnNpc3RlbnRJRCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9wZXJzaXN0ZW50SUQg
PSBXVEZNb3ZlKHBlcnNpc3RlbnRJRCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzMsNiAr
MTc2LDcgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlKFN0cmlu
ZyYmIHBlcnNpc3RlbnRJRCwgdWludDMyX3QgY2FwdHUKICAgICByZWNvbmZpZ3VyZUF1ZGlvVW5p
dCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY2FwdHVyZURldmljZUlEKTsKKyAgICBBVkF1
ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRQcmVmZXJyZWRB
dWRpb1Nlc3Npb25EZXZpY2VVSUQobV9wZXJzaXN0ZW50SUQpOwogI2VuZGlmCiB9CiAKQEAgLTQ2
Niw2ICs0NzAsNyBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQo
KQogCiAgICAgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKICAgICBtX3NwZWFr
ZXJTYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIG1fcGVyc2lzdGVudElEID0gZW1wdHlTdHJp
bmcoKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgbV9pb1VuaXROYW1lID0gZW1wdHlTdHJpbmco
KTsKICNlbmRpZgpAQCAtNjE5LDcgKzYyNCw3IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIENvcmVB
dWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYKICNl
bGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBkZXZpY2UgPSBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5hdWRpb1Nlc3Npb25EZXZpY2VXaXRo
VUlEKFdURk1vdmUoZGV2aWNlSUQpKTsKICAgICBpZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIHsgIk5vIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZSBk
ZXZpY2UiX3MgfTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBDb3JlQXVkaW9D
YXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBTdHJpbmcgeyBkZXZpY2UtPmxhYmVsKCkg
fSwgV1RGTW92ZShoYXNoU2FsdCksIDApKTsKICNlbmRpZgpAQCAtNzYwLDYgKzc2NSw3IEBAIHZv
aWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7CisgICAgQUxXQVlT
X0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7CiAgICAgdW5pdCgpLnN0b3BQcm9k
dWNpbmdEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggOWFiMmEz
NzVhOWUwMzgwYWE1N2E1YTk0MTRiZDk5NTYzYjFjZmY3Yy4uNjQxZjJkYjgxYTFiMDM4ZTNkNTky
ODA0MjMxMzI5ODczYjE3NGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEw
MCwxNSArMTAwLDYgQEAgcHVibGljOgogICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVz
Y3JpcHRpb24oKSB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAgICAgaW50NjRfdCBudW1iZXJP
ZkZyYW1lcygpIHsgcmV0dXJuIG1fbnVtYmVyT2ZGcmFtZXM7IH0KIAotICAgIHZvaWQgYXVkaW9V
bml0V2lsbFN0YXJ0KCkgZmluYWwKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZWJQcm9jZXNz
IG1pZ2h0IHdhbnQgdG8gc2V0IHRoZSBjYXRlZ29yeS9idWZmZXJTaXplIGl0c2VsZiwgaW4gd2hp
Y2ggY2FzZSB3ZSBzaG91bGQgcmVtb3ZlIHRoYXQgY29kZS4KLSAgICAgICAgYXV0byBidWZmZXJT
aXplID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpIC8gNTA7Ci0g
ICAgICAgIGlmIChBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZmZXJT
aXplKCkgPiBidWZmZXJTaXplKQotICAgICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShidWZmZXJTaXplKTsKLSAgICAgICAgQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29y
eVR5cGU6OlBsYXlBbmRSZWNvcmQsIFJvdXRlU2hhcmluZ1BvbGljeTo6RGVmYXVsdCk7Ci0gICAg
fQotCiAgICAgdm9pZCBzdGFydCgpCiAgICAgewogICAgICAgICBtX3Nob3VsZFJlc2V0ID0gdHJ1
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434997</attachid>
            <date>2021-08-05 09:40:58 -0700</date>
            <delta_ts>2021-08-05 10:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228753-20210805094057.patch</filename>
            <type>text/plain</type>
            <size>19627</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhYmM1NTg2N2QwNTkx
YzJiMzJkZjJmMGRmZTJjZmIzMjVlNzFhNy4uZTdmN2E4YzI0NmY5MDBhZjEzODNhMjdiODIyOWY1
MTlmMTVjOTNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA4LTAzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIGdldFVz
ZXJNZWRpYSBzb21ldGltZXMgZG9lc24ndCBjYXB0dXJlIGZyb20gc3BlY2lmaWVkIG1pY3JvcGhv
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODc1
MworICAgICAgICByZGFyOi8vNzk3MDQyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgc3lzdGVtIHdpbGwgYWx3YXlzIGNob29zZSB0aGUgImRl
ZmF1bHQiIGF1ZGlvIGlucHV0IHNvdXJjZSB1bmxlc3MKKyAgICAgICAgK1tBVkF1ZGlvU2Vzc2lv
biBzZXRQcmVmZXJyZWRJbnB1dDplcnJvcjpdIGlzIGNhbGxlZCBmaXJzdCwgYW5kIHRoYXQgb25s
eSB3b3JrcworICAgICAgICBpZiB0aGUgYXVkaW8gc2Vzc2lvbiBjYXRlZ29yeSBoYXMgYmVlbiBz
ZXQgdG8gUGxheUFuZFJlY29yZCAqYmVmb3JlKiBpdCBpcyBjYWxsZWQsCisgICAgICAgIHNvIGNv
bmZpZ3VyZSB0aGUgYXVkaW8gc2Vzc2lvbiBmb3IgcmVjb3JkaW5nIGJlZm9yZSB3ZSBjaG9vc2Ug
YW5kIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAgYXVkaW8gY2FwdHVyZSBkZXZpY2UuCisgICAgICAg
IAorICAgICAgICBUZXN0ZWQgbWFudWFsbHksIHRoaXMgb25seSByZXByb2R1Y2VzIG9uIGhhcmR3
YXJlLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
YWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQgY29uc3QpOiBBdWRpbworICAgICAgICBjYXB0dXJl
IHJlcXVpcmVzIGFuIGFjdGl2ZSBhdWRpbyBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVTZXNzaW9uKTogTW92ZSBgI2lmIFVTRShB
VURJT19TRVNTSU9OKWAKKyAgICAgICAgZ3VhcmQgaW5zaWRlIG9mIG1heWJlRGVhY3RpdmF0ZUF1
ZGlvU2Vzc2lvbiBzbyBpdCBpc24ndCBzcHJlYWQgdGhyb3VnaG91dCB0aGUgZmlsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdp
blBsYXliYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnByb2Nlc3NXaWxsU3VzcGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzRGlkUmVzdW1lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5Q
cm9kdWNlQXVkaW9DaGFuZ2VkKTogQWRkIGxvZ2dpbmcsCisgICAgICAgIGNhbGwgYG1heWJlQWN0
aXZhdGVBdWRpb1Nlc3Npb24oKWAgc28gd2UgYWN0aXZhdGUgdGhlIGF1ZGlvIHNlc3Npb24gaWYg
bmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjphZGRBdWRpb0NhcHR1cmVTb3VyY2UpOiBDYWxsIHVwZGF0ZVNlc3Npb25TdGF0ZQorICAgICAg
ICBpbnN0ZWFkIG9mIHNjaGVkdWxlVXBkYXRlU2Vzc2lvblN0YXRlIHNvIHRoZSBhdWRpbyBzZXNz
aW9uIGNhdGVnb3J5IGlzIHVwZGF0ZWQKKyAgICAgICAgaW1tZWRpYXRlbHkuCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1heWJlRGVhY3RpdmF0ZUF1ZGlv
U2Vzc2lvbik6IE1vdmUgCisgICAgICAgIGAjaWYgVVNFKEFVRElPX1NFU1NJT04pYCBpbnRvIHRo
ZSBmdW5jdGlvbiBzbyBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgc3ByZWFkIAorICAgICAgICB0aHJv
dWdob3V0IHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjptYXliZUFjdGl2YXRlQXVkaW9TZXNzaW9uKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmlzQXBwbGljYXRpb25JbkJhY2tncm91
bmQgY29uc3QpOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0UHJlZmVycmVkQnVm
ZmVyU2l6ZSk6IExvZyBhbiBlcnJvciBpZiB3ZSBhcmUgdW5hYmxlCisgICAgICAgIHRvIHNldCB0
aGUgcHJlZmVycmVkIGJ1ZmZlciBzaXplLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXI6OnNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRCk6CisgICAgICAgIE5ldywgc2V0
IHRoZSBwcmVmZXJyZWQgaW5wdXQgc28gY2FwdHVyZSB3aWxsIHVzZSBzZWxlY3QgdGhlIGRldmlj
ZSB3ZSB3YW50LgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcyk6IFJlbW92ZQorICAgICAgICBt
X3JlY29tcHV0ZURldmljZXMsIGBzZXRBdWRpb0NhcHR1cmVEZXZpY2VzYCBoYXMgYmVlbiByZXN0
cnVjdHVyZWQgc28gd2UgZG9uJ3QgbmVlZCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9T
ZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJlRGV2aWNlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2V0QXVkaW9DYXB0dXJlRGV2aWNlcyk6IERvbid0IHVwZGF0ZQorICAgICAgICB0aGUgbGlzdCBv
ZiBjYXB0dXJlIGRldmljZXMgd2hlbiB0aGUgZGVmYXVsdCBkZXZpY2UgY2hhbmdlcywgb25seSB3
aGVuIGEgZGV2aWNlIGlzCisgICAgICAgIGFkZGVkLCByZW1vdmVkLCBlbmFibGVkLCBvciBkaXNh
YmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnNl
dENhcHR1cmVEZXZpY2UpOiBDYWxsIGBzZXRQcmVmZXJyZWRBdWRpb1Nlc3Npb25EZXZpY2VVSURg
CisgICAgICAgIHNvIHRoZSBjb3JyZWN0IGRldmljZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQpOiBDbGVhciBtX3Bl
cnNpc3RlbnRJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNy
ZWF0ZSk6IFJldHVybiBhbiBlcnJvciB3aXRoIGEgc3RyaW5nLCBvciB0aGUKKyAgICAgICAgd2Vi
IHByb2Nlc3MgY2FuIGRldGVjdCBhIGZhaWx1cmUuCisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6IEFkZCBsb2dnaW5nLgorCiAyMDIx
LTA3LTI5ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0NNYWtlXSBVc2UgYW4gaW1wb3J0ZWQgdGFyZ2V0IGZvciB0aGUgbGliZ2NyeXB0IGxp
YnJhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMWEzYmQ2NTgwYjdhYjMyM2ZjZTgyMzMxZmRlNmRjOGIwMDE5ODY2
NS4uNGMxMTY1MzBlZDljNGMxMjI4ZGFjZjhjZTRjZjMyZGRlZmRjOGE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wOC0wMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBnZXRVc2VyTWVkaWEgc29tZXRpbWVzIGRvZXNuJ3Qg
Y2FwdHVyZSBmcm9tIHNwZWNpZmllZCBtaWNyb3Bob25lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3NTMKKyAgICAgICAgcmRhcjovLzc5NzA0MjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6IFJlCisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5OjphdWRp
b1VuaXRXaWxsU3RhcnQpOiBEZWxldGUsCisgICAgICAgIHdlIGRvbid0IG5lZWQgaXQgbm93IHRo
YXQgdGhlIHdlYiBwcm9jZXNzIGNvbmZpZ3VyZXMgdGhlIGF1ZGlvIHNlc3Npb24gYmVmb3JlCisg
ICAgICAgIGNhcHR1cmUgYmVnaW5zLgorCiAyMDIxLTA3LTI5ICBQZW5nIExpdSAgPHBlbmcubGl1
NkBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIGJ1bmRsZSBwYXRoIG9mIGRvd25sZXZlbCBTYWZh
cmkgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDE4MTFkOWI2Y2MzNTYy
YWI0ZmNlYWEzMmE2OGM0MWQ2OWRlOTI0NjcuLjdhOWU4MjA4ZjI0MDE2NDEzYzMxZDhhNjIyZmZk
YTE2NWMxYzQ4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNiw5ICsxMTYs
MTUgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmhhcyhQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpIGNvbnMKIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gYW55T2ZTZXNzaW9ucyhbXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAgICByZXR1cm4gc2Vz
c2lvbi5hY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpOwotICAgIH0pOworICAgIGlmIChhbnlP
ZlNlc3Npb25zKFtdIChhdXRvJiBzZXNzaW9uKSB7IHJldHVybiBzZXNzaW9uLmFjdGl2ZUF1ZGlv
U2Vzc2lvblJlcXVpcmVkKCk7IH0pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAo
Y29uc3QgYXV0byYgc291cmNlIDogbV9hdWRpb0NhcHR1cmVTb3VyY2VzKSB7CisgICAgICAgIGlm
IChzb3VyY2UuaXNDYXB0dXJpbmdBdWRpbygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6Y2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QKQEAgLTE5OSwxMCArMjA1LDggQEAgdm9p
ZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb24mIHNlc3Npb24pCiAKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpbmRleCk7CiAKLSNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoaGFzTm9TZXNzaW9uKCkpCiAgICAgICAgIG1h
eWJlRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwotI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBtX2xvZ2dlci0+cmVtb3ZlTG9nZ2VyKHNlc3Npb24ubG9nZ2VyKCkpOwpA
QCAtMjM3LDE3ICsyNDEsMTAgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
c3Npb25XaWxsQmVnaW5QbGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAgIGlmIChhY3Rp
dmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpKSB7Ci0gICAgICAgIGlmICghQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpIHsKLSAgICAgICAgICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgc2Vzc2lvbi5sb2dJZGVudGlmaWVyKCksICIgcmV0dXJuaW5n
IGZhbHNlIGZhaWxlZCB0byBzZXQgYWN0aXZlIEF1ZGlvU2Vzc2lvbiIpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCBzZXNzaW9uLmxvZ0lkZW50aWZpZXIoKSwgIiBzdWNlc3NmdWxseSBhY3RpdmF0ZWQgQXVk
aW9TZXNzaW9uIik7Ci0gICAgICAgIG1fYmVjYW1lQWN0aXZlID0gdHJ1ZTsKKyAgICBpZiAoIW1h
eWJlQWN0aXZhdGVBdWRpb1Nlc3Npb24oKSkgeworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsIHNlc3Npb24ubG9nSWRlbnRpZmllcigpLCAiIHJldHVybmluZyBmYWxzZSwgZmFpbGVk
IHRvIGFjdGl2YXRlIEF1ZGlvU2Vzc2lvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotI2VuZGlmCiAKICAgICBpZiAobV9pbnRlcnJ1cHRlZCkKICAgICAgICAgZW5kSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzKTsKQEAgLTM5NCw5ICszOTEsNyBAQCB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cHJvY2Vzc1dpbGxTdXNwZW5kKCkKICAg
ICAgICAgc2Vzc2lvbi5jbGllbnQoKS5wcm9jZXNzSXNTdXNwZW5kZWRDaGFuZ2VkKCk7CiAgICAg
fSk7CiAKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBtYXliZURlYWN0aXZhdGVBdWRpb1Nl
c3Npb24oKTsKLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
cHJvY2Vzc0RpZFJlc3VtZSgpCkBAIC00MTAsMTAgKzQwNSw4IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzRGlkUmVzdW1lKCkKICAgICB9KTsKIAogI2lmIFVTRShB
VURJT19TRVNTSU9OKQotICAgIGlmICghbV9iZWNhbWVBY3RpdmUgJiYgYWN0aXZlQXVkaW9TZXNz
aW9uUmVxdWlyZWQoKSkgewotICAgICAgICBtX2JlY2FtZUFjdGl2ZSA9IEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLnRyeVRvU2V0QWN0aXZlKHRydWUpOwotICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJ0cmllZCB0byBzZXQgYWN0aXZlIEF1ZGlvU2Vzc2lvbiwgIiwgbV9i
ZWNhbWVBY3RpdmUgPyAic3VjY2VlZGVkIiA6ICJmYWlsZWQiKTsKLSAgICB9CisgICAgaWYgKCFt
X2JlY2FtZUFjdGl2ZSkKKyAgICAgICAgbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwogI2Vu
ZGlmCiB9CiAKQEAgLTQzNyw2ICs0MzAsOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbklzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5nZQogCiB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0No
YW5nZWQoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgbWF5YmVBY3Rp
dmF0ZUF1ZGlvU2Vzc2lvbigpOwogICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCkBAIC01
ODEsNyArNTc2LDcgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZEF1ZGlv
Q2FwdHVyZVNvdXJjZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXUKIHsKICAgICBBU1NFUlQoIW1f
YXVkaW9DYXB0dXJlU291cmNlcy5jb250YWlucyhzb3VyY2UpKTsKICAgICBtX2F1ZGlvQ2FwdHVy
ZVNvdXJjZXMuYWRkKHNvdXJjZSk7Ci0gICAgc2NoZWR1bGVVcGRhdGVTZXNzaW9uU3RhdGUoKTsK
KyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKIH0KIAogCkBAIC02MDMsMTggKzU5OCwzMSBAQCB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVTZXNzaW9uU3Rh
dGUoKQogICAgIH0pOwogfQogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCiB2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVEZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKIHsKKyNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoIW1fYmVjYW1lQWN0aXZlIHx8ICFzaG91bGRE
ZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgInRyaWVkIHRvIHNldCBpbmFjdGl2ZSBBdWRpb1Nlc3Npb24iKTsK
ICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2ZShmYWxzZSk7
CiAgICAgbV9iZWNhbWVBY3RpdmUgPSBmYWxzZTsKLX0KICNlbmRpZgorfQogCitib29sIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpCit7Cisj
aWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgaWYgKCFhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJl
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG1fYmVjYW1lQWN0aXZlID0gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSk7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCBtX2JlY2FtZUFjdGl2ZSA/ICJzdWNjZXNzZnVsbHkgYWN0aXZh
dGVkIiA6ICJmYWlsZWQgdG8gYWN0aXZhdGUiLCAiIEF1ZGlvU2Vzc2lvbiIpOworICAgIHJldHVy
biBtX2JlY2FtZUFjdGl2ZTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KIHN0
YXRpYyBib29sJiBkZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKIHsKICAgICBzdGF0aWMgYm9vbCBk
ZWFjdGl2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCBjYWMyYzY1YTU1MTUxNGRjZTE2
M2FkMjI1YWY0NjBkYjYwNTY0ZjQ2Li45NTMzZTNiMWQ1NjBlZTkyZjc4MDYwNmJhN2Y4ZDU4YWE4
MDk5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtMTgxLDkgKzE4MSw4IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGFueU9mU2Vzc2lvbnMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPiYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0FwcGxpY2F0aW9u
SW5CYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcGxpY2F0aW9uSW5CYWNrZ3JvdW5k
OyB9Ci0jaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgdm9pZCBtYXliZURlYWN0aXZhdGVBdWRp
b1Nlc3Npb24oKTsKLSNlbmRpZgorICAgIGJvb2wgbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigp
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggYTkzMWI1MjI0
ZjE2YzI1NDFmNzg1N2E5YmQyNDQzYjM0ODg0N2MxOS4uZjM3NWYwMzRjYjNkOWEyNzI2YmZiNjg4
NjY4MDA2YTZjMjcwYjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk5LDYgKzI5OSw3IEBAIHZvaWQgQXVk
aW9TZXNzaW9uSU9TOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQog
ICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6
ZSAvIHNhbXBsZVJhdGUoKTsKICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNo
YXJlZEluc3RhbmNlXSBzZXRQcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9y
OiZlcnJvcl07CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhLCAiZmFpbGVk
IHRvIHNldCBwcmVmZXJyZWQgYnVmZmVyIGR1cmF0aW9uIHRvICVmIHdpdGggZXJyb3I6ICVAIiwg
ZHVyYXRpb24sIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoIWVycm9y
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgKaW5kZXggOTUxMTc5NWVlNDU0NjAzNTg4ZTBjZDVmYjRlY2UzNWY2MzJjZDNhYi4uNGJm
ODRkZmIwMmQxMGE5YWRkZGYzY2YxYjFhYzZjODU3YjhiM2UzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC01Nyw2ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZUFsbERldmljZXNRdWVyeSgpOwogICAgIHZvaWQgZGlz
YWJsZUFsbERldmljZXNRdWVyeSgpOwogCisgICAgdm9pZCBzZXRQcmVmZXJyZWRBdWRpb1Nlc3Np
b25EZXZpY2VVSUQoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCmluZGV4IDA4ZWQ1MjNiMWUxYzI0YTI2ZWFlYzY0NmJmNzg0YTQ2OGU1Y2Jj
ZTcuLjZlYzJjMzE0ZDJjNjM2ZWUyNjdmMzI4NTVjZDNhYzM1NzcxNDViNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xNDQs
MTIgKzE0NCwyOSBAQCBzdGQ6Om9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4g
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2No
ZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcygpCit2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRChjb25zdCBTdHJp
bmcmIGRldmljZVVJRCkKIHsKLSAgICBpZiAobV9yZWNvbXB1dGVEZXZpY2VzKQorICAgIEFWQXVk
aW9TZXNzaW9uUG9ydERlc2NyaXB0aW9uICpwcmVmZXJyZWRQb3J0ID0gbmlsOworICAgIE5TU3Ry
aW5nICpuc0RldmljZVVJRCA9IGRldmljZVVJRDsKKyAgICBmb3IgKEFWQXVkaW9TZXNzaW9uUG9y
dERlc2NyaXB0aW9uICpwb3J0RGVzY3JpcHRpb24gaW4gW21fYXVkaW9TZXNzaW9uIGF2YWlsYWJs
ZUlucHV0c10pIHsKKyAgICAgICAgaWYgKFtwb3J0RGVzY3JpcHRpb24uVUlEIGlzRXF1YWxUb1N0
cmluZzpuc0RldmljZVVJRF0pIHsKKyAgICAgICAgICAgIHByZWZlcnJlZFBvcnQgPSBwb3J0RGVz
Y3JpcHRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghcHJlZmVycmVkUG9ydCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJm
YWlsZWQgdG8gZmluZCBwcmVmZXJyZWQgaW5wdXQgJyV7cHVibGljfXMnIiwgZGV2aWNlVUlELmFz
Y2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIGlmICghW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFy
ZWRJbnN0YW5jZV0gc2V0UHJlZmVycmVkSW5wdXQ6cHJlZmVycmVkUG9ydCBlcnJvcjomZXJyb3Jd
KQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJmYWlsZWQgdG8gc2V0IHByZWZl
cnJlZCBpbnB1dCB0byAnJXtwdWJsaWN9cycgd2l0aCBlcnJvcjogJUAiLCBkZXZpY2VVSUQuYXNj
aWkoKS5kYXRhKCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKK30KIAotICAgIG1fcmVj
b21wdXRlRGV2aWNlcyA9IHRydWU7Cit2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNjaGVkdWxlVXBkYXRlQ2FwdHVyZURldmljZXMoKQorewogICAgIGNvbXB1dGVDYXB0
dXJlRGV2aWNlcyhbXSB7IH0pOwogfQogCkBAIC0xODAsMTMgKzE5Nyw5IEBAIHZvaWQgQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBs
ZXRpb25IYW5kbGVyCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICghbV9yZWNvbXB1dGVE
ZXZpY2VzKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGF1dG8gbmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlcygpOwogICAgICAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5U
aHJlYWQobWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KSwgbmV3QXVkaW9EZXZpY2VzID0gV1RGTW92ZShuZXdBdWRpb0RldmljZXMpLmlzb2xhdGVkQ29w
eSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIG1fcmVjb21wdXRlRGV2aWNlcyA9IGZhbHNl
OwogICAgICAgICAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2
aWNlcykpOwogICAgICAgICAgICAgY29tcGxldGlvbigpOwogICAgICAgICB9KS5nZXQoKSk7CkBA
IC0yMjAsMTcgKzIzMywzNCBAQCBWZWN0b3I8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBB
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZXRyaWV2ZQogdm9pZCBBVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFZlY3Rv
cjxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+JiYgbmV3QXVkaW9EZXZpY2VzKQogewogICAg
IGJvb2wgZmlyc3RUaW1lID0gIW1fZGV2aWNlczsKLSAgICBib29sIGhhdmVEZXZpY2VDaGFuZ2Vz
ID0gIW1fZGV2aWNlcyB8fCBuZXdBdWRpb0RldmljZXMuc2l6ZSgpICE9IG1fZGV2aWNlcy0+c2l6
ZSgpOwotICAgIGlmICghaGF2ZURldmljZUNoYW5nZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBuZXdBdWRpb0RldmljZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1
dG8mIG9sZFN0YXRlID0gKCptX2RldmljZXMpW2ldOwotICAgICAgICAgICAgYXV0byYgbmV3U3Rh
dGUgPSBuZXdBdWRpb0RldmljZXNbaV07Ci0gICAgICAgICAgICBpZiAobmV3U3RhdGUudHlwZSgp
ICE9IG9sZFN0YXRlLnR5cGUoKSB8fCBuZXdTdGF0ZS5wZXJzaXN0ZW50SWQoKSAhPSBvbGRTdGF0
ZS5wZXJzaXN0ZW50SWQoKSB8fCBuZXdTdGF0ZS5lbmFibGVkKCkgIT0gb2xkU3RhdGUuZW5hYmxl
ZCgpIHx8IG5ld1N0YXRlLmlzRGVmYXVsdCgpICE9IG9sZFN0YXRlLmlzRGVmYXVsdCgpKQotICAg
ICAgICAgICAgICAgIGhhdmVEZXZpY2VDaGFuZ2VzID0gdHJ1ZTsKKyAgICBib29sIGRldmljZUxp
c3RDaGFuZ2VkID0gbmV3QXVkaW9EZXZpY2VzLnNpemUoKSAhPSBtX2RldmljZXMtPnNpemUoKTsK
KyAgICBib29sIGRlZmF1bHREZXZpY2VDaGFuZ2VkID0gZmFsc2U7CisgICAgaWYgKCFkZXZpY2VM
aXN0Q2hhbmdlZCAmJiAhZmlyc3RUaW1lKSB7CisgICAgICAgIGZvciAoYXV0byYgbmV3U3RhdGUg
OiBuZXdBdWRpb0RldmljZXMpIHsKKworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJl
RGV2aWNlPiBvbGRTdGF0ZTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDog
bV9kZXZpY2VzLnZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGV2aWNlLnR5cGUoKSA9
PSBuZXdTdGF0ZS50eXBlKCkgJiYgZGV2aWNlLnBlcnNpc3RlbnRJZCgpID09IG5ld1N0YXRlLnBl
cnNpc3RlbnRJZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG9sZFN0YXRlID0gZGV2aWNlOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghb2xkU3RhdGUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAg
ICAgICAgICBkZXZpY2VMaXN0Q2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmV3U3RhdGUuaXNEZWZhdWx0KCkgIT0g
b2xkU3RhdGUudmFsdWUoKS5pc0RlZmF1bHQoKSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0RGV2
aWNlQ2hhbmdlZCAgPSB0cnVlOworCisgICAgICAgICAgICBpZiAobmV3U3RhdGUuZW5hYmxlZCgp
ICE9IG9sZFN0YXRlLnZhbHVlKCkuZW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgZGV2aWNl
TGlzdENoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFoYXZlRGV2aWNlQ2hhbmdlcyAmJiAhZmly
c3RUaW1lKQorICAgIGlmICghZGV2aWNlTGlzdENoYW5nZWQgJiYgIWZpcnN0VGltZSAmJiAhZGVm
YXVsdERldmljZUNoYW5nZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbmV3RGV2aWNl
cyA9IGNvcHlUb1ZlY3Rvck9mPENhcHR1cmVEZXZpY2U+KG5ld0F1ZGlvRGV2aWNlcyk7CkBAIC0y
NDAsNyArMjcwLDcgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFZlY3RvcjxBVkF1ZGlvU2UKICAgICB9KTsKICAgICBtX2Rl
dmljZXMgPSBXVEZNb3ZlKG5ld0RldmljZXMpOwogCi0gICAgaWYgKCFmaXJzdFRpbWUpCisgICAg
aWYgKGRldmljZUxpc3RDaGFuZ2VkICYmICFmaXJzdFRpbWUpCiAgICAgICAgIGRldmljZUNoYW5n
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGY0YjM2
NTg5NGQzN2NkOTRmZjIxYjdmYjU0ZmRiMjY0MWYzNmZlOTYuLjg3YmYzZGJhMDMzN2QwOTMwMDZh
ODhiMDUzNDdkZTkzN2FjODczNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5j
cHAKQEAgLTE2Myw2ICsxNjMsOSBAQCBDb3JlQXVkaW9TaGFyZWRVbml0OjpDb3JlQXVkaW9TaGFy
ZWRVbml0KCkKIAogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXRDYXB0dXJlRGV2aWNlKFN0
cmluZyYmIHBlcnNpc3RlbnRJRCwgdWludDMyX3QgY2FwdHVyZURldmljZUlEKQogeworICAgIGlm
IChtX3BlcnNpc3RlbnRJRCA9PSBwZXJzaXN0ZW50SUQpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1fcGVyc2lzdGVudElEID0gV1RGTW92ZShwZXJzaXN0ZW50SUQpOwogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMTczLDYgKzE3Niw3IEBAIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0Q2Fw
dHVyZURldmljZShTdHJpbmcmJiBwZXJzaXN0ZW50SUQsIHVpbnQzMl90IGNhcHR1CiAgICAgcmVj
b25maWd1cmVBdWRpb1VuaXQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNhcHR1cmVEZXZp
Y2VJRCk7CisgICAgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCkuc2V0UHJlZmVycmVkQXVkaW9TZXNzaW9uRGV2aWNlVUlEKG1fcGVyc2lzdGVudElEKTsKICNl
bmRpZgogfQogCkBAIC00NjYsNiArNDcwLDcgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0Ojpj
bGVhbnVwQXVkaW9Vbml0KCkKIAogICAgIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlciA9IG51bGxw
dHI7CiAgICAgbV9zcGVha2VyU2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX3BlcnNpc3Rl
bnRJRCA9IGVtcHR5U3RyaW5nKCk7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIG1faW9Vbml0TmFt
ZSA9IGVtcHR5U3RyaW5nKCk7CiAjZW5kaWYKQEAgLTYxOSw3ICs2MjQsNyBAQCBDYXB0dXJlU291
cmNlT3JFcnJvciBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNl
SUQsIFN0cmluZyYmCiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gZGV2aWNl
ID0gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuYXVkaW9T
ZXNzaW9uRGV2aWNlV2l0aFVJRChXVEZNb3ZlKGRldmljZUlEKSk7CiAgICAgaWYgKCFkZXZpY2Up
Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiB7ICJObyBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2UgZGV2aWNlIl9zIH07CiAKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVm
KCpuZXcgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgU3RyaW5nIHsg
ZGV2aWNlLT5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpLCAwKSk7CiAjZW5kaWYKQEAgLTc2
MCw2ICs3NjUsNyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEo
KQogeworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogICAg
IHVuaXQoKS5zdG9wUHJvZHVjaW5nRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDlhYjJhMzc1YTllMDM4MGFhNTdhNWE5NDE0YmQ5OTU2M2IxY2ZmN2MuLjY0MWYy
ZGI4MWExYjAzOGUzZDU5MjgwNDIzMTMyOTg3M2IxNzRjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCkBAIC0xMDAsMTUgKzEwMCw2IEBAIHB1YmxpYzoKICAgICBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQogICAg
IGludDY0X3QgbnVtYmVyT2ZGcmFtZXMoKSB7IHJldHVybiBtX251bWJlck9mRnJhbWVzOyB9CiAK
LSAgICB2b2lkIGF1ZGlvVW5pdFdpbGxTdGFydCgpIGZpbmFsCi0gICAgewotICAgICAgICAvLyBG
SVhNRTogV2ViUHJvY2VzcyBtaWdodCB3YW50IHRvIHNldCB0aGUgY2F0ZWdvcnkvYnVmZmVyU2l6
ZSBpdHNlbGYsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIHJlbW92ZSB0aGF0IGNvZGUuCi0gICAg
ICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBs
ZVJhdGUoKSAvIDUwOwotICAgICAgICBpZiAoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCku
cHJlZmVycmVkQnVmZmVyU2l6ZSgpID4gYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIEF1ZGlvU2Vz
c2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoYnVmZmVyU2l6ZSk7
Ci0gICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1ZGlv
U2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlOjpQbGF5QW5kUmVjb3JkLCBSb3V0ZVNoYXJpbmdQb2xpY3k6
OkRlZmF1bHQpOwotICAgIH0KLQogICAgIHZvaWQgc3RhcnQoKQogICAgIHsKICAgICAgICAgbV9z
aG91bGRSZXNldCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435007</attachid>
            <date>2021-08-05 10:57:04 -0700</date>
            <delta_ts>2021-08-05 15:19:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-228753-20210805105703.patch</filename>
            <type>text/plain</type>
            <size>19524</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhYmM1NTg2N2QwNTkx
YzJiMzJkZjJmMGRmZTJjZmIzMjVlNzFhNy4uOWJiYjZhMGVhYTEyYmZjZjdiMjExNTgyNjVhMTU1
ZDI2MTUzYmUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA4LTAzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIGdldFVz
ZXJNZWRpYSBzb21ldGltZXMgZG9lc24ndCBjYXB0dXJlIGZyb20gc3BlY2lmaWVkIG1pY3JvcGhv
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODc1
MworICAgICAgICByZGFyOi8vNzk3MDQyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4g
RmFibGV0LgorCisgICAgICAgIFRoZSBzeXN0ZW0gd2lsbCBhbHdheXMgY2hvb3NlIHRoZSAiZGVm
YXVsdCIgYXVkaW8gaW5wdXQgc291cmNlIHVubGVzcworICAgICAgICArW0FWQXVkaW9TZXNzaW9u
IHNldFByZWZlcnJlZElucHV0OmVycm9yOl0gaXMgY2FsbGVkIGZpcnN0LCBhbmQgdGhhdCBvbmx5
IHdvcmtzCisgICAgICAgIGlmIHRoZSBhdWRpbyBzZXNzaW9uIGNhdGVnb3J5IGhhcyBiZWVuIHNl
dCB0byBQbGF5QW5kUmVjb3JkICpiZWZvcmUqIGl0IGlzIGNhbGxlZCwKKyAgICAgICAgc28gY29u
ZmlndXJlIHRoZSBhdWRpbyBzZXNzaW9uIGZvciByZWNvcmRpbmcgYmVmb3JlIHdlIGNob29zZSBh
bmQgY29uZmlndXJlIHRoZQorICAgICAgICBhdWRpbyBjYXB0dXJlIGRldmljZS4KKyAgICAgICAg
CisgICAgICAgIFRlc3RlZCBtYW51YWxseSwgdGhpcyBvbmx5IHJlcHJvZHVjZXMgb24gaGFyZHdh
cmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjph
Y3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCBjb25zdCk6IEF1ZGlvCisgICAgICAgIGNhcHR1cmUg
cmVxdWlyZXMgYW4gYWN0aXZlIGF1ZGlvIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVNlc3Npb24pOiBNb3ZlIGAjaWYgVVNFKEFV
RElPX1NFU1NJT04pYAorICAgICAgICBndWFyZCBpbnNpZGUgb2YgbWF5YmVEZWFjdGl2YXRlQXVk
aW9TZXNzaW9uIHNvIGl0IGlzbid0IHNwcmVhZCB0aHJvdWdob3V0IHRoZSBmaWxlLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cHJvY2Vzc1dpbGxTdXNwZW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnByb2Nlc3NEaWRSZXN1bWUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhblBy
b2R1Y2VBdWRpb0NoYW5nZWQpOiBBZGQgbG9nZ2luZywKKyAgICAgICAgY2FsbCBgbWF5YmVBY3Rp
dmF0ZUF1ZGlvU2Vzc2lvbigpYCBzbyB3ZSBhY3RpdmF0ZSB0aGUgYXVkaW8gc2Vzc2lvbiBpZiBu
ZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFkZEF1ZGlvQ2FwdHVyZVNvdXJjZSk6IENhbGwgdXBkYXRlU2Vzc2lvblN0YXRlCisgICAgICAg
IGluc3RlYWQgb2Ygc2NoZWR1bGVVcGRhdGVTZXNzaW9uU3RhdGUgc28gdGhlIGF1ZGlvIHNlc3Np
b24gY2F0ZWdvcnkgaXMgdXBkYXRlZAorICAgICAgICBpbW1lZGlhdGVseS4KKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6bWF5YmVEZWFjdGl2YXRlQXVkaW9T
ZXNzaW9uKTogTW92ZSAKKyAgICAgICAgYCNpZiBVU0UoQVVESU9fU0VTU0lPTilgIGludG8gdGhl
IGZ1bmN0aW9uIHNvIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBzcHJlYWQgCisgICAgICAgIHRocm91
Z2hvdXQgdGhlIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6Om1heWJlQWN0aXZhdGVBdWRpb1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6aXNBcHBsaWNhdGlvbkluQmFja2dyb3Vu
ZCBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpzZXRQcmVmZXJyZWRCdWZm
ZXJTaXplKTogTG9nIGFuIGVycm9yIGlmIHdlIGFyZSB1bmFibGUKKyAgICAgICAgdG8gc2V0IHRo
ZSBwcmVmZXJyZWQgYnVmZmVyIHNpemUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2V0UHJlZmVycmVkQXVkaW9TZXNzaW9uRGV2aWNlVUlEKToKKyAgICAgICAgTmV3LCBzZXQg
dGhlIHByZWZlcnJlZCBpbnB1dCBzbyBjYXB0dXJlIHdpbGwgdXNlIHNlbGVjdCB0aGUgZGV2aWNl
IHdlIHdhbnQuCisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpzY2hlZHVsZVVwZGF0ZUNhcHR1cmVEZXZpY2VzKTogUmVtb3ZlCisgICAgICAgIG1f
cmVjb21wdXRlRGV2aWNlcywgYHNldEF1ZGlvQ2FwdHVyZURldmljZXNgIGhhcyBiZWVuIHJlc3Ry
dWN0dXJlZCBzbyB3ZSBkb24ndCBuZWVkIGl0LgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXRBdWRpb0NhcHR1cmVEZXZpY2VzKTogRG9uJ3QgdXBkYXRlCisgICAgICAgIHRoZSBsaXN0IG9m
IGNhcHR1cmUgZGV2aWNlcyB3aGVuIHRoZSBkZWZhdWx0IGRldmljZSBjaGFuZ2VzLCBvbmx5IHdo
ZW4gYSBkZXZpY2UgaXMKKyAgICAgICAgYWRkZWQsIHJlbW92ZWQsIGVuYWJsZWQsIG9yIGRpc2Fi
bGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0
Q2FwdHVyZURldmljZSk6IENhbGwgYHNldFByZWZlcnJlZEF1ZGlvU2Vzc2lvbkRldmljZVVJRGAK
KyAgICAgICAgc28gdGhlIGNvcnJlY3QgZGV2aWNlIGlzIHNlbGVjdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCk6IENsZWFyIG1fcGVy
c2lzdGVudElELgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3Jl
YXRlKTogUmV0dXJuIGFuIGVycm9yIHdpdGggYSBzdHJpbmcsIG9yIHRoZQorICAgICAgICB3ZWIg
cHJvY2VzcyBjYW4gZGV0ZWN0IGEgZmFpbHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRp
b0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogQWRkIGxvZ2dpbmcuCisKIDIwMjEt
MDctMjkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIFVzZSBhbiBpbXBvcnRlZCB0YXJnZXQgZm9yIHRoZSBsaWJnY3J5cHQgbGli
cmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAxYTNiZDY1ODBiN2FiMzIzZmNlODIzMzFmZGU2ZGM4YjAwMTk4NjY1
Li5mMDdmNWVjODdmOTE5YTYwZTZjZDI3Nzg1ZDBiMjY4OTZmZDQ1M2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA4LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIGdldFVzZXJNZWRpYSBzb21ldGltZXMgZG9lc24ndCBj
YXB0dXJlIGZyb20gc3BlY2lmaWVkIG1pY3JvcGhvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODc1MworICAgICAgICByZGFyOi8vNzk3MDQyMjYK
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOiBSZQorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94eTo6YXVkaW9V
bml0V2lsbFN0YXJ0KTogRGVsZXRlLAorICAgICAgICB3ZSBkb24ndCBuZWVkIGl0IG5vdyB0aGF0
IHRoZSB3ZWIgcHJvY2VzcyBjb25maWd1cmVzIHRoZSBhdWRpbyBzZXNzaW9uIGJlZm9yZQorICAg
ICAgICBjYXB0dXJlIGJlZ2lucy4KKwogMjAyMS0wNy0yOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZA
YXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBidW5kbGUgcGF0aCBvZiBkb3dubGV2ZWwgU2FmYXJp
IGlzIHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCAxODExZDliNmNjMzU2MmFi
NGZjZWFhMzJhNjhjNDFkNjlkZTkyNDY3Li43YmNlYzljYTdmODc1MGQ3MjFkYTlmYzQ4MmVkZDZh
MzZkYjdmOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTYsOCArMTE2LDEx
IEBAIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpoYXMoUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSB0eXBlKSBjb25zCiAKIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjphY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFueU9mU2Vzc2lvbnMoW10gKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgcmV0dXJuIHNlc3Np
b24uYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKTsKKyAgICBpZiAoYW55T2ZTZXNzaW9ucyhb
XSAoYXV0byYgc2Vzc2lvbikgeyByZXR1cm4gc2Vzc2lvbi5hY3RpdmVBdWRpb1Nlc3Npb25SZXF1
aXJlZCgpOyB9KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gV1RGOjphbnlP
ZihtX2F1ZGlvQ2FwdHVyZVNvdXJjZXMsIFtdKGF1dG8mIHNvdXJjZSkgeworICAgICAgICByZXR1
cm4gc291cmNlLmlzQ2FwdHVyaW5nQXVkaW8oKTsKICAgICB9KTsKIH0KIApAQCAtMTk5LDEwICsy
MDIsOCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlU2Vzc2lvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIAogICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlu
ZGV4KTsKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIGlmIChoYXNOb1Nlc3Npb24oKSkK
ICAgICAgICAgbWF5YmVEZWFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7Ci0jZW5kaWYKIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIG1fbG9nZ2VyLT5yZW1vdmVMb2dnZXIoc2Vzc2lvbi5s
b2dnZXIoKSk7CkBAIC0yMzcsMTcgKzIzOCwxMCBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0g
ICAgaWYgKGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkpIHsKLSAgICAgICAgaWYgKCFBdWRp
b1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2ZSh0cnVlKSkgewotICAgICAg
ICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzZXNzaW9uLmxvZ0lkZW50aWZpZXIoKSwg
IiByZXR1cm5pbmcgZmFsc2UgZmFpbGVkIHRvIHNldCBhY3RpdmUgQXVkaW9TZXNzaW9uIik7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIHNlc3Npb24ubG9nSWRlbnRpZmllcigpLCAiIHN1Y2Vzc2Z1bGx5IGFj
dGl2YXRlZCBBdWRpb1Nlc3Npb24iKTsKLSAgICAgICAgbV9iZWNhbWVBY3RpdmUgPSB0cnVlOwor
ICAgIGlmICghbWF5YmVBY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpKSB7CisgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgc2Vzc2lvbi5sb2dJZGVudGlmaWVyKCksICIgcmV0dXJuaW5nIGZh
bHNlLCBmYWlsZWQgdG8gYWN0aXZhdGUgQXVkaW9TZXNzaW9uIik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGlmIChtX2ludGVycnVwdGVkKQogICAgICAgICBl
bmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vRmxhZ3MpOwpAQCAtMzk0LDkg
KzM4OCw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzV2lsbFN1
c3BlbmQoKQogICAgICAgICBzZXNzaW9uLmNsaWVudCgpLnByb2Nlc3NJc1N1c3BlbmRlZENoYW5n
ZWQoKTsKICAgICB9KTsKIAotI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIG1heWJlRGVhY3Rp
dmF0ZUF1ZGlvU2Vzc2lvbigpOwotI2VuZGlmCiB9CiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpwcm9jZXNzRGlkUmVzdW1lKCkKQEAgLTQxMCwxMCArNDAyLDggQEAgdm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnByb2Nlc3NEaWRSZXN1bWUoKQogICAgIH0pOwog
CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgaWYgKCFtX2JlY2FtZUFjdGl2ZSAmJiBhY3Rp
dmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpKSB7Ci0gICAgICAgIG1fYmVjYW1lQWN0aXZlID0gQXVk
aW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSk7Ci0gICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyaWVkIHRvIHNldCBhY3RpdmUgQXVkaW9TZXNz
aW9uLCAiLCBtX2JlY2FtZUFjdGl2ZSA/ICJzdWNjZWVkZWQiIDogImZhaWxlZCIpOwotICAgIH0K
KyAgICBpZiAoIW1fYmVjYW1lQWN0aXZlKQorICAgICAgICBtYXliZUFjdGl2YXRlQXVkaW9TZXNz
aW9uKCk7CiAjZW5kaWYKIH0KIApAQCAtNDM3LDYgKzQyNyw4IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uSXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
Q2hhbmdlCiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uQ2FuUHJv
ZHVjZUF1ZGlvQ2hhbmdlZCgpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAg
ICBtYXliZUFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7CiAgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7
CiB9CiAKQEAgLTU4MSw3ICs1NzMsNyBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6YWRkQXVkaW9DYXB0dXJlU291cmNlKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdQogewogICAg
IEFTU0VSVCghbV9hdWRpb0NhcHR1cmVTb3VyY2VzLmNvbnRhaW5zKHNvdXJjZSkpOwogICAgIG1f
YXVkaW9DYXB0dXJlU291cmNlcy5hZGQoc291cmNlKTsKLSAgICBzY2hlZHVsZVVwZGF0ZVNlc3Np
b25TdGF0ZSgpOworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwogfQogCiAKQEAgLTYwMywxOCAr
NTk1LDMxIEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzY2hlZHVsZVVwZGF0
ZVNlc3Npb25TdGF0ZSgpCiAgICAgfSk7CiB9CiAKLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKIHZv
aWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptYXliZURlYWN0aXZhdGVBdWRpb1Nlc3Np
b24oKQogeworI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIGlmICghbV9iZWNhbWVBY3RpdmUg
fHwgIXNob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJpZWQgdG8gc2V0IGluYWN0aXZlIEF1ZGlv
U2Vzc2lvbiIpOwogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnRyeVRvU2V0QWN0
aXZlKGZhbHNlKTsKICAgICBtX2JlY2FtZUFjdGl2ZSA9IGZhbHNlOwotfQogI2VuZGlmCit9CisK
K2Jvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptYXliZUFjdGl2YXRlQXVkaW9TZXNz
aW9uKCkKK3sKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAoIWFjdGl2ZUF1ZGlvU2Vz
c2lvblJlcXVpcmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgbV9iZWNhbWVBY3Rp
dmUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2ZSh0cnVlKTsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1fYmVjYW1lQWN0aXZlID8gInN1Y2Nlc3Nm
dWxseSBhY3RpdmF0ZWQiIDogImZhaWxlZCB0byBhY3RpdmF0ZSIsICIgQXVkaW9TZXNzaW9uIik7
CisgICAgcmV0dXJuIG1fYmVjYW1lQWN0aXZlOworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorfQogc3RhdGljIGJvb2wmIGRlYWN0aXZhdGVBdWRpb1Nlc3Npb24oKQogewogICAgIHN0
YXRpYyBib29sIGRlYWN0aXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGNhYzJjNjVh
NTUxNTE0ZGNlMTYzYWQyMjVhZjQ2MGRiNjA1NjRmNDYuLjk1MzNlM2IxZDU2MGVlOTJmNzgwNjA2
YmE3ZjhkNThhYTgwOTk3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC0xODEsOSArMTgx
LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgYW55T2ZTZXNzaW9ucyhjb25zdCBGdW5jdGlvbjxi
b29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+JikgY29uc3Q7CiAKICAgICBib29sIGlz
QXBwbGljYXRpb25JbkJhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwbGljYXRpb25J
bkJhY2tncm91bmQ7IH0KLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICB2b2lkIG1heWJlRGVh
Y3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwotI2VuZGlmCisgICAgYm9vbCBtYXliZUFjdGl2YXRlQXVk
aW9TZXNzaW9uKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRl
eCBhOTMxYjUyMjRmMTZjMjU0MWY3ODU3YTliZDI0NDNiMzQ4ODQ3YzE5Li5mMzc1ZjAzNGNiM2Q5
YTI3MjZiZmI2ODg2NjgwMDZhNmMyNzBiMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTksNiArMjk5LDcg
QEAgdm9pZCBBdWRpb1Nlc3Npb25JT1M6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgZmxvYXQgZHVyYXRpb24g
PSBidWZmZXJTaXplIC8gc2FtcGxlUmF0ZSgpOwogICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lv
bkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNldFByZWZlcnJlZElPQnVmZmVyRHVyYXRpb246ZHVy
YXRpb24gZXJyb3I6JmVycm9yXTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWEsICJmYWlsZWQgdG8gc2V0IHByZWZlcnJlZCBidWZmZXIgZHVyYXRpb24gdG8gJWYgd2l0aCBl
cnJvcjogJUAiLCBkdXJhdGlvbiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIEFT
U0VSVCghZXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIuaAppbmRleCA5NTExNzk1ZWU0NTQ2MDM1ODhlMGNkNWZiNGVjZTM1ZjYz
MmNkM2FiLi40YmY4NGRmYjAyZDEwYTlhZGRkZjNjZjFiMWFjNmM4NTdiOGIzZTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTU3
LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlQWxsRGV2aWNlc1F1ZXJ5KCk7CiAg
ICAgdm9pZCBkaXNhYmxlQWxsRGV2aWNlc1F1ZXJ5KCk7CiAKKyAgICB2b2lkIHNldFByZWZlcnJl
ZEF1ZGlvU2Vzc2lvbkRldmljZVVJRChjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBB
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMDhlZDUyM2IxZTFjMjRhMjZlYWVjNjQ2YmY3
ODRhNDY4ZTVjYmNlNy4uNmVjMmMzMTRkMmM2MzZlZTI2N2YzMjg1NWNkM2FjMzU3NzE0NWI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KQEAgLTE0NCwxMiArMTQ0LDI5IEBAIHN0ZDo6b3B0aW9uYWw8QVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjphCiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpzY2hlZHVsZVVwZGF0ZUNhcHR1cmVEZXZpY2VzKCkKK3ZvaWQgQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0UHJlZmVycmVkQXVkaW9TZXNzaW9uRGV2aWNlVUlE
KGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEKQogewotICAgIGlmIChtX3JlY29tcHV0ZURldmljZXMp
CisgICAgQVZBdWRpb1Nlc3Npb25Qb3J0RGVzY3JpcHRpb24gKnByZWZlcnJlZFBvcnQgPSBuaWw7
CisgICAgTlNTdHJpbmcgKm5zRGV2aWNlVUlEID0gZGV2aWNlVUlEOworICAgIGZvciAoQVZBdWRp
b1Nlc3Npb25Qb3J0RGVzY3JpcHRpb24gKnBvcnREZXNjcmlwdGlvbiBpbiBbbV9hdWRpb1Nlc3Np
b24gYXZhaWxhYmxlSW5wdXRzXSkgeworICAgICAgICBpZiAoW3BvcnREZXNjcmlwdGlvbi5VSUQg
aXNFcXVhbFRvU3RyaW5nOm5zRGV2aWNlVUlEXSkgeworICAgICAgICAgICAgcHJlZmVycmVkUG9y
dCA9IHBvcnREZXNjcmlwdGlvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCFwcmVmZXJyZWRQb3J0KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFdlYlJUQywgImZhaWxlZCB0byBmaW5kIHByZWZlcnJlZCBpbnB1dCAnJXtwdWJsaWN9cyciLCBk
ZXZpY2VVSUQuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25D
bGFzcygpIHNoYXJlZEluc3RhbmNlXSBzZXRQcmVmZXJyZWRJbnB1dDpwcmVmZXJyZWRQb3J0IGVy
cm9yOiZlcnJvcl0pCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgImZhaWxlZCB0
byBzZXQgcHJlZmVycmVkIGlucHV0IHRvICcle3B1YmxpY31zJyB3aXRoIGVycm9yOiAlQCIsIGRl
dmljZVVJRC5hc2NpaSgpLmRhdGEoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pOworfQog
Ci0gICAgbV9yZWNvbXB1dGVEZXZpY2VzID0gdHJ1ZTsKK3ZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcygpCit7CiAgICAg
Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKFtdIHsgfSk7CiB9CiAKQEAgLTE4MCwxMyArMTk3LDkgQEAg
dm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURl
dmljZXMoQ29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKCFt
X3JlY29tcHV0ZURldmljZXMpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fZGlzcGF0Y2hRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgYXV0byBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VzKCk7CiAgICAgICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hB
c3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcyku
aXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewotICAgICAgICAgICAgbV9yZWNvbXB1dGVEZXZp
Y2VzID0gZmFsc2U7CiAgICAgICAgICAgICBzZXRBdWRpb0NhcHR1cmVEZXZpY2VzKFdURk1vdmUo
bmV3QXVkaW9EZXZpY2VzKSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIH0p
LmdldCgpKTsKQEAgLTIyMCwxNyArMjMzLDM0IEBAIFZlY3RvcjxBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnJldHJpZXZlCiB2
b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnNldEF1ZGlvQ2FwdHVyZURl
dmljZXMoVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4mJiBuZXdBdWRpb0Rldmlj
ZXMpCiB7CiAgICAgYm9vbCBmaXJzdFRpbWUgPSAhbV9kZXZpY2VzOwotICAgIGJvb2wgaGF2ZURl
dmljZUNoYW5nZXMgPSAhbV9kZXZpY2VzIHx8IG5ld0F1ZGlvRGV2aWNlcy5zaXplKCkgIT0gbV9k
ZXZpY2VzLT5zaXplKCk7Ci0gICAgaWYgKCFoYXZlRGV2aWNlQ2hhbmdlcykgewotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0F1ZGlvRGV2aWNlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgYXV0byYgb2xkU3RhdGUgPSAoKm1fZGV2aWNlcylbaV07Ci0gICAgICAgICAgICBh
dXRvJiBuZXdTdGF0ZSA9IG5ld0F1ZGlvRGV2aWNlc1tpXTsKLSAgICAgICAgICAgIGlmIChuZXdT
dGF0ZS50eXBlKCkgIT0gb2xkU3RhdGUudHlwZSgpIHx8IG5ld1N0YXRlLnBlcnNpc3RlbnRJZCgp
ICE9IG9sZFN0YXRlLnBlcnNpc3RlbnRJZCgpIHx8IG5ld1N0YXRlLmVuYWJsZWQoKSAhPSBvbGRT
dGF0ZS5lbmFibGVkKCkgfHwgbmV3U3RhdGUuaXNEZWZhdWx0KCkgIT0gb2xkU3RhdGUuaXNEZWZh
dWx0KCkpCi0gICAgICAgICAgICAgICAgaGF2ZURldmljZUNoYW5nZXMgPSB0cnVlOworICAgIGJv
b2wgZGV2aWNlTGlzdENoYW5nZWQgPSBuZXdBdWRpb0RldmljZXMuc2l6ZSgpICE9IG1fZGV2aWNl
cy0+c2l6ZSgpOworICAgIGJvb2wgZGVmYXVsdERldmljZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBp
ZiAoIWRldmljZUxpc3RDaGFuZ2VkICYmICFmaXJzdFRpbWUpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBuZXdTdGF0ZSA6IG5ld0F1ZGlvRGV2aWNlcykgeworCisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IG9sZFN0YXRlOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBkZXZpY2UgOiBtX2RldmljZXMudmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGlmIChkZXZp
Y2UudHlwZSgpID09IG5ld1N0YXRlLnR5cGUoKSAmJiBkZXZpY2UucGVyc2lzdGVudElkKCkgPT0g
bmV3U3RhdGUucGVyc2lzdGVudElkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgb2xkU3RhdGUg
PSBkZXZpY2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFvbGRTdGF0ZS5oYXNfdmFsdWUoKSkg
eworICAgICAgICAgICAgICAgIGRldmljZUxpc3RDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5pc0Rl
ZmF1bHQoKSAhPSBvbGRTdGF0ZS52YWx1ZSgpLmlzRGVmYXVsdCgpKQorICAgICAgICAgICAgICAg
IGRlZmF1bHREZXZpY2VDaGFuZ2VkICA9IHRydWU7CisKKyAgICAgICAgICAgIGlmIChuZXdTdGF0
ZS5lbmFibGVkKCkgIT0gb2xkU3RhdGUudmFsdWUoKS5lbmFibGVkKCkpIHsKKyAgICAgICAgICAg
ICAgICBkZXZpY2VMaXN0Q2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWhhdmVEZXZpY2VDaGFu
Z2VzICYmICFmaXJzdFRpbWUpCisgICAgaWYgKCFkZXZpY2VMaXN0Q2hhbmdlZCAmJiAhZmlyc3RU
aW1lICYmICFkZWZhdWx0RGV2aWNlQ2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBuZXdEZXZpY2VzID0gY29weVRvVmVjdG9yT2Y8Q2FwdHVyZURldmljZT4obmV3QXVkaW9EZXZp
Y2VzKTsKQEAgLTI0MCw3ICsyNzAsNyBAQCB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZXMoVmVjdG9yPEFWQXVkaW9TZQogICAgIH0p
OwogICAgIG1fZGV2aWNlcyA9IFdURk1vdmUobmV3RGV2aWNlcyk7CiAKLSAgICBpZiAoIWZpcnN0
VGltZSkKKyAgICBpZiAoZGV2aWNlTGlzdENoYW5nZWQgJiYgIWZpcnN0VGltZSkKICAgICAgICAg
ZGV2aWNlQ2hhbmdlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggZjRiMzY1ODk0ZDM3Y2Q5NGZmMjFiN2ZiNTRmZGIyNjQxZjM2ZmU5Ni4uODdiZjNkYmEw
MzM3ZDA5MzAwNmE4OGIwNTM0N2RlOTM3YWM4NzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcApAQCAtMTYzLDYgKzE2Myw5IEBAIENvcmVBdWRpb1NoYXJlZFVuaXQ6OkNv
cmVBdWRpb1NoYXJlZFVuaXQoKQogCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldENhcHR1
cmVEZXZpY2UoU3RyaW5nJiYgcGVyc2lzdGVudElELCB1aW50MzJfdCBjYXB0dXJlRGV2aWNlSUQp
CiB7CisgICAgaWYgKG1fcGVyc2lzdGVudElEID09IHBlcnNpc3RlbnRJRCkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgbV9wZXJzaXN0ZW50SUQgPSBXVEZNb3ZlKHBlcnNpc3RlbnRJRCk7CiAKICNp
ZiBQTEFURk9STShNQUMpCkBAIC0xNzMsNiArMTc2LDcgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRV
bml0OjpzZXRDYXB0dXJlRGV2aWNlKFN0cmluZyYmIHBlcnNpc3RlbnRJRCwgdWludDMyX3QgY2Fw
dHUKICAgICByZWNvbmZpZ3VyZUF1ZGlvVW5pdCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y2FwdHVyZURldmljZUlEKTsKKyAgICBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zZXRQcmVmZXJyZWRBdWRpb1Nlc3Npb25EZXZpY2VVSUQobV9wZXJzaXN0
ZW50SUQpOwogI2VuZGlmCiB9CiAKQEAgLTQ2Niw2ICs0NzAsNyBAQCB2b2lkIENvcmVBdWRpb1No
YXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXQoKQogCiAgICAgbV9taWNyb3Bob25lU2FtcGxlQnVm
ZmVyID0gbnVsbHB0cjsKICAgICBtX3NwZWFrZXJTYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAg
IG1fcGVyc2lzdGVudElEID0gZW1wdHlTdHJpbmcoKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAg
bV9pb1VuaXROYW1lID0gZW1wdHlTdHJpbmcoKTsKICNlbmRpZgpAQCAtNjE5LDcgKzYyNCw3IEBA
IENhcHR1cmVTb3VyY2VPckVycm9yIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJp
bmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
YXV0byBkZXZpY2UgPSBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS5hdWRpb1Nlc3Npb25EZXZpY2VXaXRoVUlEKFdURk1vdmUoZGV2aWNlSUQpKTsKICAgICBp
ZiAoIWRldmljZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHsgIk5vIEFW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZSBkZXZpY2UiX3MgfTsKIAogICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYoKm5ldyBDb3JlQXVkaW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQp
LCBTdHJpbmcgeyBkZXZpY2UtPmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIDApKTsKICNl
bmRpZgpAQCAtNzYwLDYgKzc2NSw3IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJ
RklFUik7CiAgICAgdW5pdCgpLnN0b3BQcm9kdWNpbmdEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5jcHAKaW5kZXggOWFiMmEzNzVhOWUwMzgwYWE1N2E1YTk0MTRiZDk5NTYzYjFj
ZmY3Yy4uNjQxZjJkYjgxYTFiMDM4ZTNkNTkyODA0MjMxMzI5ODczYjE3NGM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEwMCwxNSArMTAwLDYgQEAgcHVibGljOgogICAgIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24oKSB7IHJldHVybiBtX2Rlc2NyaXB0
aW9uOyB9CiAgICAgaW50NjRfdCBudW1iZXJPZkZyYW1lcygpIHsgcmV0dXJuIG1fbnVtYmVyT2ZG
cmFtZXM7IH0KIAotICAgIHZvaWQgYXVkaW9Vbml0V2lsbFN0YXJ0KCkgZmluYWwKLSAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBXZWJQcm9jZXNzIG1pZ2h0IHdhbnQgdG8gc2V0IHRoZSBjYXRlZ29y
eS9idWZmZXJTaXplIGl0c2VsZiwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgcmVtb3ZlIHRoYXQg
Y29kZS4KLSAgICAgICAgYXV0byBidWZmZXJTaXplID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkuc2FtcGxlUmF0ZSgpIC8gNTA7Ci0gICAgICAgIGlmIChBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZmZXJTaXplKCkgPiBidWZmZXJTaXplKQotICAgICAgICAg
ICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShi
dWZmZXJTaXplKTsKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0
ZWdvcnkoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6OlBsYXlBbmRSZWNvcmQsIFJvdXRlU2hh
cmluZ1BvbGljeTo6RGVmYXVsdCk7Ci0gICAgfQotCiAgICAgdm9pZCBzdGFydCgpCiAgICAgewog
ICAgICAgICBtX3Nob3VsZFJlc2V0ID0gdHJ1ZTsK
</data>
<flag name="commit-queue"
          id="457708"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>