<?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>228056</bug_id>
          
          <creation_ts>2021-07-18 04:33:44 -0700</creation_ts>
          <short_desc>[GLib] Remove libportal dependency</short_desc>
          <delta_ts>2021-07-23 03:52:16 -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>Platform</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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pgriffis</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777748</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-18 04:33:44 -0700</bug_when>
    <thetext>Let&apos;s do magic with GDBus instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777749</commentid>
    <comment_count>1</comment_count>
      <attachid>433748</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-18 04:54:27 -0700</bug_when>
    <thetext>Created attachment 433748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777758</commentid>
    <comment_count>2</comment_count>
      <attachid>433751</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-18 10:23:46 -0700</bug_when>
    <thetext>Created attachment 433751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777772</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2021-07-18 12:54:26 -0700</bug_when>
    <thetext>I&apos;m against this change. We are only going to depend on more and more portals and libportal does abstract complexity we shouldn&apos;t need to care about such as org.freedesktop.portal.Request objects which are easy to get wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777777</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2021-07-18 13:22:11 -0700</bug_when>
    <thetext>To be clear, I just mean we shouldn&apos;t *avoid* libportal. Not a review of the rest of the changes which appear to fix issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777824</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-19 01:29:51 -0700</bug_when>
    <thetext>I don&apos;t mind either way, we just need to agree on one approach or the other.

Two things that would be nice to have in libportal, support for embedding the mouse cursor in screencast sessions and a way to know which device type was selected by the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777839</commentid>
    <comment_count>6</comment_count>
      <attachid>433751</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-19 02:30:09 -0700</bug_when>
    <thetext>Comment on attachment 433751
Patch

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

There&apos;s too much sync DBus, I think, does that happen in the main thread?

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:97
&gt; +    public:

You don&apos;t need public for a struct

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:65
&gt; +    if (m_sessions.contains(device.persistentId())) {
&gt; +        const auto it = m_sessions.find(device.persistentId());

Instead of constains + find you can do only find and check it != end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777854</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-19 05:54:20 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #6)
&gt; Comment on attachment 433751 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433751&amp;action=review
&gt; 
&gt; There&apos;s too much sync DBus, I think, does that happen in the main thread?
&gt; 

Yes. And this is a synchronous method, no way to avoid sync dbus with the current architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777858</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-19 06:40:48 -0700</bug_when>
    <thetext>(In reply to Patrick Griffis from comment #4)
&gt; To be clear, I just mean we shouldn&apos;t *avoid* libportal. Not a review of the
&gt; rest of the changes which appear to fix issues.

If Phil doesn&apos;t want to use it for this particular portal, we can always bring it back later when we have something else that we want to use it for. I agree that we should use libportal whenever it&apos;s convenient to do so.

(In reply to Philippe Normand from comment #7)
&gt; Yes. And this is a synchronous method, no way to avoid sync dbus with the
&gt; current architecture.

Sync D-Bus on the main thread is awful, but sometimes it&apos;s very hard to avoid. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778144</commentid>
    <comment_count>9</comment_count>
      <attachid>433751</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-20 04:18:15 -0700</bug_when>
    <thetext>Comment on attachment 433751
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:97
&gt;&gt; +    public:
&gt; 
&gt; You don&apos;t need public for a struct

clang disagrees :)

../../Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:67:24: error: &apos;fd&apos; is a private member of &apos;WebCore::GStreamerDisplayCaptureDeviceManager::Session&apos;
            it-&gt;value-&gt;fd, { }, constraints, device.type());
                       ^
../../Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:101:13: note: declared private here
        int fd;
            ^
../../Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:159:47: error: &apos;path&apos; is a private member of &apos;WebCore::GStreamerDisplayCaptureDeviceManager::Session&apos;
        &quot;org.freedesktop.portal.Desktop&quot;, it-&gt;path.ascii().data(), &quot;org.freedesktop.portal.Session&quot;, nullptr, nullptr));
                                              ^
../../Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:102:16: note: declared private here
        String path;
               ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778146</commentid>
    <comment_count>10</comment_count>
      <attachid>433868</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-20 04:26:15 -0700</bug_when>
    <thetext>Created attachment 433868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778395</commentid>
    <comment_count>11</comment_count>
      <attachid>433868</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-21 05:17:03 -0700</bug_when>
    <thetext>Comment on attachment 433868
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:147
&gt; +    fd = g_unix_fd_list_get(fdList.get(), fdOut, nullptr);

Where is this fd closed?

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:156
&gt; +    auto it = m_sessions.take(persistentID);

Take doesn&apos;t return an iterator, this is session. I guess we should close the fd here, or in the Session destructor and it will be closed here too when out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778686</commentid>
    <comment_count>12</comment_count>
      <attachid>434004</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-22 03:56:39 -0700</bug_when>
    <thetext>Created attachment 434004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778694</commentid>
    <comment_count>13</comment_count>
      <attachid>434004</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-22 04:54:49 -0700</bug_when>
    <thetext>Comment on attachment 434004
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:96
&gt; +        WTF_MAKE_FAST_ALLOCATED;

Why did you remove the macro for structs? Can we also make this non copyable? It this is copied we would end up closing the fd twice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778695</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-22 05:26:34 -0700</bug_when>
    <thetext>I messed up the patch, I&apos;ll re-upload one. Sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778697</commentid>
    <comment_count>15</comment_count>
      <attachid>434008</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-22 06:55:09 -0700</bug_when>
    <thetext>Created attachment 434008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779015</commentid>
    <comment_count>16</comment_count>
      <attachid>434008</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-23 02:22:24 -0700</bug_when>
    <thetext>Comment on attachment 434008
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:72
&gt; +    m_proxy = adoptGRef(g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION,
&gt; +        static_cast&lt;GDBusProxyFlags&gt;(G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES), nullptr,
&gt; +        &quot;org.freedesktop.portal.Desktop&quot;, &quot;/org/freedesktop/portal/desktop&quot;, &quot;org.freedesktop.portal.ScreenCast&quot;, nullptr, nullptr));

Sorry that I didn&apos;t notice this in previous reviews but we should handle errors here.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:83
&gt; +    GUniqueOutPtr&lt;GError&gt; error;
&gt; +    auto result = adoptGRef(g_dbus_proxy_call_sync(m_proxy.get(), &quot;CreateSession&quot;, g_variant_new(&quot;(a{sv})&quot;, &amp;options),
&gt; +        G_DBUS_CALL_FLAGS_NONE, s_dbusCallTimeout.millisecondsAs&lt;int&gt;(), nullptr, &amp;error.outPtr()));

This error here isn&apos;t handled either.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:159
&gt; +    auto proxy = adoptGRef(g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION,
&gt; +        static_cast&lt;GDBusProxyFlags&gt;(G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES), nullptr,
&gt; +        &quot;org.freedesktop.portal.Desktop&quot;, session-&gt;path.ascii().data(), &quot;org.freedesktop.portal.Session&quot;, nullptr, nullptr));

And here proxy could null too if g_dbus_proxy_new_for_bus_sync fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779026</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-23 03:51:49 -0700</bug_when>
    <thetext>Committed r280239 (239909@main): &lt;https://commits.webkit.org/239909@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779027</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-23 03:52:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/81011828&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433748</attachid>
            <date>2021-07-18 04:54:27 -0700</date>
            <delta_ts>2021-07-18 10:23:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228056-20210718045426.patch</filename>
            <type>text/plain</type>
            <size>34291</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLmNlNTZhN2MzZGZiODhhODc0ODQyMzkyZTRiMGI3MjA2NWNhYTlj
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9ydGFsIGRl
cGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOiBF
bmFibGUgc2NyZWVuIGNhcHR1cmUgb24gR1N0cmVhbWVyCisgICAgICAgIHBvcnRzLiBUaGUgUElQ
RVdJUkUgaWZkZWYgaXMgcmVkdW5kYW50LgorCiAyMDIxLTA3LTE2ICBBbGV4YW5kZXIgTWlraGF5
bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS11bV1BFXSBTdXBwb3J0IGNv
bG9yLXNjaGVtZXMgQ1NTIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1NjU0MWU0NGNjNjRlMjQ1
NmE0MWFmODMyYmUyZWJmN2NlZTc3My4uM2U3Y2RkZmIzZGJlOGY4MDgwYTRjODU3NDEzN2FiYmMx
MTcyN2Q4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTE4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gUmVtb3Zl
IGxpYnBvcnRhbCBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgwNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgcHVyZS1HREJ1cyBhcHByb2FjaCBhbGxvd3MgdXMgdG8gcmVxdWVz
dCB0aGUgaW5wdXQgZGV2aWNlIChNb25pdG9yIG9yIFdpbmRvdykgZGVwZW5kaW5nCisgICAgICAg
IG9uIHRoZSBDYXB0dXJlRGV2aWNlIHR5cGUgYW5kIG1ha2UgdGhlIG1vdXNlIGN1cnNvciB2aXNp
YmxlIGluIHRoZSBnZW5lcmF0ZWQgdmlkZW8gc3RyZWFtLgorICAgICAgICBBbHNvIHJlcXVlc3Rp
bmcgY2FwdHVyZSBzdXBwb3J0IHdpdGhpbiBjb21wdXRlQ2FwdHVyZURldmljZXMoKSB3YXMgYSBi
YWQgaWRlYSBiZWNhdXNlIHRoaXMKKyAgICAgICAgYmVpbmcgdXNlZCBieSB0aGUgZW51bWVyYXRl
TWVkaWFEZXZpY2VzIEFQSSBjb3VsZCBwb3RlbnRpYWxseSBzcGFtIHRoZSB1c2VyIHdpdGggcGVy
bWlzc2lvbgorICAgICAgICBwb3B1cHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9HU3RyZWFtZXIu
Y21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJl
RGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVy
ZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpj
b21wdXRlQ2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OnN0b3BT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjp3YWl0UmVzcG9uc2VTaWduYWwpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNw
bGF5RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmg6CisKIDIwMjEtMDctMTYgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkgcmV0dXJucyB0aGUgaW5jb3JyZWN0IHJlY3RhbmdsZSBvbiBlbGVtZW50cyB3aG9zZSBwYXJl
bnQgZWxlbWVudCBpcyBzZXQgLXdlYmtpdC1jb2x1bW4tY291bnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
IGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwKaW5kZXggYzQyZWJlYmEwNjdjMTVkN2Y1ZGMwZTkwYWIzZGI0NTJlOTIyYTRlZC4u
NmQzNmEwMWVjNzIzNDc5NjgwNzcxM2IxYWQzODZlMzBhMTYzMDcxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKQEAgLTk0MCw3ICs5NDAsNyBAQCBTY3JlZW5DYXB0dXJlRW5hYmxlZDoK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYktpdDoKLSAg
ICAgICJQTEFURk9STShNQUMpIHx8IFVTRShQSVBFV0lSRSkiOiB0cnVlCisgICAgICAiUExBVEZP
Uk0oTUFDKSB8fCBVU0UoR1NUUkVBTUVSKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAg
ICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
U3RyZWFtZXIuY21ha2UKaW5kZXggZTMyOTcxYTRhZjA0NGY2N2Q2YzdmM2NhOTI0OTViNmIwM2Jl
YzliNS4uNTcxODkzZDU0OTk3ZDc4MTAxNWQxOTk3NWQyMjhlNzIxNTg5MTIxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtNTgsNiArNTgsNyBAQCBpZiAoRU5B
QkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAogICAgICAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJl
ci5jcHAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAogICAgICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5jcHAKQEAgLTE1MiwxMCArMTUzLDYgQEAgaWYgKEVOQUJMRV9WSURFTykKICAgICAg
ICAgICAgICAgICAke0dTVFJFQU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTfQogICAgICAgICAg
ICAgKQogICAgICAgICBlbmRpZiAoKQotCi0gICAgICAgIGlmIChVU0VfUElQRVdJUkUpCi0gICAg
ICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUyBMSUJQT1JUQUw6OkxJQlBPUlRB
TCkKLSAgICAgICAgZW5kaWYgKCkKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXgg
YTIzNTE1M2M3NGZkNGZhOTZiZjE3MDc2YWNjYWNlYzYzZDhlZTU1ZC4uZDBiZjhmOGJlODA0Njkz
MTJiZGM5NjcxNjU1ODFmZDc1NjI2MDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5j
bHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkdTdHJl
YW1lckNvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCwxMiArNjMsNiBAQCBHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpzaW5nbGV0bwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCi1HU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXImIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOwotICAgIHJldHVybiBtYW5hZ2Vy
OwotfQotCiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVE
ZXZpY2VNYW5hZ2VyKCkKIHsKICAgICBpZiAobV9kZXZpY2VNb25pdG9yKQpAQCAtMjAzLDk3ICsx
OTYsNiBAQCB2b2lkIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVy
ZURldmljZXMoKQogICAgIH0KIH0KIAotR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQ
SVBFV0lSRSkKLSAgICBtX3BvcnRhbCA9IGFkb3B0R1JlZih4ZHBfcG9ydGFsX25ldygpKTsKLSNl
bmRpZgotfQotCi1HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAg
ICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIHhkcF9zZXNzaW9uX2Nsb3NlKG1fc2Vzc2lvbi5n
ZXQoKSk7Ci0gICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAgfQotI2VuZGlmCi19Ci0K
LXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVy
ZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQotewotI2lmIFVT
RShQSVBFV0lSRSkKLSAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgeGRw
X3BvcnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uKG1fcG9ydGFsLmdldCgpLCBzdGF0aWNf
Y2FzdDxYZHBPdXRwdXRUeXBlPihYRFBfT1VUUFVUX01PTklUT1IgfCBYRFBfT1VUUFVUX1dJTkRP
VyksIFhEUF9TQ1JFRU5DQVNUX0ZMQUdfTk9ORSwgbnVsbHB0ciwgW10oR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKLSAgICAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvKiBzZXNzaW9uID0geGRwX3Bv
cnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uX2ZpbmlzaChYRFBfUE9SVEFMKHNvdXJjZSks
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uKSB7Ci0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2NyZWVuY2FzdCBzZXNzaW9u
OiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwotICAgICAgICBtYW5hZ2VyLnNldFNl
c3Npb24oc2Vzc2lvbik7Ci0gICAgfSwgdGhpcyk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIGNhbGxiYWNrKCk7Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShQSVBFV0lSRSkK
LXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRTZXNzaW9uKFhk
cFNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKHNlc3Npb24pOwotICAgIG1fc2Vzc2lv
biA9IGFkb3B0R1JlZihzZXNzaW9uKTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCht
X3Nlc3Npb24uZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKCtbXShHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXIqIG1hbmFnZXIsIFhkcFNlc3Npb24qKSB7Ci0gICAgICAgIG1h
bmFnZXItPnNlc3Npb25XYXNDbG9zZWQoKTsKLSAgICB9KSwgdGhpcyk7Ci0gICAgeGRwX3Nlc3Np
b25fc3RhcnQobV9zZXNzaW9uLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBbXShHT2JqZWN0KiBz
b3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewotICAgICAg
ICBhdXRvKiBzZXNzaW9uID0gWERQX1NFU1NJT04oc291cmNlKTsKLSAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwot
ICAgICAgICBpZiAoIXhkcF9zZXNzaW9uX3N0YXJ0X2ZpbmlzaChzZXNzaW9uLCByZXN1bHQsICZl
cnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHN0
YXJ0IHNjcmVlbmNhc3Qgc2Vzc2lvbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICAg
ICBtYW5hZ2VyLm5vdGlmeUNsaWVudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgbWFuYWdlci5zZXNzaW9uU3RhcnRlZCgpOwotICAgIH0sIHRoaXMpOwotfQot
I2VuZGlmCi0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNz
aW9uU3RhcnRlZCgpCi17Ci0gICAgbV9kZXZpY2VzLmNsZWFyKCk7Ci0jaWYgVVNFKFBJUEVXSVJF
KQotICAgIGludCBmZCA9IHhkcF9zZXNzaW9uX29wZW5fcGlwZXdpcmVfcmVtb3RlKG1fc2Vzc2lv
bi5nZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxpYnBvcnRhbCBBUEkgZG9lc24ndCBzZWVt
IHRvIGV4cG9zZSB3aGljaCBYZHBPdXRwdXRUeXBlIHdhcyBzZWxlY3RlZCBieSB0aGUKLSAgICAv
LyB1c2VyLCBzbyBoYXJkY29kZSBTY3JlZW4gaGVyZS4g8J+ktwotICAgIENhcHR1cmVEZXZpY2Ug
Y2FwdHVyZURldmljZShXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihmZCksIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBEaXNw
bGF5IikpOwotICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICBtX2Rldmlj
ZXMuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZSkpOwotI2VuZGlmCi0gICAgbm90aWZ5Q2xp
ZW50KCk7Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpu
b3RpZnlDbGllbnQoKQotewotICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICBtX2NhbGxiYWNr
KCk7Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNz
aW9uV2FzQ2xvc2VkKCkKLXsKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLSNlbmRpZgotICAgIG1fZGV2aWNlcy5jbGVhcigpOwotICAgIGRldmljZUNoYW5nZWQo
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOTUzOTgxYWU4NjJkMDhiNzU3YTQ0ZTVm
MzkwMDAwMzMwZjY1ZjYzMC4uZTU2ODAzMDMwN2IzNWU2MzczODA5NmFmOTQyNWZhNjc5YzU2MzJl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgKQEAgLTI4LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCiAKLSNpZiBVU0Uo
UElQRVdJUkUpCi0jaW5jbHVkZSA8bGlicG9ydGFsL3BvcnRhbC5oPgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIgOiBw
dWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewpAQCAtNzYsMjUgKzcyLDQwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0
b24oKTsKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkg
ZmluYWwgeyByZXR1cm4gbV9kZXZpY2VzOyB9OwogICAgIHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKKworICAgIGVudW0gUGlwZVdpcmVPdXRwdXRUeXBl
IHsKKyAgICAgICAgTW9uaXRvciA9IDEgPDwgMCwKKyAgICAgICAgV2luZG93ID0gMSA8PCAxCisg
ICAgfTsKKworICAgIHZvaWQgc3RvcFNvdXJjZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCk7
CiAKIHByb3RlY3RlZDoKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgdm9pZCBzZXRTZXNzaW9uKFhk
cFNlc3Npb24qKTsKLSNlbmRpZgotICAgIHZvaWQgc2Vzc2lvblN0YXJ0ZWQoKTsKLSAgICB2b2lk
IG5vdGlmeUNsaWVudCgpOwotICAgIHZvaWQgc2Vzc2lvbldhc0Nsb3NlZCgpOworICAgIHZvaWQg
bm90aWZ5UmVzcG9uc2UoKSB7IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2soKTsgfQogCiBwcml2
YXRlOgogICAgIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5H
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKIAotICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4gbV9jYWxsYmFjazsKKyAgICB2b2lkIHdhaXRSZXNwb25zZVNpZ25hbChj
b25zdCBjaGFyKiBvYmplY3RQYXRoKTsKKwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2Rl
dmljZXM7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgIEdSZWZQdHI8WGRwUG9ydGFsPiBtX3BvcnRh
bDsKLSAgICBHUmVmUHRyPFhkcFNlc3Npb24+IG1fc2Vzc2lvbjsKLSNlbmRpZgorCisgICAgc3Ry
dWN0IFNlc3Npb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNlc3Npb24oaW50IGZkLCBTdHJpbmcmJiBwYXRoKQorICAgICAgICAgICAg
OiBmZChmZCkKKyAgICAgICAgICAgICwgcGF0aChXVEZNb3ZlKHBhdGgpKSB7IH0KKworICAgICAg
ICBpbnQgZmQ7CisgICAgICAgIFN0cmluZyBwYXRoOworICAgIH07CisgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uPj4gbV9zZXNzaW9uczsKKworICAgIEdSZWZQdHI8
R0RCdXNQcm94eT4gbV9wcm94eTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1fY3Vy
cmVudFJlc3BvbnNlQ2FsbGJhY2s7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcxOWM2NGE4MDg3MDFkNjE4ODFhMzcwMzJjM2Y4ZWZmZDhiZTA5MGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE5NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQXV0
aG9yOiBUaGliYXVsdCBTYXVuaWVyIDx0c2F1bmllckBpZ2FsaWEuY29tPgorICogQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJH
U3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgiCisjaW5jbHVk
ZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNv
bnN0IFNlY29uZHMgc19kYnVzQ2FsbFRpbWVvdXQgPSAxMF9tczsKKworR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFn
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlcjsK
K30KKworR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpHU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQoreworfQorCitHU3RyZWFtZXJEaXNwbGF5Q2FwdHVy
ZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQor
eworICAgIGZvciAoYXV0byYgc291cmNlSWQgOiBtX3Nlc3Npb25zLmtleXMoKSkKKyAgICAgICAg
c3RvcFNvdXJjZShzb3VyY2VJZCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKQoreworICAgIG1fZGV2aWNlcy5jbGVhcigpOworCisgICAgQ2FwdHVy
ZURldmljZSBzY3JlZW5DYXB0dXJlRGV2aWNlKGVtcHR5U3RyaW5nKCksIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBTY3JlZW4iKSk7CisgICAg
c2NyZWVuQ2FwdHVyZURldmljZS5zZXRFbmFibGVkKHRydWUpOworICAgIG1fZGV2aWNlcy5hcHBl
bmQoV1RGTW92ZShzY3JlZW5DYXB0dXJlRGV2aWNlKSk7CisgICAgQ2FwdHVyZURldmljZSB3aW5k
b3dDYXB0dXJlRGV2aWNlKGVtcHR5U3RyaW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OldpbmRvdywgbWFrZVN0cmluZygiQ2FwdHVyZSBXaW5kb3ciKSk7CisgICAgd2luZG93Q2FwdHVy
ZURldmljZS5zZXRFbmFibGVkKHRydWUpOworICAgIG1fZGV2aWNlcy5hcHBlbmQoV1RGTW92ZSh3
aW5kb3dDYXB0dXJlRGV2aWNlKSk7CisgICAgY2FsbGJhY2soKTsKK30KKworQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNw
bGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChtX3Nlc3Npb25zLmNvbnRhaW5z
KGRldmljZS5wZXJzaXN0ZW50SWQoKSkpIHsKKyAgICAgICAgY29uc3QgYXV0byBpdCA9IG1fc2Vz
c2lvbnMuZmluZChkZXZpY2UucGVyc2lzdGVudElkKCkpOworICAgICAgICByZXR1cm4gR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lz
dGVudElkKCkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgICAgICBpdC0+dmFsdWUtPmZkLCB7IH0s
IGNvbnN0cmFpbnRzLCBkZXZpY2UudHlwZSgpKTsKKyAgICB9CisKKyAgICBtX3Byb3h5ID0gYWRv
cHRHUmVmKGdfZGJ1c19wcm94eV9uZXdfZm9yX2J1c19zeW5jKEdfQlVTX1RZUEVfU0VTU0lPTiwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8R0RCdXNQcm94eUZsYWdzPihHX0RCVVNfUFJPWFlfRkxBR1Nf
RE9fTk9UX0NPTk5FQ1RfU0lHTkFMUyB8IEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfTE9BRF9Q
Uk9QRVJUSUVTKSwgbnVsbHB0ciwKKyAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVz
a3RvcCIsICIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiwgIm9yZy5mcmVlZGVza3Rv
cC5wb3J0YWwuU2NyZWVuQ2FzdCIsIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIGF1dG8gdG9r
ZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7CisgICAg
YXV0byBzZXNzaW9uVG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21V
aW50MzIoKSk7CisgICAgR1ZhcmlhbnRCdWlsZGVyIG9wdGlvbnM7CisgICAgZ192YXJpYW50X2J1
aWxkZXJfaW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgICAgZ192YXJp
YW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3Zhcmlh
bnRfbmV3X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEoKSkpOworICAgIGdfdmFyaWFudF9idWls
ZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAic2Vzc2lvbl9oYW5kbGVfdG9rZW4iLCBnX3Zhcmlh
bnRfbmV3X3N0cmluZyhzZXNzaW9uVG9rZW4uYXNjaWkoKS5kYXRhKCkpKTsKKworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0R1JlZihnX2Ri
dXNfcHJveHlfY2FsbF9zeW5jKG1fcHJveHkuZ2V0KCksICJDcmVhdGVTZXNzaW9uIiwgZ192YXJp
YW50X25ldygiKGF7c3Z9KSIsICZvcHRpb25zKSwKKyAgICAgICAgR19EQlVTX0NBTExfRkxBR1Nf
Tk9ORSwgc19kYnVzQ2FsbFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gb2JqZWN0UGF0aDsK
KyAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihvKSIsICZvYmplY3RQYXRoLm91dFB0
cigpKTsKKyAgICB3YWl0UmVzcG9uc2VTaWduYWwob2JqZWN0UGF0aC5nZXQoKSk7CisKKyAgICBT
dHJpbmcgcmVxdWVzdFBhdGgob2JqZWN0UGF0aC5nZXQoKSk7CisgICAgYXV0byBzZXNzaW9uUGF0
aCA9IHJlcXVlc3RQYXRoLnJlcGxhY2UoIi9yZXF1ZXN0LyIsICIvc2Vzc2lvbi8iKS5yZXBsYWNl
KHRva2VuLCBzZXNzaW9uVG9rZW4pOworCisgICAgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpQaXBlV2lyZU91dHB1dFR5cGUgb3V0cHV0VHlwZTsKKyAgICBzd2l0Y2ggKGRl
dmljZS50eXBlKCkpIHsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
bjoKKyAgICAgICAgb3V0cHV0VHlwZSA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6UGlwZVdpcmVPdXRwdXRUeXBlOjpNb25pdG9yOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKKyAgICAgICAgb3V0cHV0VHlw
ZSA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6UGlwZVdpcmVPdXRwdXRU
eXBlOjpXaW5kb3c7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH07CisKKyAgICB0
b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNU
KTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90
b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CisgICAg
Z192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJ0eXBlcyIsIGdfdmFyaWFu
dF9uZXdfdWludDMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihvdXRwdXRUeXBlKSkpOworICAgIGdf
dmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAibXVsdGlwbGUiLCBnX3Zhcmlh
bnRfbmV3X2Jvb2xlYW4oZmFsc2UpKTsKKworICAgIGF1dG8gcHJvcGVydGllc1Jlc3VsdCA9IGFk
b3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1fcHJveHkuZ2V0KCksICJvcmcuZnJlZWRl
c2t0b3AuREJ1cy5Qcm9wZXJ0aWVzLkdldCIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihzcyki
LCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5DYXN0IiwgInZlcnNpb24iKSwgR19EQlVT
X0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgc19kYnVzQ2FsbFRpbWVvdXQubWlsbGlzZWNvbmRz
QXM8aW50PigpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgaWYgKHByb3BlcnRpZXNSZXN1bHQp
IHsKKyAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcHJvcGVydHk7CisgICAgICAgIGdfdmFyaWFu
dF9nZXQocHJvcGVydGllc1Jlc3VsdC5nZXQoKSwgIih2KSIsICZwcm9wZXJ0eS5vdXRQdHIoKSk7
CisgICAgICAgIGlmIChnX3ZhcmlhbnRfZ2V0X3VpbnQzMihwcm9wZXJ0eS5nZXQoKSkgPj0gMikg
eworICAgICAgICAgICAgLy8gRW5hYmxlIGVtYmVkZGVkIGN1cnNvci4KKyAgICAgICAgICAgIGdf
dmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAiY3Vyc29yX21vZGUiLCBnX3Zh
cmlhbnRfbmV3X3VpbnQzMigyKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBh
ZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhtX3Byb3h5LmdldCgpLCAiU2VsZWN0U291
cmNlcyIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihvYXtzdn0pIiwgc2Vzc2lvblBhdGguYXNj
aWkoKS5kYXRhKCksICZvcHRpb25zKSwgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwgc19kYnVzQ2Fs
bFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkp
KTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTZWxlY3RTb3VyY2Vz
IGVycm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihvKSIsICZvYmplY3RQYXRoLm91
dFB0cigpKTsKKyAgICB3YWl0UmVzcG9uc2VTaWduYWwob2JqZWN0UGF0aC5nZXQoKSk7CisKKyAg
ICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsK
KyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJE
SUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRs
ZV90b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7Cisg
ICAgcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQo
KSwgIlN0YXJ0IiwKKyAgICAgICAgZ192YXJpYW50X25ldygiKG9zYXtzdn0pIiwgc2Vzc2lvblBh
dGguYXNjaWkoKS5kYXRhKCksICIiLCAmb3B0aW9ucyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUs
IHNfZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgJmVycm9y
Lm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiU3Rh
cnQgZXJyb3I6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIobykiLCAmb2JqZWN0UGF0
aC5vdXRQdHIoKSk7CisgICAgd2FpdFJlc3BvbnNlU2lnbmFsKG9iamVjdFBhdGguZ2V0KCkpOwor
CisgICAgR1JlZlB0cjxHVW5peEZETGlzdD4gZmRMaXN0OworICAgIGludCBmZCA9IC0xOworICAg
IGdfdmFyaWFudF9idWlsZGVyX2luaXQoJm9wdGlvbnMsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1Qp
OworICAgIHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF93aXRoX3VuaXhfZmRf
bGlzdF9zeW5jKG1fcHJveHkuZ2V0KCksICJPcGVuUGlwZVdpcmVSZW1vdGUiLAorICAgICAgICBn
X3ZhcmlhbnRfbmV3KCIob2F7c3Z9KSIsIHNlc3Npb25QYXRoLmFzY2lpKCkuZGF0YSgpLCAmb3B0
aW9ucyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIHNfZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vj
b25kc0FzPGludD4oKSwgbnVsbHB0ciwgJmZkTGlzdC5vdXRQdHIoKSwgbnVsbHB0ciwgJmVycm9y
Lm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5h
YmxlIHRvIHJlcXVlc3QgZGlzcGxheSBjYXB0dXJlLiBFcnJvcjogJXMiLCBlcnJvci0+bWVzc2Fn
ZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaW50IGZkT3V0OworICAgIGdf
dmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKGgpIiwgJmZkT3V0KTsKKyAgICBmZCA9IGdfdW5p
eF9mZF9saXN0X2dldChmZExpc3QuZ2V0KCksIGZkT3V0LCBudWxscHRyKTsKKworICAgIGF1dG8g
c2Vzc2lvbiA9IFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXI6OlNlc3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7CisgICAgbV9zZXNzaW9u
cy5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCgpLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICByZXR1
cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZp
Y2UucGVyc2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIGZkLCB7IH0sIGNvbnN0cmFpbnRzLCBk
ZXZpY2UudHlwZSgpKTsKK30KKwordm9pZCBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXI6OnN0b3BTb3VyY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpCit7CisgICAgYXV0
byBpdCA9IG1fc2Vzc2lvbnMudGFrZShwZXJzaXN0ZW50SUQpOworICAgIGF1dG8gcHJveHkgPSBh
ZG9wdEdSZWYoZ19kYnVzX3Byb3h5X25ld19mb3JfYnVzX3N5bmMoR19CVVNfVFlQRV9TRVNTSU9O
LAorICAgICAgICBzdGF0aWNfY2FzdDxHREJ1c1Byb3h5RmxhZ3M+KEdfREJVU19QUk9YWV9GTEFH
U19ET19OT1RfQ09OTkVDVF9TSUdOQUxTIHwgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9MT0FE
X1BST1BFUlRJRVMpLCBudWxscHRyLAorICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5E
ZXNrdG9wIiwgaXQtPnBhdGguYXNjaWkoKS5kYXRhKCksICJvcmcuZnJlZWRlc2t0b3AucG9ydGFs
LlNlc3Npb24iLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdEdS
ZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhwcm94eS5nZXQoKSwgIkNsb3NlIiwgbnVsbHB0ciwg
R19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgc19kYnVzQ2FsbFRpbWVvdXQubWlsbGlz
ZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCBudWxscHRyKSk7Cit9CisKK3ZvaWQgR1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp3YWl0UmVzcG9uc2VTaWduYWwoY29uc3QgY2hh
ciogb2JqZWN0UGF0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50UmVzcG9uc2VD
YWxsYmFjayk7CisgICAgbV9jdXJyZW50UmVzcG9uc2VDYWxsYmFjayA9IFtdIHsgfTsKKyAgICBh
dXRvKiBjb25uZWN0aW9uID0gZ19kYnVzX3Byb3h5X2dldF9jb25uZWN0aW9uKG1fcHJveHkuZ2V0
KCkpOworICAgIGF1dG8gc2lnbmFsSWQgPSBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfc3Vic2Ny
aWJlKGNvbm5lY3Rpb24sICJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiLCAib3JnLmZy
ZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiwKKyAgICAgICAgIlJlc3BvbnNlIiwgb2JqZWN0UGF0
aCwgbnVsbHB0ciwgR19EQlVTX1NJR05BTF9GTEFHU19OT19NQVRDSF9SVUxFLCByZWludGVycHJl
dF9jYXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KCtbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBj
aGFyKiAvKiBzZW5kZXJOYW1lICovLCBjb25zdCBjaGFyKiAvKiBvYmplY3RQYXRoICovLCBjb25z
dCBjaGFyKiAvKiBpbnRlcmZhY2VOYW1lICovLCBjb25zdCBjaGFyKiAvKiBzaWduYWxOYW1lICov
LCBHVmFyaWFudCogLyogcGFyYW1ldGVycyAqLywgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAg
ICAgICAgIGF1dG8mIG1hbmFnZXIgPSAqcmVpbnRlcnByZXRfY2FzdDxHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXIqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBtYW5hZ2VyLm5v
dGlmeVJlc3BvbnNlKCk7CisgICAgICAgIH0pLCB0aGlzLCBudWxscHRyKTsKKworICAgIHdoaWxl
IChtX2N1cnJlbnRSZXNwb25zZUNhbGxiYWNrKQorICAgICAgICBnX21haW5fY29udGV4dF9pdGVy
YXRpb24obnVsbHB0ciwgZmFsc2UpOworCisgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vu
c3Vic2NyaWJlKGNvbm5lY3Rpb24sIHNpZ25hbElkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggZGU1ODhkNmE0MDVkZDQ4ZWVlMGFhNzRiMDJhYjE2ZmE0ZWQzM2FjNS4uMGVkN2Y1YWI0
OTcxZWIzM2FhMGU0MjAyMTgzODIyMzhkY2FlNDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNp
bmNsdWRlICJNZWRpYVNhbXBsZUdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3Rh
cHBzaW5rLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcwLDM0ICs2OSwxNyBAQCBwcml2YXRlOgog
ICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiB2aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmlu
YWwgeyByZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCk7IH0KIH07CiAKLVZpZGVvQ2FwdHVyZUZhY3RvcnkmIGxpYldlYlJUQ1ZpZGVvQ2FwdHVyZVNv
dXJjZUZhY3RvcnkoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OwotICAgIHJldHVybiBmYWN0b3J5LmdldCgp
OwotfQotCiBjbGFzcyBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnkgZmluYWwg
OiBwdWJsaWMgRGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBDYXB0dXJlU291
cmNlT3JFcnJvciBjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNl
JiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbAogICAg
IHsKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgICAgIHJldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJlU291cmNlKGRldmljZS5wZXJzaXN0ZW50SWQoKS5pc29s
YXRlZENvcHkoKSwgeyB9LCBjb25zdHJhaW50cywgZGV2aWNlLnR5cGUoKSk7Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnN0cmFp
bnRzKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSNlbmRpZgorICAgICAgICBhdXRvJiBtYW5hZ2Vy
ID0gR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKTsKKyAg
ICAgICAgcmV0dXJuIG1hbmFnZXIuY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBj
b25zdHJhaW50cyk7CiAgICAgfQogcHJpdmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYg
ZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyByZXR1cm4gR1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKTsgfQogfTsKIAotRGlzcGxheUNh
cHR1cmVGYWN0b3J5JiBsaWJXZWJSVENEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnkoKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZVNvdXJjZUZh
Y3Rvcnk+IGZhY3Rvcnk7Ci0gICAgcmV0dXJuIGZhY3RvcnkuZ2V0KCk7Ci19Ci0KIENhcHR1cmVT
b3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKFN0cmluZyYm
IGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMpCiB7CiAgICAgYXV0byBkZXZpY2UgPSBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nc3RyZWFtZXJEZXZpY2VXaXRoVUlEKGRldmljZUlEKTsK
QEAgLTExNCw5ICs5Niw5IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGRldmljZUlELCBTdHJpCiAgICAgcmV0dXJuIENh
cHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7CiB9CiAKLUNhcHR1cmVTb3VyY2VP
ckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2Uo
U3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFp
bnRzKiBjb25zdHJhaW50cywgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKQor
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQ
aXBld2lyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgaW50IGZkLCBTdHJpbmcmJiBoYXNoU2Fs
dCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgZGV2aWNlVHlwZSkKIHsKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcg
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCB7IH0sIFdURk1v
dmUoaGFzaFNhbHQpLCAicGlwZXdpcmVzcmMiLCBkZXZpY2VUeXBlKSk7CisgICAgYXV0byBzb3Vy
Y2UgPSBhZG9wdFJlZigqbmV3IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRl
dmljZUlEKSwgeyB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgInBpcGV3aXJlc3JjIiwgZGV2aWNlVHlw
ZSwgZmQpKTsKICAgICBpZiAoY29uc3RyYWludHMpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0
ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cykpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQtPmJhZENvbnN0cmFpbnQpOwpAQCAtMTI2LDI1ICsxMDgsMjMg
QEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVh
dGVQaXBld2lyZVNvdXJjZShTdHJpbmcmJgogCiBWaWRlb0NhcHR1cmVGYWN0b3J5JiBHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKQogewotICAgIHJldHVybiBsaWJXZWJSVENW
aWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk+IGZhY3Rvcnk7CisgICAgcmV0dXJuIGZh
Y3RvcnkuZ2V0KCk7CiB9CiAKIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGxpYldlYlJUQ0Rp
c3BsYXlDYXB0dXJlU291cmNlRmFjdG9yeSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxH
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3Rvcnk+IGZhY3Rvcnk7CisgICAgcmV0dXJu
IGZhY3RvcnkuZ2V0KCk7CiB9CiAKLUdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBT
dHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIqIHNvdXJjZUZhY3RvcnksIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSkKK0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIqIHNvdXJjZUZhY3RvcnksIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSwgaW50IGZkKQogICAgIDogUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShuYW1lKSwgV1RGTW92ZShkZXZpY2VJRCksIFdURk1v
dmUoaGFzaFNhbHQpKQogICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVv
Q2FwdHVyZXI+KHNvdXJjZUZhY3RvcnksIGRldmljZVR5cGUpKQogICAgICwgbV9kZXZpY2VUeXBl
KGRldmljZVR5cGUpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKLQotICAgIGlm
IChnX3N0cl9lcXVhbChzb3VyY2VGYWN0b3J5LCAicGlwZXdpcmVzcmMiKSkgewotICAgICAgICBp
ZiAoYXV0byBmZCA9IHBhcnNlSW50ZWdlcjxpbnQ+KHBlcnNpc3RlbnRJRCgpKSkKLSAgICAgICAg
ICAgIG1fY2FwdHVyZXItPnNldFBpcGV3aXJlRkQoKmZkKTsKLSAgICB9CisgICAgbV9jYXB0dXJl
ci0+c2V0UGlwZXdpcmVGRChmZCk7CiAgICAgbV9jYXB0dXJlci0+YWRkT2JzZXJ2ZXIoKnRoaXMp
OwogfQogCkBAIC0yMjQsNiArMjA0LDExIEBAIHZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7CiAgICAgR1NUX0lORk8oIlJlc2V0IGhlaWdodCBh
bmQgd2lkdGggYWZ0ZXIgc3RvcHBpbmcgc291cmNlIik7CiAgICAgc2V0U2l6ZSh7IDAsIDAgfSk7
CisKKyAgICBpZiAoYXV0byBmZCA9IG1fY2FwdHVyZXItPnBpcGV3aXJlRkQoKSkgeworICAgICAg
ICBhdXRvJiBtYW5hZ2VyID0gR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKTsKKyAgICAgICAgbWFuYWdlci5zdG9wU291cmNlKHBlcnNpc3RlbnRJRCgpKTsK
KyAgICB9CiB9CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA5YmUzOWRlYTNlNjA1NjBj
ZTRlMDYwNDdhNDU4NGQ2MzU3ZTY2MjczLi5hYThhOTJlMWU3NWY4ODE2Y2FlM2I3MzIzMjBjMTBl
NGEwNTJhNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZSwgR1N0cmVhbWVyQ2FwdHVyZXI6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBo
YXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBDYXB0dXJlU291
cmNlT3JFcnJvciBjcmVhdGVQaXBld2lyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5n
JiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqLCBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlKTsKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUGlwZXdpcmVT
b3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIGludCBmZCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBWaWRlb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5KCk7CiAKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc291cmNlQ2Fwc0NoYW5nZWQoY29uc3Qg
R3N0Q2FwcyopIGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2Fs
dCwgY29uc3QgZ2NoYXIqIHNvdXJjZV9mYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
KTsKKyAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciogc291cmNlX2ZhY3Rv
cnksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGludCBmZCk7CiAgICAgR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0
KTsKICAgICB2aXJ0dWFsIH5HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoKTsKICAgICB2b2lk
IHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZXIuY3BwCmluZGV4IGQxYTgwYzI0OWI3ZDU1MDVmYjhjYzI3MWZmZjJl
ZTg1YWZlYTQ1Y2QuLmFmNjU5ZTg1OTE1NmM1OWNiMWE2OWVhYzQ0ODg0NDMzYTk2MjA2MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKQEAgLTc1LDEx
ICs3NSw2IEBAIEdzdFZpZGVvSW5mbyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpnZXRCZXN0Rm9y
bWF0KCkKICAgICByZXR1cm4gaW5mbzsKIH0KIAotdm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVy
OjpzZXRQaXBld2lyZUZEKGludCBmZCkKLXsKLSAgICBtX2ZkID0gZmQ7Ci19Ci0KIGJvb2wgR1N0
cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAg
ICAgaWYgKG1fZmQuaGFzX3ZhbHVlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlci5oCmluZGV4IDcwZDM2NTJkY2I1YmM1ZTNiMGU2MzVkMWNmYTIyYzdkY2UxMWY4
ZTAuLmUwOTk3OWQyY2M3ZDJiM2I0YWVjNWZmODc2ZGEwYjRiZjYyYzYyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaApAQCAtNDMsNyArNDMsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKICAgICBHc3RWaWRlb0luZm8gZ2V0
QmVzdEZvcm1hdCgpOwogCi0gICAgdm9pZCBzZXRQaXBld2lyZUZEKGludCk7CisgICAgdm9pZCBz
ZXRQaXBld2lyZUZEKGludCBmZCkgeyBtX2ZkID0gZmQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gcGlwZXdpcmVGRCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQ7IH0KKwogcHJpdmF0ZToKICAgICBz
dGQ6Om9wdGlvbmFsPGludD4gbV9mZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmlu
ZExJQlBPUlRBTC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kTElCUE9SVEFMLmNtYWtlCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDgwZWJiYjhlMTQ1ZjgxNWM2MWI0MzFlM2UzYmYw
ZDQwZGFjNmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9jbWFrZS9GaW5kTElCUE9SVEFMLmNtYWtlCisrKyAvZGV2L251bGwKQEAgLTEsMTAx
ICswLDAgQEAKLSMgLSBUcnkgdG8gZmluZCBsaWJwb3J0YWwKLSMgT25jZSBkb25lLCB0aGlzIHdp
bGwgZGVmaW5lCi0jCi0jICBMSUJQT1JUQUxfRk9VTkQgLSBzeXN0ZW0gaGFzIGxpYnBvcnRhbAot
IyAgTElCUE9SVEFMX0lOQ0xVREVfRElSUyAtIHRoZSBsaWJwb3J0YWwgaW5jbHVkZSBkaXJlY3Rv
cmllcwotIyAgTElCUE9SVEFMX0xJQlJBUklFUyAtIGxpbmsgdGhlc2UgdG8gdXNlIGxpYnBvcnRh
bAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMKLSMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBJVFMKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7Ci0jIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLAotIyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgotIyBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
Ci0jIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jWz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Wy5yc3Q6Ci1GaW5kTElCUE9SVEFMCi0tLS0tLS0tLS0tLS0tCi0KLUZpbmQgbGli
cG9ydGFsIGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KLQotSW1wb3J0ZWQgVGFyZ2V0cwotXl5eXl5e
Xl5eXl5eXl5eXgotCi1gYExJQlBPUlRBTDo6TElCUE9SVEFMYGAKLSAgVGhlIExJQlBPUlRBTCBs
aWJyYXJ5LCBpZiBmb3VuZC4KLQotUmVzdWx0IFZhcmlhYmxlcwotXl5eXl5eXl5eXl5eXl5eXgot
Ci1UaGlzIHdpbGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGluIHlvdXIgcHJvamVj
dDoKLQotYGBMSUJQT1JUQUxfRk9VTkRgYAotICB0cnVlIGlmICh0aGUgcmVxdWVzdGVkIHZlcnNp
b24gb2YpIExJQlBPUlRBTCBpcyBhdmFpbGFibGUuCi1gYExJQlBPUlRBTF9WRVJTSU9OYGAKLSAg
dGhlIHZlcnNpb24gb2YgTElCUE9SVEFMLgotYGBMSUJQT1JUQUxfTElCUkFSSUVTYGAKLSAgdGhl
IGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgdG8gdXNlIExJQlBPUlRBTC4KLWBgTElCUE9SVEFM
X0lOQ0xVREVfRElSU2BgCi0gIHdoZXJlIHRvIGZpbmQgdGhlIExJQlBPUlRBTCBoZWFkZXJzLgot
YGBMSUJQT1JUQUxfQ09NUElMRV9PUFRJT05TYGAKLSAgdGhpcyBzaG91bGQgYmUgcGFzc2VkIHRv
IHRhcmdldF9jb21waWxlX29wdGlvbnMoKSwgaWYgdGhlCi0gIHRhcmdldCBpcyBub3QgdXNlZCBm
b3IgbGlua2luZwotCi0jXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XQotCi1maW5kX3BhY2thZ2UoUGtnQ29uZmln
KQotcGtnX2NoZWNrX21vZHVsZXMoUENfTElCUE9SVEFMIFFVSUVUIGxpYnBvcnRhbCkKLXNldChM
SUJQT1JUQUxfQ09NUElMRV9PUFRJT05TICR7UENfTElCUE9SVEFMX0NGTEFHU19PVEhFUn0pCi1z
ZXQoTElCUE9SVEFMX1ZFUlNJT04gJHtQQ19MSUJQT1JUQUxfVkVSU0lPTn0pCi0KLWZpbmRfcGF0
aChMSUJQT1JUQUxfSU5DTFVERV9ESVIKLSAgICBOQU1FUyBwb3J0YWwuaAotICAgIEhJTlRTICR7
UENfTElCUE9SVEFMX0lOQ0xVREVESVJ9Ci0gICAgICAgICAgJHtQQ19MSUJQT1JUQUxfSU5DTFVE
RV9ESVJTfQotICAgIFBBVEhfU1VGRklYRVMgbGlicG9ydGFsCi0pCi0KLWZpbmRfbGlicmFyeShM
SUJQT1JUQUxfTElCUkFSWQotICAgIE5BTUVTICR7TElCUE9SVEFMX05BTUVTfSBwb3J0YWwKLSAg
ICBISU5UUyAke1BDX0xJQlBPUlRBTF9MSUJESVJ9Ci0gICAgICAgICAgJHtQQ19MSUJQT1JUQUxf
TElCUkFSWV9ESVJTfQotKQotCi1pbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdz
KQotZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKExJQlBPUlRBTAotICAgIEZPVU5E
X1ZBUiBMSUJQT1JUQUxfRk9VTkQKLSAgICBSRVFVSVJFRF9WQVJTIExJQlBPUlRBTF9JTkNMVURF
X0RJUiBMSUJQT1JUQUxfTElCUkFSWQotICAgIFZFUlNJT05fVkFSIExJQlBPUlRBTF9WRVJTSU9O
Ci0pCi0KLWlmIChMSUJQT1JUQUxfTElCUkFSWSBBTkQgTk9UIFRBUkdFVCBMSUJQT1JUQUw6OkxJ
QlBPUlRBTCkKLSAgICBhZGRfbGlicmFyeShMSUJQT1JUQUw6OkxJQlBPUlRBTCBVTktOT1dOIElN
UE9SVEVEIEdMT0JBTCkKLSAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoTElCUE9SVEFMOjpMSUJQ
T1JUQUwgUFJPUEVSVElFUwotICAgICAgICBJTVBPUlRFRF9MT0NBVElPTiAiJHtMSUJQT1JUQUxf
TElCUkFSWX0iCi0gICAgICAgIElOVEVSRkFDRV9DT01QSUxFX09QVElPTlMgIiR7TElCUE9SVEFM
X0NPTVBJTEVfT1BUSU9OU30iCi0gICAgICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVT
ICIke0xJQlBPUlRBTF9JTkNMVURFX0RJUn0iCi0gICAgKQotZW5kaWYgKCkKLQotbWFya19hc19h
ZHZhbmNlZChMSUJQT1JUQUxfSU5DTFVERV9ESVIgTElCUE9SVEFMX0xJQlJBUlkpCi0KLWlmIChM
SUJQT1JUQUxfRk9VTkQpCi0gICAgc2V0KExJQlBPUlRBTF9MSUJSQVJJRVMgJHtMSUJQT1JUQUxf
TElCUkFSWX0pCi0gICAgc2V0KExJQlBPUlRBTF9JTkNMVURFX0RJUlMgJHtMSUJQT1JUQUxfSU5D
TFVERV9ESVJ9KQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJD
aGVja3MuY21ha2UgYi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCmluZGV4IGFm
OTY3NGIxNDBiZmNjMTc3Y2VhMTBjMjZmNzgyOWFmZjMxMDAwOWUuLjc3ZTk1ODQ1ZTk5MTNhNTk3
OGRhZDEwY2ZjNDMwMDkzYjQzYzdhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9HU3RyZWFt
ZXJDaGVja3MuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQpA
QCAtNTcsMTIgKzU3LDMgQEAgaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0gQU5EIEVOQUJMRV9XRUJf
UlRDKQogZWxzZSAoKQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9MSUJXRUJSVEMg
RkFMU0UpCiBlbmRpZiAoKQotCi1pZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKLSAgICBmaW5kX3Bh
Y2thZ2UoTElCUE9SVEFMKQotICAgIGlmIChMSUJQT1JUQUxfRk9VTkQpCi0gICAgICAgIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9QSVBFV0lSRSBUUlVFKQotICAgIGVsc2UgKCkKLSAgICAg
ICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1BJUEVXSVJFIEZBTFNFKQotICAgIGVuZGlm
ICgpCi1lbmRpZiAoKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGY1
NmE5NzAyN2E2YjQ0OWQwODBmYTM5NDhhMGM5M2ZlNjM5NDJiNGIuLmIwMjUxYTlmOTUwZGJhN2Ji
YjhiYzdlMmFlZWU2ZmZiZTg4OGI5NjIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNy0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMaWJdIFJlbW92ZSBsaWJwb3J0YWwgZGVw
ZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZTogUmVtb3ZlZC4KKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlOgorCiAyMDIxLTA3LTE2ICBBbGV4YW5k
ZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS11bV1BFXSBT
dXBwb3J0IGNvbG9yLXNjaGVtZXMgQ1NTIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433751</attachid>
            <date>2021-07-18 10:23:46 -0700</date>
            <delta_ts>2021-07-20 04:26:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228056-20210718102344.patch</filename>
            <type>text/plain</type>
            <size>33899</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLmNlNTZhN2MzZGZiODhhODc0ODQyMzkyZTRiMGI3MjA2NWNhYTlj
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9ydGFsIGRl
cGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOiBF
bmFibGUgc2NyZWVuIGNhcHR1cmUgb24gR1N0cmVhbWVyCisgICAgICAgIHBvcnRzLiBUaGUgUElQ
RVdJUkUgaWZkZWYgaXMgcmVkdW5kYW50LgorCiAyMDIxLTA3LTE2ICBBbGV4YW5kZXIgTWlraGF5
bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS11bV1BFXSBTdXBwb3J0IGNv
bG9yLXNjaGVtZXMgQ1NTIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1NjU0MWU0NGNjNjRlMjQ1
NmE0MWFmODMyYmUyZWJmN2NlZTc3My4uM2U3Y2RkZmIzZGJlOGY4MDgwYTRjODU3NDEzN2FiYmMx
MTcyN2Q4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTE4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gUmVtb3Zl
IGxpYnBvcnRhbCBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgwNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgcHVyZS1HREJ1cyBhcHByb2FjaCBhbGxvd3MgdXMgdG8gcmVxdWVz
dCB0aGUgaW5wdXQgZGV2aWNlIChNb25pdG9yIG9yIFdpbmRvdykgZGVwZW5kaW5nCisgICAgICAg
IG9uIHRoZSBDYXB0dXJlRGV2aWNlIHR5cGUgYW5kIG1ha2UgdGhlIG1vdXNlIGN1cnNvciB2aXNp
YmxlIGluIHRoZSBnZW5lcmF0ZWQgdmlkZW8gc3RyZWFtLgorICAgICAgICBBbHNvIHJlcXVlc3Rp
bmcgY2FwdHVyZSBzdXBwb3J0IHdpdGhpbiBjb21wdXRlQ2FwdHVyZURldmljZXMoKSB3YXMgYSBi
YWQgaWRlYSBiZWNhdXNlIHRoaXMKKyAgICAgICAgYmVpbmcgdXNlZCBieSB0aGUgZW51bWVyYXRl
TWVkaWFEZXZpY2VzIEFQSSBjb3VsZCBwb3RlbnRpYWxseSBzcGFtIHRoZSB1c2VyIHdpdGggcGVy
bWlzc2lvbgorICAgICAgICBwb3B1cHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9HU3RyZWFtZXIu
Y21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJl
RGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVy
ZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpj
b21wdXRlQ2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OnN0b3BT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjp3YWl0UmVzcG9uc2VTaWduYWwpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNw
bGF5RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmg6CisKIDIwMjEtMDctMTYgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkgcmV0dXJucyB0aGUgaW5jb3JyZWN0IHJlY3RhbmdsZSBvbiBlbGVtZW50cyB3aG9zZSBwYXJl
bnQgZWxlbWVudCBpcyBzZXQgLXdlYmtpdC1jb2x1bW4tY291bnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
IGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwKaW5kZXggYzQyZWJlYmEwNjdjMTVkN2Y1ZGMwZTkwYWIzZGI0NTJlOTIyYTRlZC4u
NmQzNmEwMWVjNzIzNDc5NjgwNzcxM2IxYWQzODZlMzBhMTYzMDcxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKQEAgLTk0MCw3ICs5NDAsNyBAQCBTY3JlZW5DYXB0dXJlRW5hYmxlZDoK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYktpdDoKLSAg
ICAgICJQTEFURk9STShNQUMpIHx8IFVTRShQSVBFV0lSRSkiOiB0cnVlCisgICAgICAiUExBVEZP
Uk0oTUFDKSB8fCBVU0UoR1NUUkVBTUVSKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAg
ICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
U3RyZWFtZXIuY21ha2UKaW5kZXggZTMyOTcxYTRhZjA0NGY2N2Q2YzdmM2NhOTI0OTViNmIwM2Jl
YzliNS4uNTcxODkzZDU0OTk3ZDc4MTAxNWQxOTk3NWQyMjhlNzIxNTg5MTIxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtNTgsNiArNTgsNyBAQCBpZiAoRU5B
QkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAogICAgICAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJl
ci5jcHAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAogICAgICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5jcHAKQEAgLTE1MiwxMCArMTUzLDYgQEAgaWYgKEVOQUJMRV9WSURFTykKICAgICAg
ICAgICAgICAgICAke0dTVFJFQU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTfQogICAgICAgICAg
ICAgKQogICAgICAgICBlbmRpZiAoKQotCi0gICAgICAgIGlmIChVU0VfUElQRVdJUkUpCi0gICAg
ICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUyBMSUJQT1JUQUw6OkxJQlBPUlRB
TCkKLSAgICAgICAgZW5kaWYgKCkKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXgg
YTIzNTE1M2M3NGZkNGZhOTZiZjE3MDc2YWNjYWNlYzYzZDhlZTU1ZC4uZDBiZjhmOGJlODA0Njkz
MTJiZGM5NjcxNjU1ODFmZDc1NjI2MDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5j
bHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkdTdHJl
YW1lckNvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCwxMiArNjMsNiBAQCBHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpzaW5nbGV0bwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCi1HU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXImIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOwotICAgIHJldHVybiBtYW5hZ2Vy
OwotfQotCiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVE
ZXZpY2VNYW5hZ2VyKCkKIHsKICAgICBpZiAobV9kZXZpY2VNb25pdG9yKQpAQCAtMjAzLDk3ICsx
OTYsNiBAQCB2b2lkIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVy
ZURldmljZXMoKQogICAgIH0KIH0KIAotR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQ
SVBFV0lSRSkKLSAgICBtX3BvcnRhbCA9IGFkb3B0R1JlZih4ZHBfcG9ydGFsX25ldygpKTsKLSNl
bmRpZgotfQotCi1HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAg
ICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIHhkcF9zZXNzaW9uX2Nsb3NlKG1fc2Vzc2lvbi5n
ZXQoKSk7Ci0gICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAgfQotI2VuZGlmCi19Ci0K
LXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVy
ZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQotewotI2lmIFVT
RShQSVBFV0lSRSkKLSAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgeGRw
X3BvcnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uKG1fcG9ydGFsLmdldCgpLCBzdGF0aWNf
Y2FzdDxYZHBPdXRwdXRUeXBlPihYRFBfT1VUUFVUX01PTklUT1IgfCBYRFBfT1VUUFVUX1dJTkRP
VyksIFhEUF9TQ1JFRU5DQVNUX0ZMQUdfTk9ORSwgbnVsbHB0ciwgW10oR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKLSAgICAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvKiBzZXNzaW9uID0geGRwX3Bv
cnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uX2ZpbmlzaChYRFBfUE9SVEFMKHNvdXJjZSks
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uKSB7Ci0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2NyZWVuY2FzdCBzZXNzaW9u
OiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwotICAgICAgICBtYW5hZ2VyLnNldFNl
c3Npb24oc2Vzc2lvbik7Ci0gICAgfSwgdGhpcyk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIGNhbGxiYWNrKCk7Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShQSVBFV0lSRSkK
LXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRTZXNzaW9uKFhk
cFNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKHNlc3Npb24pOwotICAgIG1fc2Vzc2lv
biA9IGFkb3B0R1JlZihzZXNzaW9uKTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCht
X3Nlc3Npb24uZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKCtbXShHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXIqIG1hbmFnZXIsIFhkcFNlc3Npb24qKSB7Ci0gICAgICAgIG1h
bmFnZXItPnNlc3Npb25XYXNDbG9zZWQoKTsKLSAgICB9KSwgdGhpcyk7Ci0gICAgeGRwX3Nlc3Np
b25fc3RhcnQobV9zZXNzaW9uLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBbXShHT2JqZWN0KiBz
b3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewotICAgICAg
ICBhdXRvKiBzZXNzaW9uID0gWERQX1NFU1NJT04oc291cmNlKTsKLSAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwot
ICAgICAgICBpZiAoIXhkcF9zZXNzaW9uX3N0YXJ0X2ZpbmlzaChzZXNzaW9uLCByZXN1bHQsICZl
cnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHN0
YXJ0IHNjcmVlbmNhc3Qgc2Vzc2lvbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICAg
ICBtYW5hZ2VyLm5vdGlmeUNsaWVudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgbWFuYWdlci5zZXNzaW9uU3RhcnRlZCgpOwotICAgIH0sIHRoaXMpOwotfQot
I2VuZGlmCi0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNz
aW9uU3RhcnRlZCgpCi17Ci0gICAgbV9kZXZpY2VzLmNsZWFyKCk7Ci0jaWYgVVNFKFBJUEVXSVJF
KQotICAgIGludCBmZCA9IHhkcF9zZXNzaW9uX29wZW5fcGlwZXdpcmVfcmVtb3RlKG1fc2Vzc2lv
bi5nZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxpYnBvcnRhbCBBUEkgZG9lc24ndCBzZWVt
IHRvIGV4cG9zZSB3aGljaCBYZHBPdXRwdXRUeXBlIHdhcyBzZWxlY3RlZCBieSB0aGUKLSAgICAv
LyB1c2VyLCBzbyBoYXJkY29kZSBTY3JlZW4gaGVyZS4g8J+ktwotICAgIENhcHR1cmVEZXZpY2Ug
Y2FwdHVyZURldmljZShXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihmZCksIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBEaXNw
bGF5IikpOwotICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICBtX2Rldmlj
ZXMuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZSkpOwotI2VuZGlmCi0gICAgbm90aWZ5Q2xp
ZW50KCk7Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpu
b3RpZnlDbGllbnQoKQotewotICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICBtX2NhbGxiYWNr
KCk7Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNz
aW9uV2FzQ2xvc2VkKCkKLXsKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLSNlbmRpZgotICAgIG1fZGV2aWNlcy5jbGVhcigpOwotICAgIGRldmljZUNoYW5nZWQo
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOTUzOTgxYWU4NjJkMDhiNzU3YTQ0ZTVm
MzkwMDAwMzMwZjY1ZjYzMC4uZTU2ODAzMDMwN2IzNWU2MzczODA5NmFmOTQyNWZhNjc5YzU2MzJl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgKQEAgLTI4LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCiAKLSNpZiBVU0Uo
UElQRVdJUkUpCi0jaW5jbHVkZSA8bGlicG9ydGFsL3BvcnRhbC5oPgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIgOiBw
dWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewpAQCAtNzYsMjUgKzcyLDQwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0
b24oKTsKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkg
ZmluYWwgeyByZXR1cm4gbV9kZXZpY2VzOyB9OwogICAgIHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKKworICAgIGVudW0gUGlwZVdpcmVPdXRwdXRUeXBl
IHsKKyAgICAgICAgTW9uaXRvciA9IDEgPDwgMCwKKyAgICAgICAgV2luZG93ID0gMSA8PCAxCisg
ICAgfTsKKworICAgIHZvaWQgc3RvcFNvdXJjZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCk7
CiAKIHByb3RlY3RlZDoKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgdm9pZCBzZXRTZXNzaW9uKFhk
cFNlc3Npb24qKTsKLSNlbmRpZgotICAgIHZvaWQgc2Vzc2lvblN0YXJ0ZWQoKTsKLSAgICB2b2lk
IG5vdGlmeUNsaWVudCgpOwotICAgIHZvaWQgc2Vzc2lvbldhc0Nsb3NlZCgpOworICAgIHZvaWQg
bm90aWZ5UmVzcG9uc2UoKSB7IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2soKTsgfQogCiBwcml2
YXRlOgogICAgIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5H
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKIAotICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4gbV9jYWxsYmFjazsKKyAgICB2b2lkIHdhaXRSZXNwb25zZVNpZ25hbChj
b25zdCBjaGFyKiBvYmplY3RQYXRoKTsKKwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2Rl
dmljZXM7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgIEdSZWZQdHI8WGRwUG9ydGFsPiBtX3BvcnRh
bDsKLSAgICBHUmVmUHRyPFhkcFNlc3Npb24+IG1fc2Vzc2lvbjsKLSNlbmRpZgorCisgICAgc3Ry
dWN0IFNlc3Npb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNlc3Npb24oaW50IGZkLCBTdHJpbmcmJiBwYXRoKQorICAgICAgICAgICAg
OiBmZChmZCkKKyAgICAgICAgICAgICwgcGF0aChXVEZNb3ZlKHBhdGgpKSB7IH0KKworICAgICAg
ICBpbnQgZmQ7CisgICAgICAgIFN0cmluZyBwYXRoOworICAgIH07CisgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uPj4gbV9zZXNzaW9uczsKKworICAgIEdSZWZQdHI8
R0RCdXNQcm94eT4gbV9wcm94eTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1fY3Vy
cmVudFJlc3BvbnNlQ2FsbGJhY2s7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhM2Q0MzVhZGQyZjM0NWJmYTBjOWQ4YmU3NTQwMzUwNTBhZDBlMGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQXV0
aG9yOiBUaGliYXVsdCBTYXVuaWVyIDx0c2F1bmllckBpZ2FsaWEuY29tPgorICogQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJH
U3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29t
bW9uLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgiCisjaW5jbHVk
ZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgU2Vjb25kcyBzX2RidXNDYWxsVGltZW91dCA9IDEw
X21zOworCitHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXImIEdTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2Vy
OworICAgIHJldHVybiBtYW5hZ2VyOworfQorCitHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmlj
ZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpCit7Cit9CisK
K0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlcigpCit7CisgICAgZm9yIChhdXRvJiBzb3VyY2VJZCA6IG1fc2Vz
c2lvbnMua2V5cygpKQorICAgICAgICBzdG9wU291cmNlKHNvdXJjZUlkKTsKK30KKwordm9pZCBH
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJlRGV2aWNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgbV9kZXZpY2Vz
LmNsZWFyKCk7CisKKyAgICBDYXB0dXJlRGV2aWNlIHNjcmVlbkNhcHR1cmVEZXZpY2UoV1RGOjpj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBTY3JlZW4iKSk7CisgICAgc2NyZWVuQ2FwdHVyZURl
dmljZS5zZXRFbmFibGVkKHRydWUpOworICAgIG1fZGV2aWNlcy5hcHBlbmQoV1RGTW92ZShzY3Jl
ZW5DYXB0dXJlRGV2aWNlKSk7CisgICAgY2FsbGJhY2soKTsKK30KKworQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5
Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29u
c3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChtX3Nlc3Npb25zLmNvbnRhaW5zKGRl
dmljZS5wZXJzaXN0ZW50SWQoKSkpIHsKKyAgICAgICAgY29uc3QgYXV0byBpdCA9IG1fc2Vzc2lv
bnMuZmluZChkZXZpY2UucGVyc2lzdGVudElkKCkpOworICAgICAgICByZXR1cm4gR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lzdGVu
dElkKCkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgICAgICBpdC0+dmFsdWUtPmZkLCB7IH0sIGNv
bnN0cmFpbnRzLCBkZXZpY2UudHlwZSgpKTsKKyAgICB9CisKKyAgICBtX3Byb3h5ID0gYWRvcHRH
UmVmKGdfZGJ1c19wcm94eV9uZXdfZm9yX2J1c19zeW5jKEdfQlVTX1RZUEVfU0VTU0lPTiwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8R0RCdXNQcm94eUZsYWdzPihHX0RCVVNfUFJPWFlfRkxBR1NfRE9f
Tk9UX0NPTk5FQ1RfU0lHTkFMUyB8IEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfTE9BRF9QUk9Q
RVJUSUVTKSwgbnVsbHB0ciwKKyAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3Rv
cCIsICIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiwgIm9yZy5mcmVlZGVza3RvcC5w
b3J0YWwuU2NyZWVuQ2FzdCIsIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIGF1dG8gdG9rZW4g
PSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7CisgICAgYXV0
byBzZXNzaW9uVG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50
MzIoKSk7CisgICAgR1ZhcmlhbnRCdWlsZGVyIG9wdGlvbnM7CisgICAgZ192YXJpYW50X2J1aWxk
ZXJfaW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgICAgZ192YXJpYW50
X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRf
bmV3X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEoKSkpOworICAgIGdfdmFyaWFudF9idWlsZGVy
X2FkZCgmb3B0aW9ucywgIntzdn0iLCAic2Vzc2lvbl9oYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRf
bmV3X3N0cmluZyhzZXNzaW9uVG9rZW4uYXNjaWkoKS5kYXRhKCkpKTsKKworICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNf
cHJveHlfY2FsbF9zeW5jKG1fcHJveHkuZ2V0KCksICJDcmVhdGVTZXNzaW9uIiwgZ192YXJpYW50
X25ldygiKGF7c3Z9KSIsICZvcHRpb25zKSwKKyAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9O
RSwgc19kYnVzQ2FsbFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gb2JqZWN0UGF0aDsKKyAg
ICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihvKSIsICZvYmplY3RQYXRoLm91dFB0cigp
KTsKKyAgICB3YWl0UmVzcG9uc2VTaWduYWwob2JqZWN0UGF0aC5nZXQoKSk7CisKKyAgICBTdHJp
bmcgcmVxdWVzdFBhdGgob2JqZWN0UGF0aC5nZXQoKSk7CisgICAgYXV0byBzZXNzaW9uUGF0aCA9
IHJlcXVlc3RQYXRoLnJlcGxhY2UoIi9yZXF1ZXN0LyIsICIvc2Vzc2lvbi8iKS5yZXBsYWNlKHRv
a2VuLCBzZXNzaW9uVG9rZW4pOworCisgICAgLy8gRklYTUU6IE1heWJlIGNoZWNrIHRoaXMgZGVw
ZW5kaW5nIG9uIGRldmljZS50eXBlKCkuCisgICAgYXV0byBvdXRwdXRUeXBlID0gR1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpQaXBlV2lyZU91dHB1dFR5cGU6Ok1vbml0b3Ig
fCBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlw
ZTo6V2luZG93OworCisgICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtS
YW5kb21VaW50MzIoKSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywgR19W
QVJJQU5UX1RZUEVfVkFSRElDVCk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25z
LCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5hc2Np
aSgpLmRhdGEoKSkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0i
LCAidHlwZXMiLCBnX3ZhcmlhbnRfbmV3X3VpbnQzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3V0
cHV0VHlwZSkpKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9Iiwg
Im11bHRpcGxlIiwgZ192YXJpYW50X25ld19ib29sZWFuKGZhbHNlKSk7CisKKyAgICBhdXRvIHBy
b3BlcnRpZXNSZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhtX3Byb3h5
LmdldCgpLCAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcy5HZXQiLAorICAgICAgICBn
X3ZhcmlhbnRfbmV3KCIoc3MpIiwgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2FzdCIs
ICJ2ZXJzaW9uIiksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAgICAgIHNfZGJ1c0NhbGxU
aW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGlm
IChwcm9wZXJ0aWVzUmVzdWx0KSB7CisgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHByb3BlcnR5
OworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHByb3BlcnRpZXNSZXN1bHQuZ2V0KCksICIodikiLCAm
cHJvcGVydHkub3V0UHRyKCkpOworICAgICAgICBpZiAoZ192YXJpYW50X2dldF91aW50MzIocHJv
cGVydHkuZ2V0KCkpID49IDIpIHsKKyAgICAgICAgICAgIC8vIEVuYWJsZSBlbWJlZGRlZCBjdXJz
b3IuIEZJWE1FOiBTaG91bGQgYmUgY2hlY2tlZCBpbiB0aGUgY29uc3RyYWludHMuCisgICAgICAg
ICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImN1cnNvcl9tb2Rl
IiwgZ192YXJpYW50X25ld191aW50MzIoMikpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVz
dWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQoKSwgIlNl
bGVjdFNvdXJjZXMiLAorICAgICAgICBnX3ZhcmlhbnRfbmV3KCIob2F7c3Z9KSIsIHNlc3Npb25Q
YXRoLmFzY2lpKCkuZGF0YSgpLCAmb3B0aW9ucyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIHNf
ZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgJmVycm9yLm91
dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiU2VsZWN0
U291cmNlcyBlcnJvcjogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIobykiLCAmb2JqZWN0
UGF0aC5vdXRQdHIoKSk7CisgICAgd2FpdFJlc3BvbnNlU2lnbmFsKG9iamVjdFBhdGguZ2V0KCkp
OworCisgICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50
MzIoKSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZ
UEVfVkFSRElDVCk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIs
ICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEo
KSkpOworICAgIHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1fcHJv
eHkuZ2V0KCksICJTdGFydCIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihvc2F7c3Z9KSIsIHNl
c3Npb25QYXRoLmFzY2lpKCkuZGF0YSgpLCAiIiwgJm9wdGlvbnMpLCBHX0RCVVNfQ0FMTF9GTEFH
U19OT05FLCBzX2RidXNDYWxsVGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCksIG51bGxwdHIs
ICZlcnJvci5vdXRQdHIoKSkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIlN0YXJ0IGVycm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKG8pIiwgJm9i
amVjdFBhdGgub3V0UHRyKCkpOworICAgIHdhaXRSZXNwb25zZVNpZ25hbChvYmplY3RQYXRoLmdl
dCgpKTsKKworICAgIEdSZWZQdHI8R1VuaXhGRExpc3Q+IGZkTGlzdDsKKyAgICBpbnQgZmQgPSAt
MTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9W
QVJESUNUKTsKKyAgICByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfd2l0aF91
bml4X2ZkX2xpc3Rfc3luYyhtX3Byb3h5LmdldCgpLCAiT3BlblBpcGVXaXJlUmVtb3RlIiwKKyAg
ICAgICAgZ192YXJpYW50X25ldygiKG9he3N2fSkiLCBzZXNzaW9uUGF0aC5hc2NpaSgpLmRhdGEo
KSwgJm9wdGlvbnMpLCBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCBzX2RidXNDYWxsVGltZW91dC5t
aWxsaXNlY29uZHNBczxpbnQ+KCksIG51bGxwdHIsICZmZExpc3Qub3V0UHRyKCksIG51bGxwdHIs
ICZlcnJvci5vdXRQdHIoKSkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIlVuYWJsZSB0byByZXF1ZXN0IGRpc3BsYXkgY2FwdHVyZS4gRXJyb3I6ICVzIiwgZXJyb3It
Pm1lc3NhZ2UpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGludCBmZE91dDsK
KyAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihoKSIsICZmZE91dCk7CisgICAgZmQg
PSBnX3VuaXhfZmRfbGlzdF9nZXQoZmRMaXN0LmdldCgpLCBmZE91dCwgbnVsbHB0cik7CisKKyAg
ICBhdXRvIHNlc3Npb24gPSBXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpTZXNzaW9uPihmZCwgV1RGTW92ZShzZXNzaW9uUGF0aCkpOworICAgIG1f
c2Vzc2lvbnMuYWRkKGRldmljZS5wZXJzaXN0ZW50SWQoKSwgV1RGTW92ZShzZXNzaW9uKSk7Cisg
ICAgcmV0dXJuIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVTb3Vy
Y2UoZGV2aWNlLnBlcnNpc3RlbnRJZCgpLmlzb2xhdGVkQ29weSgpLCBmZCwgeyB9LCBjb25zdHJh
aW50cywgZGV2aWNlLnR5cGUoKSk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzdG9wU291cmNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElEKQorewor
ICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLnRha2UocGVyc2lzdGVudElEKTsKKyAgICBhdXRvIHBy
b3h5ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9uZXdfZm9yX2J1c19zeW5jKEdfQlVTX1RZUEVf
U0VTU0lPTiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R0RCdXNQcm94eUZsYWdzPihHX0RCVVNfUFJP
WFlfRkxBR1NfRE9fTk9UX0NPTk5FQ1RfU0lHTkFMUyB8IEdfREJVU19QUk9YWV9GTEFHU19ET19O
T1RfTE9BRF9QUk9QRVJUSUVTKSwgbnVsbHB0ciwKKyAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5w
b3J0YWwuRGVza3RvcCIsIGl0LT5wYXRoLmFzY2lpKCkuZGF0YSgpLCAib3JnLmZyZWVkZXNrdG9w
LnBvcnRhbC5TZXNzaW9uIiwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMocHJveHkuZ2V0KCksICJDbG9zZSIsIG51
bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAgICAgIHNfZGJ1c0NhbGxUaW1lb3V0
Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgbnVsbHB0cikpOworfQorCit2b2lkIEdT
dHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6d2FpdFJlc3BvbnNlU2lnbmFsKGNv
bnN0IGNoYXIqIG9iamVjdFBhdGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudFJl
c3BvbnNlQ2FsbGJhY2spOworICAgIG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2sgPSBbXSB7IH07
CisgICAgYXV0byogY29ubmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihtX3By
b3h5LmdldCgpKTsKKyAgICBhdXRvIHNpZ25hbElkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFs
X3N1YnNjcmliZShjb25uZWN0aW9uLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiwg
Im9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIsCisgICAgICAgICJSZXNwb25zZSIsIG9i
amVjdFBhdGgsIG51bGxwdHIsIEdfREJVU19TSUdOQUxfRkxBR1NfTk9fTUFUQ0hfUlVMRSwgcmVp
bnRlcnByZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxiYWNrPigrW10oR0RCdXNDb25uZWN0aW9uKiwg
Y29uc3QgY2hhciogLyogc2VuZGVyTmFtZSAqLywgY29uc3QgY2hhciogLyogb2JqZWN0UGF0aCAq
LywgY29uc3QgY2hhciogLyogaW50ZXJmYWNlTmFtZSAqLywgY29uc3QgY2hhciogLyogc2lnbmFs
TmFtZSAqLywgR1ZhcmlhbnQqIC8qIHBhcmFtZXRlcnMgKi8sIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOworICAgICAgICAgICAgbWFu
YWdlci5ub3RpZnlSZXNwb25zZSgpOworICAgICAgICB9KSwgdGhpcywgbnVsbHB0cik7CisKKyAg
ICB3aGlsZSAobV9jdXJyZW50UmVzcG9uc2VDYWxsYmFjaykKKyAgICAgICAgZ19tYWluX2NvbnRl
eHRfaXRlcmF0aW9uKG51bGxwdHIsIGZhbHNlKTsKKworICAgIGdfZGJ1c19jb25uZWN0aW9uX3Np
Z25hbF91bnN1YnNjcmliZShjb25uZWN0aW9uLCBzaWduYWxJZCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RS
RUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCmluZGV4IGRlNTg4ZDZhNDA1ZGQ0OGVlZTBhYTc0YjAyYWIxNmZhNGVkMzNhYzUuLjBl
ZDdmNWFiNDk3MWViMzNhYTBlNDIwMjE4MzgyMjM4ZGNhZTQwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9h
cHAvZ3N0YXBwc2luay5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCwzNCArNjksMTcgQEAgcHJp
dmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdl
cigpIGZpbmFsIHsgcmV0dXJuIEdTdHJlYW1lclZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpOyB9CiB9OwogCi1WaWRlb0NhcHR1cmVGYWN0b3J5JiBsaWJXZWJSVENWaWRlb0Nh
cHR1cmVTb3VyY2VGYWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeT4gZmFjdG9yeTsKLSAgICByZXR1cm4gZmFjdG9y
eS5nZXQoKTsKLX0KLQogY2xhc3MgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5
IGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVy
ZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmlu
YWwKICAgICB7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgICAgICByZXR1cm4gR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lzdGVudElk
KCkuaXNvbGF0ZWRDb3B5KCksIHsgfSwgY29uc3RyYWludHMsIGRldmljZS50eXBlKCkpOwotI2Vs
c2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShj
b25zdHJhaW50cyk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0jZW5kaWYKKyAgICAgICAgYXV0byYg
bWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCk7CisgICAgICAgIHJldHVybiBtYW5hZ2VyLmNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGRl
dmljZSwgY29uc3RyYWludHMpOwogICAgIH0KIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZU1h
bmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIEdTdHJl
YW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7IH0KIH07CiAKLURp
c3BsYXlDYXB0dXJlRmFjdG9yeSYgbGliV2ViUlRDRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVT
b3VyY2VGYWN0b3J5PiBmYWN0b3J5OwotICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwotfQotCiBD
YXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMqIGNvbnN0cmFpbnRzKQogewogICAgIGF1dG8gZGV2aWNlID0gR1N0cmVhbWVyVmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ3N0cmVhbWVyRGV2aWNlV2l0aFVJRChkZXZp
Y2VJRCk7CkBAIC0xMTQsOSArOTYsOSBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaQogICAgIHJl
dHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQogCi1DYXB0dXJl
U291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJl
U291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFD
b25zdHJhaW50cyogY29uc3RyYWludHMsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNl
VHlwZSkKK0NhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIGludCBmZCwgU3RyaW5nJiYg
aGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJl
ZigqbmV3IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgeyB9
LCBXVEZNb3ZlKGhhc2hTYWx0KSwgInBpcGV3aXJlc3JjIiwgZGV2aWNlVHlwZSkpOworICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoV1RG
TW92ZShkZXZpY2VJRCksIHsgfSwgV1RGTW92ZShoYXNoU2FsdCksICJwaXBld2lyZXNyYyIsIGRl
dmljZVR5cGUsIGZkKSk7CiAgICAgaWYgKGNvbnN0cmFpbnRzKSB7CiAgICAgICAgIGlmIChhdXRv
IHJlc3VsdCA9IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQogICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0LT5iYWRDb25zdHJhaW50KTsKQEAgLTEyNiwyNSAr
MTA4LDIzIEBAIENhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYKIAogVmlkZW9DYXB0dXJlRmFjdG9yeSYg
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIHsKLSAgICByZXR1cm4gbGli
V2ViUlRDVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OworICAgIHJl
dHVybiBmYWN0b3J5LmdldCgpOwogfQogCiBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheUZhY3RvcnkoKQogewotICAgIHJldHVybiBsaWJX
ZWJSVENEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OworICAg
IHJldHVybiBmYWN0b3J5LmdldCgpOwogfQogCi1HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYg
bmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VGYWN0b3J5LCBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCitHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VGYWN0b3J5
LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUsIGludCBmZCkKICAgICA6IFJl
YWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUobmFtZSksIFdURk1vdmUoZGV2aWNlSUQp
LCBXVEZNb3ZlKGhhc2hTYWx0KSkKICAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VGYWN0b3J5LCBkZXZpY2VUeXBlKSkKICAgICAsIG1fZGV2
aWNlVHlwZShkZXZpY2VUeXBlKQogewogICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7Ci0K
LSAgICBpZiAoZ19zdHJfZXF1YWwoc291cmNlRmFjdG9yeSwgInBpcGV3aXJlc3JjIikpIHsKLSAg
ICAgICAgaWYgKGF1dG8gZmQgPSBwYXJzZUludGVnZXI8aW50PihwZXJzaXN0ZW50SUQoKSkpCi0g
ICAgICAgICAgICBtX2NhcHR1cmVyLT5zZXRQaXBld2lyZUZEKCpmZCk7Ci0gICAgfQorICAgIG1f
Y2FwdHVyZXItPnNldFBpcGV3aXJlRkQoZmQpOwogICAgIG1fY2FwdHVyZXItPmFkZE9ic2VydmVy
KCp0aGlzKTsKIH0KIApAQCAtMjI0LDYgKzIwNCwxMSBAQCB2b2lkIEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewogICAgIEdTVF9JTkZPKCJSZXNldCBo
ZWlnaHQgYW5kIHdpZHRoIGFmdGVyIHN0b3BwaW5nIHNvdXJjZSIpOwogICAgIHNldFNpemUoeyAw
LCAwIH0pOworCisgICAgaWYgKGF1dG8gZmQgPSBtX2NhcHR1cmVyLT5waXBld2lyZUZEKCkpIHsK
KyAgICAgICAgYXV0byYgbWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCk7CisgICAgICAgIG1hbmFnZXIuc3RvcFNvdXJjZShwZXJzaXN0ZW50
SUQoKSk7CisgICAgfQogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggOWJlMzlkZWEz
ZTYwNTYwY2U0ZTA2MDQ3YTQ1ODRkNjM1N2U2NjI3My4uYWE4YTkyZTFlNzVmODgxNmNhZTNiNzMy
MzIwYzEwZTRhMDUyYTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2UsIEdTdHJlYW1lckNhcHR1cmVyOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3Ry
aW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQs
IFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSk7CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVBp
cGV3aXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBpbnQgZmQsIFN0cmluZyYmIGhhc2hTYWx0
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgp
OwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZUNhcHNDaGFuZ2Vk
KGNvbnN0IEdzdENhcHMqKSBmaW5hbDsKIAogcHJvdGVjdGVkOgotICAgIEdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYg
aGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VfZmFjdG9yeSwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSk7CisgICAgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmlj
ZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIqIHNvdXJj
ZV9mYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBpbnQgZmQpOwogICAgIEdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBTdHJpbmcmJiBo
YXNoU2FsdCk7CiAgICAgdmlydHVhbCB+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKCk7CiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcAppbmRleCBkMWE4MGMyNDliN2Q1NTA1ZmI4Y2My
NzFmZmYyZWU4NWFmZWE0NWNkLi5hZjY1OWU4NTkxNTZjNTljYjFhNjllYWM0NDg4NDQzM2E5NjIw
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwCkBA
IC03NSwxMSArNzUsNiBAQCBHc3RWaWRlb0luZm8gR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Z2V0
QmVzdEZvcm1hdCgpCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLXZvaWQgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlcjo6c2V0UGlwZXdpcmVGRChpbnQgZmQpCi17Ci0gICAgbV9mZCA9IGZkOwotfQotCiBi
b29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogewogICAgIGlmIChtX2ZkLmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZXIuaAppbmRleCA3MGQzNjUyZGNiNWJjNWUzYjBlNjM1ZDFjZmEyMmM3
ZGNlMTFmOGUwLi5lMDk5NzlkMmNjN2QyYjNiNGFlYzVmZjg3NmRhMGI0YmY2MmM2MjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKQEAgLTQzLDcgKzQzLDkg
QEAgcHVibGljOgogICAgIGJvb2wgc2V0RnJhbWVSYXRlKGRvdWJsZSk7CiAgICAgR3N0VmlkZW9J
bmZvIGdldEJlc3RGb3JtYXQoKTsKIAotICAgIHZvaWQgc2V0UGlwZXdpcmVGRChpbnQpOworICAg
IHZvaWQgc2V0UGlwZXdpcmVGRChpbnQgZmQpIHsgbV9mZCA9IGZkOyB9CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHBpcGV3aXJlRkQoKSBjb25zdCB7IHJldHVybiBtX2ZkOyB9CisKIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL0ZpbmRMSUJQT1JUQUwuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFr
ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ4MGViYmI4ZTE0NWY4MTVjNjFiNDMx
ZTNlM2JmMGQ0MGRhYzZjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQorKysgL2Rldi9udWxsCkBA
IC0xLDEwMSArMCwwIEBACi0jIC0gVHJ5IHRvIGZpbmQgbGlicG9ydGFsCi0jIE9uY2UgZG9uZSwg
dGhpcyB3aWxsIGRlZmluZQotIwotIyAgTElCUE9SVEFMX0ZPVU5EIC0gc3lzdGVtIGhhcyBsaWJw
b3J0YWwKLSMgIExJQlBPUlRBTF9JTkNMVURFX0RJUlMgLSB0aGUgbGlicG9ydGFsIGluY2x1ZGUg
ZGlyZWN0b3JpZXMKLSMgIExJQlBPUlRBTF9MSUJSQVJJRVMgLSBsaW5rIHRoZXNlIHRvIHVzZSBs
aWJwb3J0YWwKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTCi0jIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgSVRTCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOwotIyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKLSMgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKLSMgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRgotIyBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
I1s9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PVsucnN0OgotRmluZExJQlBPUlRBTAotLS0tLS0tLS0tLS0tLQotCi1G
aW5kIGxpYnBvcnRhbCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMuCi0KLUltcG9ydGVkIFRhcmdldHMK
LV5eXl5eXl5eXl5eXl5eXl4KLQotYGBMSUJQT1JUQUw6OkxJQlBPUlRBTGBgCi0gIFRoZSBMSUJQ
T1JUQUwgbGlicmFyeSwgaWYgZm91bmQuCi0KLVJlc3VsdCBWYXJpYWJsZXMKLV5eXl5eXl5eXl5e
Xl5eXl4KLQotVGhpcyB3aWxsIGRlZmluZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3Vy
IHByb2plY3Q6Ci0KLWBgTElCUE9SVEFMX0ZPVU5EYGAKLSAgdHJ1ZSBpZiAodGhlIHJlcXVlc3Rl
ZCB2ZXJzaW9uIG9mKSBMSUJQT1JUQUwgaXMgYXZhaWxhYmxlLgotYGBMSUJQT1JUQUxfVkVSU0lP
TmBgCi0gIHRoZSB2ZXJzaW9uIG9mIExJQlBPUlRBTC4KLWBgTElCUE9SVEFMX0xJQlJBUklFU2Bg
Ci0gIHRoZSBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IHRvIHVzZSBMSUJQT1JUQUwuCi1gYExJ
QlBPUlRBTF9JTkNMVURFX0RJUlNgYAotICB3aGVyZSB0byBmaW5kIHRoZSBMSUJQT1JUQUwgaGVh
ZGVycy4KLWBgTElCUE9SVEFMX0NPTVBJTEVfT1BUSU9OU2BgCi0gIHRoaXMgc2hvdWxkIGJlIHBh
c3NlZCB0byB0YXJnZXRfY29tcGlsZV9vcHRpb25zKCksIGlmIHRoZQotICB0YXJnZXQgaXMgbm90
IHVzZWQgZm9yIGxpbmtpbmcKLQotI109PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PV0KLQotZmluZF9wYWNrYWdlKFBr
Z0NvbmZpZykKLXBrZ19jaGVja19tb2R1bGVzKFBDX0xJQlBPUlRBTCBRVUlFVCBsaWJwb3J0YWwp
Ci1zZXQoTElCUE9SVEFMX0NPTVBJTEVfT1BUSU9OUyAke1BDX0xJQlBPUlRBTF9DRkxBR1NfT1RI
RVJ9KQotc2V0KExJQlBPUlRBTF9WRVJTSU9OICR7UENfTElCUE9SVEFMX1ZFUlNJT059KQotCi1m
aW5kX3BhdGgoTElCUE9SVEFMX0lOQ0xVREVfRElSCi0gICAgTkFNRVMgcG9ydGFsLmgKLSAgICBI
SU5UUyAke1BDX0xJQlBPUlRBTF9JTkNMVURFRElSfQotICAgICAgICAgICR7UENfTElCUE9SVEFM
X0lOQ0xVREVfRElSU30KLSAgICBQQVRIX1NVRkZJWEVTIGxpYnBvcnRhbAotKQotCi1maW5kX2xp
YnJhcnkoTElCUE9SVEFMX0xJQlJBUlkKLSAgICBOQU1FUyAke0xJQlBPUlRBTF9OQU1FU30gcG9y
dGFsCi0gICAgSElOVFMgJHtQQ19MSUJQT1JUQUxfTElCRElSfQotICAgICAgICAgICR7UENfTElC
UE9SVEFMX0xJQlJBUllfRElSU30KLSkKLQotaW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5k
YXJkQXJncykKLWZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhMSUJQT1JUQUwKLSAg
ICBGT1VORF9WQVIgTElCUE9SVEFMX0ZPVU5ECi0gICAgUkVRVUlSRURfVkFSUyBMSUJQT1JUQUxf
SU5DTFVERV9ESVIgTElCUE9SVEFMX0xJQlJBUlkKLSAgICBWRVJTSU9OX1ZBUiBMSUJQT1JUQUxf
VkVSU0lPTgotKQotCi1pZiAoTElCUE9SVEFMX0xJQlJBUlkgQU5EIE5PVCBUQVJHRVQgTElCUE9S
VEFMOjpMSUJQT1JUQUwpCi0gICAgYWRkX2xpYnJhcnkoTElCUE9SVEFMOjpMSUJQT1JUQUwgVU5L
Tk9XTiBJTVBPUlRFRCBHTE9CQUwpCi0gICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKExJQlBPUlRB
TDo6TElCUE9SVEFMIFBST1BFUlRJRVMKLSAgICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7TElC
UE9SVEFMX0xJQlJBUll9IgotICAgICAgICBJTlRFUkZBQ0VfQ09NUElMRV9PUFRJT05TICIke0xJ
QlBPUlRBTF9DT01QSUxFX09QVElPTlN9IgotICAgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJF
Q1RPUklFUyAiJHtMSUJQT1JUQUxfSU5DTFVERV9ESVJ9IgotICAgICkKLWVuZGlmICgpCi0KLW1h
cmtfYXNfYWR2YW5jZWQoTElCUE9SVEFMX0lOQ0xVREVfRElSIExJQlBPUlRBTF9MSUJSQVJZKQot
Ci1pZiAoTElCUE9SVEFMX0ZPVU5EKQotICAgIHNldChMSUJQT1JUQUxfTElCUkFSSUVTICR7TElC
UE9SVEFMX0xJQlJBUll9KQotICAgIHNldChMSUJQT1JUQUxfSU5DTFVERV9ESVJTICR7TElCUE9S
VEFMX0lOQ0xVREVfRElSfSkKLWVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0
cmVhbWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQpp
bmRleCBhZjk2NzRiMTQwYmZjYzE3N2NlYTEwYzI2Zjc4MjlhZmYzMTAwMDllLi43N2U5NTg0NWU5
OTEzYTU5NzhkYWQxMGNmYzQzMDA5M2I0M2M3YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
R1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3Mu
Y21ha2UKQEAgLTU3LDEyICs1NywzIEBAIGlmIChFTkFCTEVfTUVESUFfU1RSRUFNIEFORCBFTkFC
TEVfV0VCX1JUQykKIGVsc2UgKCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElC
V0VCUlRDIEZBTFNFKQogZW5kaWYgKCkKLQotaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCi0gICAg
ZmluZF9wYWNrYWdlKExJQlBPUlRBTCkKLSAgICBpZiAoTElCUE9SVEFMX0ZPVU5EKQotICAgICAg
ICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUElQRVdJUkUgVFJVRSkKLSAgICBlbHNlICgp
Ci0gICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9QSVBFV0lSRSBGQUxTRSkKLSAg
ICBlbmRpZiAoKQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCBmNTZhOTcwMjdhNmI0NDlkMDgwZmEzOTQ4YTBjOTNmZTYzOTQyYjRiLi5iMDI1MWE5Zjk1
MGRiYTdiYmI4YmM3ZTJhZWVlNmZmYmU4ODhiOTYyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9y
dGFsIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21ha2U6IFJlbW92ZWQuCisgICAg
ICAgICogU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZToKKwogMjAyMS0wNy0xNiAg
QWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gU3VwcG9ydCBjb2xvci1zY2hlbWVzIENTUyBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433868</attachid>
            <date>2021-07-20 04:26:15 -0700</date>
            <delta_ts>2021-07-22 03:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228056-20210720042614.patch</filename>
            <type>text/plain</type>
            <size>33770</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLmNlNTZhN2MzZGZiODhhODc0ODQyMzkyZTRiMGI3MjA2NWNhYTlj
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9ydGFsIGRl
cGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOiBF
bmFibGUgc2NyZWVuIGNhcHR1cmUgb24gR1N0cmVhbWVyCisgICAgICAgIHBvcnRzLiBUaGUgUElQ
RVdJUkUgaWZkZWYgaXMgcmVkdW5kYW50LgorCiAyMDIxLTA3LTE2ICBBbGV4YW5kZXIgTWlraGF5
bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS11bV1BFXSBTdXBwb3J0IGNv
bG9yLXNjaGVtZXMgQ1NTIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UzNTVhZWY0ZTEwMWI0ZmQy
NGU3MDk4MWFjYTg5YTA4NDU5NTYxYy4uMGUwYjA3YWU0YTNmMGQ0ZjExZjVkOTNiMzI1YjA1OGU3
Zjg5YmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTE4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gUmVtb3Zl
IGxpYnBvcnRhbCBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgwNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgcHVyZS1HREJ1cyBhcHByb2FjaCBhbGxvd3MgdXMgdG8gcmVxdWVz
dCB0aGUgaW5wdXQgZGV2aWNlIChNb25pdG9yIG9yIFdpbmRvdykgZGVwZW5kaW5nCisgICAgICAg
IG9uIHRoZSBDYXB0dXJlRGV2aWNlIHR5cGUgYW5kIG1ha2UgdGhlIG1vdXNlIGN1cnNvciB2aXNp
YmxlIGluIHRoZSBnZW5lcmF0ZWQgdmlkZW8gc3RyZWFtLgorICAgICAgICBBbHNvIHJlcXVlc3Rp
bmcgY2FwdHVyZSBzdXBwb3J0IHdpdGhpbiBjb21wdXRlQ2FwdHVyZURldmljZXMoKSB3YXMgYSBi
YWQgaWRlYSBiZWNhdXNlIHRoaXMKKyAgICAgICAgYmVpbmcgdXNlZCBieSB0aGUgZW51bWVyYXRl
TWVkaWFEZXZpY2VzIEFQSSBjb3VsZCBwb3RlbnRpYWxseSBzcGFtIHRoZSB1c2VyIHdpdGggcGVy
bWlzc2lvbgorICAgICAgICBwb3B1cHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9HU3RyZWFtZXIu
Y21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJl
RGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVy
ZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpj
b21wdXRlQ2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OnN0b3BT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjp3YWl0UmVzcG9uc2VTaWduYWwpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNw
bGF5RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmg6CisKIDIwMjEtMDctMjAgIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggZ3JpZCBhc3BlY3QtcmF0aW8gdGVzdHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggYzQyZWJlYmEwNjdjMTVkN2Y1ZGMwZTkwYWIz
ZGI0NTJlOTIyYTRlZC4uNmQzNmEwMWVjNzIzNDc5NjgwNzcxM2IxYWQzODZlMzBhMTYzMDcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTk0MCw3ICs5NDAsNyBAQCBTY3JlZW5D
YXB0dXJlRW5hYmxlZDoKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQog
ICAgIFdlYktpdDoKLSAgICAgICJQTEFURk9STShNQUMpIHx8IFVTRShQSVBFV0lSRSkiOiB0cnVl
CisgICAgICAiUExBVEZPUk0oTUFDKSB8fCBVU0UoR1NUUkVBTUVSKSI6IHRydWUKICAgICAgIGRl
ZmF1bHQ6IGZhbHNlCiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggZTMyOTcxYTRhZjA0NGY2N2Q2Yzdm
M2NhOTI0OTViNmIwM2JlYzliNS4uNTcxODkzZDU0OTk3ZDc4MTAxNWQxOTk3NWQyMjhlNzIxNTg5
MTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtNTgsNiAr
NTgsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAog
ICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJDYXB0dXJlci5jcHAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKICAgICAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKQEAgLTE1MiwxMCArMTUzLDYgQEAgaWYgKEVOQUJM
RV9WSURFTykKICAgICAgICAgICAgICAgICAke0dTVFJFQU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFS
SUVTfQogICAgICAgICAgICAgKQogICAgICAgICBlbmRpZiAoKQotCi0gICAgICAgIGlmIChVU0Vf
UElQRVdJUkUpCi0gICAgICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUyBMSUJQ
T1JUQUw6OkxJQlBPUlRBTCkKLSAgICAgICAgZW5kaWYgKCkKICAgICBlbmRpZiAoKQogZW5kaWYg
KCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAKaW5kZXggYTIzNTE1M2M3NGZkNGZhOTZiZjE3MDc2YWNjYWNlYzYzZDhlZTU1ZC4u
ZDBiZjhmOGJlODA0NjkzMTJiZGM5NjcxNjU1ODFmZDc1NjI2MDgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0yNSw3
ICsyNSw2IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAog
I2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJU
b1N0cmluZ0NvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCwxMiAr
NjMsNiBAQCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBHU3RyZWFtZXJWaWRl
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwogICAgIHJldHVybiBtYW5hZ2VyOwogfQog
Ci1HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXImIEdTdHJlYW1lckRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOwotICAg
IHJldHVybiBtYW5hZ2VyOwotfQotCiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdT
dHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKICAgICBpZiAobV9kZXZpY2VNb25pdG9y
KQpAQCAtMjAzLDk3ICsxOTYsNiBAQCB2b2lkIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpyZWZyZXNoQ2FwdHVyZURldmljZXMoKQogICAgIH0KIH0KIAotR1N0cmVhbWVyRGlzcGxheUNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIo
KQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAgICBtX3BvcnRhbCA9IGFkb3B0R1JlZih4ZHBfcG9y
dGFsX25ldygpKTsKLSNlbmRpZgotfQotCi1HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVT
RShQSVBFV0lSRSkKLSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIHhkcF9zZXNzaW9uX2Ns
b3NlKG1fc2Vzc2lvbi5nZXQoKSk7Ci0gICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAg
fQotI2VuZGlmCi19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojpjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxi
YWNrKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayk7Ci0gICAgeGRwX3BvcnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uKG1fcG9ydGFs
LmdldCgpLCBzdGF0aWNfY2FzdDxYZHBPdXRwdXRUeXBlPihYRFBfT1VUUFVUX01PTklUT1IgfCBY
RFBfT1VUUFVUX1dJTkRPVyksIFhEUF9TQ1JFRU5DQVNUX0ZMQUdfTk9ORSwgbnVsbHB0ciwgW10o
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKLSAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvKiBz
ZXNzaW9uID0geGRwX3BvcnRhbF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uX2ZpbmlzaChYRFBf
UE9SVEFMKHNvdXJjZSksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFz
ZXNzaW9uKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2Ny
ZWVuY2FzdCBzZXNzaW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwotICAgICAg
ICBtYW5hZ2VyLnNldFNlc3Npb24oc2Vzc2lvbik7Ci0gICAgfSwgdGhpcyk7Ci0jZWxzZQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGNhbGxiYWNrKCk7Ci0jZW5kaWYKLX0KLQotI2lm
IFVTRShQSVBFV0lSRSkKLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzZXRTZXNzaW9uKFhkcFNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKHNlc3Npb24p
OwotICAgIG1fc2Vzc2lvbiA9IGFkb3B0R1JlZihzZXNzaW9uKTsKLQotICAgIGdfc2lnbmFsX2Nv
bm5lY3Rfc3dhcHBlZChtX3Nlc3Npb24uZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKCtbXShH
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIqIG1hbmFnZXIsIFhkcFNlc3Npb24q
KSB7Ci0gICAgICAgIG1hbmFnZXItPnNlc3Npb25XYXNDbG9zZWQoKTsKLSAgICB9KSwgdGhpcyk7
Ci0gICAgeGRwX3Nlc3Npb25fc3RhcnQobV9zZXNzaW9uLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2Vy
RGF0YSkgewotICAgICAgICBhdXRvKiBzZXNzaW9uID0gWERQX1NFU1NJT04oc291cmNlKTsKLSAg
ICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvJiBtYW5hZ2Vy
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Kj4odXNlckRhdGEpOwotICAgICAgICBpZiAoIXhkcF9zZXNzaW9uX3N0YXJ0X2ZpbmlzaChzZXNz
aW9uLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiRmFpbGVkIHRvIHN0YXJ0IHNjcmVlbmNhc3Qgc2Vzc2lvbjogJXMiLCBlcnJvci0+bWVzc2Fn
ZSk7Ci0gICAgICAgICAgICBtYW5hZ2VyLm5vdGlmeUNsaWVudCgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbWFuYWdlci5zZXNzaW9uU3RhcnRlZCgpOwotICAg
IH0sIHRoaXMpOwotfQotI2VuZGlmCi0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzZXNzaW9uU3RhcnRlZCgpCi17Ci0gICAgbV9kZXZpY2VzLmNsZWFyKCk7Ci0j
aWYgVVNFKFBJUEVXSVJFKQotICAgIGludCBmZCA9IHhkcF9zZXNzaW9uX29wZW5fcGlwZXdpcmVf
cmVtb3RlKG1fc2Vzc2lvbi5nZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxpYnBvcnRhbCBB
UEkgZG9lc24ndCBzZWVtIHRvIGV4cG9zZSB3aGljaCBYZHBPdXRwdXRUeXBlIHdhcyBzZWxlY3Rl
ZCBieSB0aGUKLSAgICAvLyB1c2VyLCBzbyBoYXJkY29kZSBTY3JlZW4gaGVyZS4g8J+ktwotICAg
IENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZShXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8
U3RyaW5nPihmZCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmlu
ZygiQ2FwdHVyZSBEaXNwbGF5IikpOwotICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVl
KTsKLSAgICBtX2RldmljZXMuYXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZSkpOwotI2VuZGlm
Ci0gICAgbm90aWZ5Q2xpZW50KCk7Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpub3RpZnlDbGllbnQoKQotewotICAgIGlmIChtX2NhbGxiYWNrKQotICAg
ICAgICBtX2NhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzZXNzaW9uV2FzQ2xvc2VkKCkKLXsKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAg
bV9zZXNzaW9uID0gbnVsbHB0cjsKLSNlbmRpZgotICAgIG1fZGV2aWNlcy5jbGVhcigpOwotICAg
IGRldmljZUNoYW5nZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0
dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOTUzOTgxYWU4
NjJkMDhiNzU3YTQ0ZTVmMzkwMDAwMzMwZjY1ZjYzMC4uMWZhYTViNmNiZTY1Y2JjY2VkMzY4YWQw
ZWE3NGE3YjQxZDVkMTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiR1N0cmVh
bWVyQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5
LmgiCiAKLSNpZiBVU0UoUElQRVdJUkUpCi0jaW5jbHVkZSA8bGlicG9ydGFsL3BvcnRhbC5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZURl
dmljZU1hbmFnZXIgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewpAQCAtNzYsMjUgKzcy
LDM5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBzaW5nbGV0b24oKTsKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNh
cHR1cmVEZXZpY2VzKCkgZmluYWwgeyByZXR1cm4gbV9kZXZpY2VzOyB9OwogICAgIHZvaWQgY29t
cHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Cisg
ICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3Qg
Q2FwdHVyZURldmljZSYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKKworICAgIGVudW0gUGlw
ZVdpcmVPdXRwdXRUeXBlIHsKKyAgICAgICAgTW9uaXRvciA9IDEgPDwgMCwKKyAgICAgICAgV2lu
ZG93ID0gMSA8PCAxCisgICAgfTsKKworICAgIHZvaWQgc3RvcFNvdXJjZShjb25zdCBTdHJpbmcm
IHBlcnNpc3RlbnRJRCk7CiAKIHByb3RlY3RlZDoKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgdm9p
ZCBzZXRTZXNzaW9uKFhkcFNlc3Npb24qKTsKLSNlbmRpZgotICAgIHZvaWQgc2Vzc2lvblN0YXJ0
ZWQoKTsKLSAgICB2b2lkIG5vdGlmeUNsaWVudCgpOwotICAgIHZvaWQgc2Vzc2lvbldhc0Nsb3Nl
ZCgpOworICAgIHZvaWQgbm90aWZ5UmVzcG9uc2UoKSB7IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJh
Y2soKTsgfQogCiBwcml2YXRlOgogICAgIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcigpOwogICAgIH5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKIAot
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gbV9jYWxsYmFjazsKKyAgICB2b2lkIHdhaXRS
ZXNwb25zZVNpZ25hbChjb25zdCBjaGFyKiBvYmplY3RQYXRoKTsKKwogICAgIFZlY3RvcjxDYXB0
dXJlRGV2aWNlPiBtX2RldmljZXM7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgIEdSZWZQdHI8WGRw
UG9ydGFsPiBtX3BvcnRhbDsKLSAgICBHUmVmUHRyPFhkcFNlc3Npb24+IG1fc2Vzc2lvbjsKLSNl
bmRpZgorCisgICAgc3RydWN0IFNlc3Npb24geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisgICAgICAgIFNlc3Npb24oaW50IGZkLCBTdHJpbmcmJiBwYXRoKQorICAg
ICAgICAgICAgOiBmZChmZCkKKyAgICAgICAgICAgICwgcGF0aChXVEZNb3ZlKHBhdGgpKSB7IH0K
KworICAgICAgICBpbnQgZmQ7CisgICAgICAgIFN0cmluZyBwYXRoOworICAgIH07CisgICAgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uPj4gbV9zZXNzaW9uczsKKworICAg
IEdSZWZQdHI8R0RCdXNQcm94eT4gbV9wcm94eTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2s7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY2YjU4YzhjNTlmZGZjZTMwY2MzY2ZjNGI0MjdkM2NmOTZhZDFkY2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtMCwwICsx
LDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5W
LgorICogQXV0aG9yOiBUaGliYXVsdCBTYXVuaWVyIDx0c2F1bmllckBpZ2FsaWEuY29tPgorICog
QXV0aG9yOiBBbGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKKyNp
bmNsdWRlICJHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiR1N0
cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgi
CisjaW5jbHVkZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgU2Vjb25kcyBzX2RidXNDYWxsVGlt
ZW91dCA9IDEwX21zOworCitHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXImIEdT
dHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
PiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyOworfQorCitHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigp
Cit7Cit9CisKK0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpCit7CisgICAgZm9yIChhdXRvJiBzb3VyY2VJ
ZCA6IG1fc2Vzc2lvbnMua2V5cygpKQorICAgICAgICBzdG9wU291cmNlKHNvdXJjZUlkKTsKK30K
Kwordm9pZCBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0
dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAg
bV9kZXZpY2VzLmNsZWFyKCk7CisKKyAgICBDYXB0dXJlRGV2aWNlIHNjcmVlbkNhcHR1cmVEZXZp
Y2UoV1RGOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBTY3JlZW4iKSk7CisgICAgc2NyZWVu
Q2FwdHVyZURldmljZS5zZXRFbmFibGVkKHRydWUpOworICAgIG1fZGV2aWNlcy5hcHBlbmQoV1RG
TW92ZShzY3JlZW5DYXB0dXJlRGV2aWNlKSk7CisgICAgY2FsbGJhY2soKTsKK30KKworQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVh
dGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIGNvbnN0IGF1dG8gaXQgPSBt
X3Nlc3Npb25zLmZpbmQoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKTsKKyAgICBpZiAoaXQgIT0gbV9z
ZXNzaW9ucy5lbmQoKSkgeworICAgICAgICByZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lzdGVudElkKCkuaXNvbGF0ZWRD
b3B5KCksCisgICAgICAgICAgICBpdC0+dmFsdWUtPmZkLCB7IH0sIGNvbnN0cmFpbnRzLCBkZXZp
Y2UudHlwZSgpKTsKKyAgICB9CisKKyAgICBtX3Byb3h5ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94
eV9uZXdfZm9yX2J1c19zeW5jKEdfQlVTX1RZUEVfU0VTU0lPTiwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8R0RCdXNQcm94eUZsYWdzPihHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0NPTk5FQ1RfU0lH
TkFMUyB8IEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfTE9BRF9QUk9QRVJUSUVTKSwgbnVsbHB0
ciwKKyAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIsICIvb3JnL2ZyZWVk
ZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiwgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2Fz
dCIsIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIGF1dG8gdG9rZW4gPSBtYWtlU3RyaW5nKCJX
ZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7CisgICAgYXV0byBzZXNzaW9uVG9rZW4g
PSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7CisgICAgR1Zh
cmlhbnRCdWlsZGVyIG9wdGlvbnM7CisgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9u
cywgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZv
cHRpb25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tl
bi5hc2NpaSgpLmRhdGEoKSkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywg
Intzdn0iLCAic2Vzc2lvbl9oYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyhzZXNz
aW9uVG9rZW4uYXNjaWkoKS5kYXRhKCkpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5j
KG1fcHJveHkuZ2V0KCksICJDcmVhdGVTZXNzaW9uIiwgZ192YXJpYW50X25ldygiKGF7c3Z9KSIs
ICZvcHRpb25zKSwKKyAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwgc19kYnVzQ2FsbFRp
bWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsK
KworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gb2JqZWN0UGF0aDsKKyAgICBnX3ZhcmlhbnRfZ2V0
KHJlc3VsdC5nZXQoKSwgIihvKSIsICZvYmplY3RQYXRoLm91dFB0cigpKTsKKyAgICB3YWl0UmVz
cG9uc2VTaWduYWwob2JqZWN0UGF0aC5nZXQoKSk7CisKKyAgICBTdHJpbmcgcmVxdWVzdFBhdGgo
b2JqZWN0UGF0aC5nZXQoKSk7CisgICAgYXV0byBzZXNzaW9uUGF0aCA9IHJlcXVlc3RQYXRoLnJl
cGxhY2UoIi9yZXF1ZXN0LyIsICIvc2Vzc2lvbi8iKS5yZXBsYWNlKHRva2VuLCBzZXNzaW9uVG9r
ZW4pOworCisgICAgLy8gRklYTUU6IE1heWJlIGNoZWNrIHRoaXMgZGVwZW5kaW5nIG9uIGRldmlj
ZS50eXBlKCkuCisgICAgYXV0byBvdXRwdXRUeXBlID0gR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpQaXBlV2lyZU91dHB1dFR5cGU6Ok1vbml0b3IgfCBHU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlwZTo6V2luZG93OworCisg
ICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7
CisgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZUEVfVkFS
RElDVCk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJoYW5k
bGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEoKSkpOwor
ICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAidHlwZXMiLCBnX3Zh
cmlhbnRfbmV3X3VpbnQzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3V0cHV0VHlwZSkpKTsKKyAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgIm11bHRpcGxlIiwgZ192
YXJpYW50X25ld19ib29sZWFuKGZhbHNlKSk7CisKKyAgICBhdXRvIHByb3BlcnRpZXNSZXN1bHQg
PSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhtX3Byb3h5LmdldCgpLCAib3JnLmZy
ZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcy5HZXQiLAorICAgICAgICBnX3ZhcmlhbnRfbmV3KCIo
c3MpIiwgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2FzdCIsICJ2ZXJzaW9uIiksIEdf
REJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAgICAgIHNfZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vj
b25kc0FzPGludD4oKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGlmIChwcm9wZXJ0aWVzUmVz
dWx0KSB7CisgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHByb3BlcnR5OworICAgICAgICBnX3Zh
cmlhbnRfZ2V0KHByb3BlcnRpZXNSZXN1bHQuZ2V0KCksICIodikiLCAmcHJvcGVydHkub3V0UHRy
KCkpOworICAgICAgICBpZiAoZ192YXJpYW50X2dldF91aW50MzIocHJvcGVydHkuZ2V0KCkpID49
IDIpIHsKKyAgICAgICAgICAgIC8vIEVuYWJsZSBlbWJlZGRlZCBjdXJzb3IuIEZJWE1FOiBTaG91
bGQgYmUgY2hlY2tlZCBpbiB0aGUgY29uc3RyYWludHMuCisgICAgICAgICAgICBnX3ZhcmlhbnRf
YnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImN1cnNvcl9tb2RlIiwgZ192YXJpYW50X25l
d191aW50MzIoMikpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gYWRvcHRHUmVm
KGdfZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQoKSwgIlNlbGVjdFNvdXJjZXMiLAor
ICAgICAgICBnX3ZhcmlhbnRfbmV3KCIob2F7c3Z9KSIsIHNlc3Npb25QYXRoLmFzY2lpKCkuZGF0
YSgpLCAmb3B0aW9ucyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIHNfZGJ1c0NhbGxUaW1lb3V0
Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CisgICAg
aWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiU2VsZWN0U291cmNlcyBlcnJvcjog
JXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
Z192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIobykiLCAmb2JqZWN0UGF0aC5vdXRQdHIoKSk7
CisgICAgd2FpdFJlc3BvbnNlU2lnbmFsKG9iamVjdFBhdGguZ2V0KCkpOworCisgICAgdG9rZW4g
PSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7CisgICAgZ192
YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7Cisg
ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4i
LCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEoKSkpOworICAgIHJlc3Vs
dCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1fcHJveHkuZ2V0KCksICJTdGFy
dCIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihvc2F7c3Z9KSIsIHNlc3Npb25QYXRoLmFzY2lp
KCkuZGF0YSgpLCAiIiwgJm9wdGlvbnMpLCBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCBzX2RidXND
YWxsVGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCksIG51bGxwdHIsICZlcnJvci5vdXRQdHIo
KSkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIlN0YXJ0IGVycm9y
OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwor
ICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKG8pIiwgJm9iamVjdFBhdGgub3V0UHRy
KCkpOworICAgIHdhaXRSZXNwb25zZVNpZ25hbChvYmplY3RQYXRoLmdldCgpKTsKKworICAgIEdS
ZWZQdHI8R1VuaXhGRExpc3Q+IGZkTGlzdDsKKyAgICBpbnQgZmQgPSAtMTsKKyAgICBnX3Zhcmlh
bnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBy
ZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfd2l0aF91bml4X2ZkX2xpc3Rfc3lu
YyhtX3Byb3h5LmdldCgpLCAiT3BlblBpcGVXaXJlUmVtb3RlIiwKKyAgICAgICAgZ192YXJpYW50
X25ldygiKG9he3N2fSkiLCBzZXNzaW9uUGF0aC5hc2NpaSgpLmRhdGEoKSwgJm9wdGlvbnMpLCBH
X0RCVVNfQ0FMTF9GTEFHU19OT05FLCBzX2RidXNDYWxsVGltZW91dC5taWxsaXNlY29uZHNBczxp
bnQ+KCksIG51bGxwdHIsICZmZExpc3Qub3V0UHRyKCksIG51bGxwdHIsICZlcnJvci5vdXRQdHIo
KSkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIlVuYWJsZSB0byBy
ZXF1ZXN0IGRpc3BsYXkgY2FwdHVyZS4gRXJyb3I6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGludCBmZE91dDsKKyAgICBnX3ZhcmlhbnRf
Z2V0KHJlc3VsdC5nZXQoKSwgIihoKSIsICZmZE91dCk7CisgICAgZmQgPSBnX3VuaXhfZmRfbGlz
dF9nZXQoZmRMaXN0LmdldCgpLCBmZE91dCwgbnVsbHB0cik7CisKKyAgICBhdXRvIHNlc3Npb24g
PSBXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpT
ZXNzaW9uPihmZCwgV1RGTW92ZShzZXNzaW9uUGF0aCkpOworICAgIG1fc2Vzc2lvbnMuYWRkKGRl
dmljZS5wZXJzaXN0ZW50SWQoKSwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgcmV0dXJuIEdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2UoZGV2aWNlLnBlcnNp
c3RlbnRJZCgpLmlzb2xhdGVkQ29weSgpLCBmZCwgeyB9LCBjb25zdHJhaW50cywgZGV2aWNlLnR5
cGUoKSk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
dG9wU291cmNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElEKQoreworICAgIGF1dG8gaXQgPSBt
X3Nlc3Npb25zLnRha2UocGVyc2lzdGVudElEKTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRHUmVm
KGdfZGJ1c19wcm94eV9uZXdfZm9yX2J1c19zeW5jKEdfQlVTX1RZUEVfU0VTU0lPTiwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R0RCdXNQcm94eUZsYWdzPihHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9U
X0NPTk5FQ1RfU0lHTkFMUyB8IEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfTE9BRF9QUk9QRVJU
SUVTKSwgbnVsbHB0ciwKKyAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIs
IGl0LT5wYXRoLmFzY2lpKCkuZGF0YSgpLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TZXNzaW9u
IiwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1
c19wcm94eV9jYWxsX3N5bmMocHJveHkuZ2V0KCksICJDbG9zZSIsIG51bGxwdHIsIEdfREJVU19D
QUxMX0ZMQUdTX05PTkUsCisgICAgICAgIHNfZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25kc0Fz
PGludD4oKSwgbnVsbHB0ciwgbnVsbHB0cikpOworfQorCit2b2lkIEdTdHJlYW1lckRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6d2FpdFJlc3BvbnNlU2lnbmFsKGNvbnN0IGNoYXIqIG9iamVj
dFBhdGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2sp
OworICAgIG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2sgPSBbXSB7IH07CisgICAgYXV0byogY29u
bmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihtX3Byb3h5LmdldCgpKTsKKyAg
ICBhdXRvIHNpZ25hbElkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25u
ZWN0aW9uLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiwgIm9yZy5mcmVlZGVza3Rv
cC5wb3J0YWwuUmVxdWVzdCIsCisgICAgICAgICJSZXNwb25zZSIsIG9iamVjdFBhdGgsIG51bGxw
dHIsIEdfREJVU19TSUdOQUxfRkxBR1NfTk9fTUFUQ0hfUlVMRSwgcmVpbnRlcnByZXRfY2FzdDxH
REJ1c1NpZ25hbENhbGxiYWNrPigrW10oR0RCdXNDb25uZWN0aW9uKiwgY29uc3QgY2hhciogLyog
c2VuZGVyTmFtZSAqLywgY29uc3QgY2hhciogLyogb2JqZWN0UGF0aCAqLywgY29uc3QgY2hhciog
LyogaW50ZXJmYWNlTmFtZSAqLywgY29uc3QgY2hhciogLyogc2lnbmFsTmFtZSAqLywgR1Zhcmlh
bnQqIC8qIHBhcmFtZXRlcnMgKi8sIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgICAgICBh
dXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOworICAgICAgICAgICAgbWFuYWdlci5ub3RpZnlSZXNw
b25zZSgpOworICAgICAgICB9KSwgdGhpcywgbnVsbHB0cik7CisKKyAgICB3aGlsZSAobV9jdXJy
ZW50UmVzcG9uc2VDYWxsYmFjaykKKyAgICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKG51
bGxwdHIsIGZhbHNlKTsKKworICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmli
ZShjb25uZWN0aW9uLCBzaWduYWxJZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRl
NTg4ZDZhNDA1ZGQ0OGVlZTBhYTc0YjAyYWIxNmZhNGVkMzNhYzUuLjBlZDdmNWFiNDk3MWViMzNh
YTBlNDIwMjE4MzgyMjM4ZGNhZTQwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
TWVkaWFTYW1wbGVHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCwzNCArNjksMTcgQEAgcHJpdmF0ZToKICAgICBDYXB0
dXJlRGV2aWNlTWFuYWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0
dXJuIEdTdHJlYW1lclZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOyB9CiB9
OwogCi1WaWRlb0NhcHR1cmVGYWN0b3J5JiBsaWJXZWJSVENWaWRlb0NhcHR1cmVTb3VyY2VGYWN0
b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlRmFjdG9yeT4gZmFjdG9yeTsKLSAgICByZXR1cm4gZmFjdG9yeS5nZXQoKTsKLX0KLQog
Y2xhc3MgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5IGZpbmFsIDogcHVibGlj
IERpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNl
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKICAgICB7Ci0jaWYg
VVNFKFBJUEVXSVJFKQotICAgICAgICByZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
OjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5
KCksIHsgfSwgY29uc3RyYWludHMsIGRldmljZS50eXBlKCkpOwotI2Vsc2UKLSAgICAgICAgVU5V
U0VEX1BBUkFNKGRldmljZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShjb25zdHJhaW50cyk7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0jZW5kaWYKKyAgICAgICAgYXV0byYgbWFuYWdlciA9IEdTdHJl
YW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CisgICAgICAgIHJl
dHVybiBtYW5hZ2VyLmNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGRldmljZSwgY29uc3RyYWlu
dHMpOwogICAgIH0KIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIEdTdHJlYW1lckRpc3BsYXlDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7IH0KIH07CiAKLURpc3BsYXlDYXB0dXJlRmFj
dG9yeSYgbGliV2ViUlRDRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5KCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5PiBm
YWN0b3J5OwotICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwotfQotCiBDYXB0dXJlU291cmNlT3JF
cnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJ
RCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRz
KQogewogICAgIGF1dG8gZGV2aWNlID0gR1N0cmVhbWVyVmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCkuZ3N0cmVhbWVyRGV2aWNlV2l0aFVJRChkZXZpY2VJRCk7CkBAIC0xMTQs
OSArOTYsOSBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaQogICAgIHJldHVybiBDYXB0dXJlU291
cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQogCi1DYXB0dXJlU291cmNlT3JFcnJvciBH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJlU291cmNlKFN0cmluZyYm
IGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSkKK0NhcHR1cmVT
b3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVT
b3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIGludCBmZCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
IGRldmljZVR5cGUpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgeyB9LCBXVEZNb3ZlKGhhc2hT
YWx0KSwgInBpcGV3aXJlc3JjIiwgZGV2aWNlVHlwZSkpOworICAgIGF1dG8gc291cmNlID0gYWRv
cHRSZWYoKm5ldyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCks
IHsgfSwgV1RGTW92ZShoYXNoU2FsdCksICJwaXBld2lyZXNyYyIsIGRldmljZVR5cGUsIGZkKSk7
CiAgICAgaWYgKGNvbnN0cmFpbnRzKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IHNvdXJj
ZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rk1vdmUocmVzdWx0LT5iYWRDb25zdHJhaW50KTsKQEAgLTEyNiwyNSArMTA4LDIzIEBAIENhcHR1
cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdp
cmVTb3VyY2UoU3RyaW5nJiYKIAogVmlkZW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIHsKLSAgICByZXR1cm4gbGliV2ViUlRDVmlkZW9DYXB0
dXJlU291cmNlRmFjdG9yeSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5Lmdl
dCgpOwogfQogCiBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZTo6ZGlzcGxheUZhY3RvcnkoKQogewotICAgIHJldHVybiBsaWJXZWJSVENEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUZhY3RvcnkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5
LmdldCgpOwogfQogCi1HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYg
aGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VGYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlIGRldmljZVR5cGUpCitHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3Ry
aW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VGYWN0b3J5LCBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlIGRldmljZVR5cGUsIGludCBmZCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlKFdURk1vdmUobmFtZSksIFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKGhhc2hT
YWx0KSkKICAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVy
Pihzb3VyY2VGYWN0b3J5LCBkZXZpY2VUeXBlKSkKICAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VU
eXBlKQogewogICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7Ci0KLSAgICBpZiAoZ19zdHJf
ZXF1YWwoc291cmNlRmFjdG9yeSwgInBpcGV3aXJlc3JjIikpIHsKLSAgICAgICAgaWYgKGF1dG8g
ZmQgPSBwYXJzZUludGVnZXI8aW50PihwZXJzaXN0ZW50SUQoKSkpCi0gICAgICAgICAgICBtX2Nh
cHR1cmVyLT5zZXRQaXBld2lyZUZEKCpmZCk7Ci0gICAgfQorICAgIG1fY2FwdHVyZXItPnNldFBp
cGV3aXJlRkQoZmQpOwogICAgIG1fY2FwdHVyZXItPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIApA
QCAtMjI0LDYgKzIwNCwxMSBAQCB2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c3Rv
cFByb2R1Y2luZ0RhdGEoKQogewogICAgIEdTVF9JTkZPKCJSZXNldCBoZWlnaHQgYW5kIHdpZHRo
IGFmdGVyIHN0b3BwaW5nIHNvdXJjZSIpOwogICAgIHNldFNpemUoeyAwLCAwIH0pOworCisgICAg
aWYgKGF1dG8gZmQgPSBtX2NhcHR1cmVyLT5waXBld2lyZUZEKCkpIHsKKyAgICAgICAgYXV0byYg
bWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCk7CisgICAgICAgIG1hbmFnZXIuc3RvcFNvdXJjZShwZXJzaXN0ZW50SUQoKSk7CisgICAgfQog
fQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggOWJlMzlkZWEzZTYwNTYwY2U0ZTA2MDQ3
YTQ1ODRkNjM1N2U2NjI3My4uYWE4YTkyZTFlNzVmODgxNmNhZTNiNzMyMzIwYzEwZTRhMDUyYTc1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2Uu
aApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UsIEdT
dHJlYW1lckNhcHR1cmVyOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENhcHR1cmVT
b3VyY2VPckVycm9yIGNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgY3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGhhc2hT
YWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7
CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVBpcGV3aXJlU291cmNlKFN0
cmluZyYmIGRldmljZUlELCBpbnQgZmQsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNv
bnN0cmFpbnRzKiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwogCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZUNhcHNDaGFuZ2VkKGNvbnN0IEdzdENhcHMq
KSBmaW5hbDsKIAogcHJvdGVjdGVkOgotICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0
IGdjaGFyKiBzb3VyY2VfZmFjdG9yeSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CisgICAg
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIqIHNvdXJjZV9mYWN0b3J5LCBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBpbnQgZmQpOwogICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCk7CiAgICAg
dmlydHVhbCB+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKCk7CiAgICAgdm9pZCBzdGFydFBy
b2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVyLmNwcAppbmRleCBkMWE4MGMyNDliN2Q1NTA1ZmI4Y2MyNzFmZmYyZWU4NWFmZWE0
NWNkLi5hZjY1OWU4NTkxNTZjNTljYjFhNjllYWM0NDg4NDQzM2E5NjIwNjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwCkBAIC03NSwxMSArNzUsNiBA
QCBHc3RWaWRlb0luZm8gR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Z2V0QmVzdEZvcm1hdCgpCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLXZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0UGlw
ZXdpcmVGRChpbnQgZmQpCi17Ci0gICAgbV9mZCA9IGZkOwotfQotCiBib29sIEdTdHJlYW1lclZp
ZGVvQ2FwdHVyZXI6OnNldFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICht
X2ZkLmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZXIuaAppbmRleCA3MGQzNjUyZGNiNWJjNWUzYjBlNjM1ZDFjZmEyMmM3ZGNlMTFmOGUwLi5lMDk5
NzlkMmNjN2QyYjNiNGFlYzVmZjg3NmRhMGI0YmY2MmM2MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKQEAgLTQzLDcgKzQzLDkgQEAgcHVibGljOgogICAg
IGJvb2wgc2V0RnJhbWVSYXRlKGRvdWJsZSk7CiAgICAgR3N0VmlkZW9JbmZvIGdldEJlc3RGb3Jt
YXQoKTsKIAotICAgIHZvaWQgc2V0UGlwZXdpcmVGRChpbnQpOworICAgIHZvaWQgc2V0UGlwZXdp
cmVGRChpbnQgZmQpIHsgbV9mZCA9IGZkOyB9CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHBpcGV3
aXJlRkQoKSBjb25zdCB7IHJldHVybiBtX2ZkOyB9CisKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IG1fZmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRMSUJQT1JU
QUwuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWQ4MGViYmI4ZTE0NWY4MTVjNjFiNDMxZTNlM2JmMGQ0MGRhYzZj
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
Y21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBA
Ci0jIC0gVHJ5IHRvIGZpbmQgbGlicG9ydGFsCi0jIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmlu
ZQotIwotIyAgTElCUE9SVEFMX0ZPVU5EIC0gc3lzdGVtIGhhcyBsaWJwb3J0YWwKLSMgIExJQlBP
UlRBTF9JTkNMVURFX0RJUlMgLSB0aGUgbGlicG9ydGFsIGluY2x1ZGUgZGlyZWN0b3JpZXMKLSMg
IExJQlBPUlRBTF9MSUJSQVJJRVMgLSBsaW5rIHRoZXNlIHRvIHVzZSBsaWJwb3J0YWwKLSMKLSMg
Q29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTCi0jIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgSVRT
Ci0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOwotIyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwKLSMgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKLSMgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgotIyBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI1s9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PVsucnN0OgotRmluZExJQlBPUlRBTAotLS0tLS0tLS0tLS0tLQotCi1GaW5kIGxpYnBvcnRhbCBo
ZWFkZXJzIGFuZCBsaWJyYXJpZXMuCi0KLUltcG9ydGVkIFRhcmdldHMKLV5eXl5eXl5eXl5eXl5e
Xl4KLQotYGBMSUJQT1JUQUw6OkxJQlBPUlRBTGBgCi0gIFRoZSBMSUJQT1JUQUwgbGlicmFyeSwg
aWYgZm91bmQuCi0KLVJlc3VsdCBWYXJpYWJsZXMKLV5eXl5eXl5eXl5eXl5eXl4KLQotVGhpcyB3
aWxsIGRlZmluZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3VyIHByb2plY3Q6Ci0KLWBg
TElCUE9SVEFMX0ZPVU5EYGAKLSAgdHJ1ZSBpZiAodGhlIHJlcXVlc3RlZCB2ZXJzaW9uIG9mKSBM
SUJQT1JUQUwgaXMgYXZhaWxhYmxlLgotYGBMSUJQT1JUQUxfVkVSU0lPTmBgCi0gIHRoZSB2ZXJz
aW9uIG9mIExJQlBPUlRBTC4KLWBgTElCUE9SVEFMX0xJQlJBUklFU2BgCi0gIHRoZSBsaWJyYXJp
ZXMgdG8gbGluayBhZ2FpbnN0IHRvIHVzZSBMSUJQT1JUQUwuCi1gYExJQlBPUlRBTF9JTkNMVURF
X0RJUlNgYAotICB3aGVyZSB0byBmaW5kIHRoZSBMSUJQT1JUQUwgaGVhZGVycy4KLWBgTElCUE9S
VEFMX0NPTVBJTEVfT1BUSU9OU2BgCi0gIHRoaXMgc2hvdWxkIGJlIHBhc3NlZCB0byB0YXJnZXRf
Y29tcGlsZV9vcHRpb25zKCksIGlmIHRoZQotICB0YXJnZXQgaXMgbm90IHVzZWQgZm9yIGxpbmtp
bmcKLQotI109PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PV0KLQotZmluZF9wYWNrYWdlKFBrZ0NvbmZpZykKLXBrZ19j
aGVja19tb2R1bGVzKFBDX0xJQlBPUlRBTCBRVUlFVCBsaWJwb3J0YWwpCi1zZXQoTElCUE9SVEFM
X0NPTVBJTEVfT1BUSU9OUyAke1BDX0xJQlBPUlRBTF9DRkxBR1NfT1RIRVJ9KQotc2V0KExJQlBP
UlRBTF9WRVJTSU9OICR7UENfTElCUE9SVEFMX1ZFUlNJT059KQotCi1maW5kX3BhdGgoTElCUE9S
VEFMX0lOQ0xVREVfRElSCi0gICAgTkFNRVMgcG9ydGFsLmgKLSAgICBISU5UUyAke1BDX0xJQlBP
UlRBTF9JTkNMVURFRElSfQotICAgICAgICAgICR7UENfTElCUE9SVEFMX0lOQ0xVREVfRElSU30K
LSAgICBQQVRIX1NVRkZJWEVTIGxpYnBvcnRhbAotKQotCi1maW5kX2xpYnJhcnkoTElCUE9SVEFM
X0xJQlJBUlkKLSAgICBOQU1FUyAke0xJQlBPUlRBTF9OQU1FU30gcG9ydGFsCi0gICAgSElOVFMg
JHtQQ19MSUJQT1JUQUxfTElCRElSfQotICAgICAgICAgICR7UENfTElCUE9SVEFMX0xJQlJBUllf
RElSU30KLSkKLQotaW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKLWZpbmRf
cGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhMSUJQT1JUQUwKLSAgICBGT1VORF9WQVIgTElC
UE9SVEFMX0ZPVU5ECi0gICAgUkVRVUlSRURfVkFSUyBMSUJQT1JUQUxfSU5DTFVERV9ESVIgTElC
UE9SVEFMX0xJQlJBUlkKLSAgICBWRVJTSU9OX1ZBUiBMSUJQT1JUQUxfVkVSU0lPTgotKQotCi1p
ZiAoTElCUE9SVEFMX0xJQlJBUlkgQU5EIE5PVCBUQVJHRVQgTElCUE9SVEFMOjpMSUJQT1JUQUwp
Ci0gICAgYWRkX2xpYnJhcnkoTElCUE9SVEFMOjpMSUJQT1JUQUwgVU5LTk9XTiBJTVBPUlRFRCBH
TE9CQUwpCi0gICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKExJQlBPUlRBTDo6TElCUE9SVEFMIFBS
T1BFUlRJRVMKLSAgICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7TElCUE9SVEFMX0xJQlJBUll9
IgotICAgICAgICBJTlRFUkZBQ0VfQ09NUElMRV9PUFRJT05TICIke0xJQlBPUlRBTF9DT01QSUxF
X09QVElPTlN9IgotICAgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtMSUJQ
T1JUQUxfSU5DTFVERV9ESVJ9IgotICAgICkKLWVuZGlmICgpCi0KLW1hcmtfYXNfYWR2YW5jZWQo
TElCUE9SVEFMX0lOQ0xVREVfRElSIExJQlBPUlRBTF9MSUJSQVJZKQotCi1pZiAoTElCUE9SVEFM
X0ZPVU5EKQotICAgIHNldChMSUJQT1JUQUxfTElCUkFSSUVTICR7TElCUE9SVEFMX0xJQlJBUll9
KQotICAgIHNldChMSUJQT1JUQUxfSU5DTFVERV9ESVJTICR7TElCUE9SVEFMX0lOQ0xVREVfRElS
fSkKLWVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNt
YWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQppbmRleCBhZjk2NzRiMTQw
YmZjYzE3N2NlYTEwYzI2Zjc4MjlhZmYzMTAwMDllLi43N2U5NTg0NWU5OTEzYTU5NzhkYWQxMGNm
YzQzMDA5M2I0M2M3YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tz
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKQEAgLTU3LDEy
ICs1NywzIEBAIGlmIChFTkFCTEVfTUVESUFfU1RSRUFNIEFORCBFTkFCTEVfV0VCX1JUQykKIGVs
c2UgKCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV0VCUlRDIEZBTFNFKQog
ZW5kaWYgKCkKLQotaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCi0gICAgZmluZF9wYWNrYWdlKExJ
QlBPUlRBTCkKLSAgICBpZiAoTElCUE9SVEFMX0ZPVU5EKQotICAgICAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfUElQRVdJUkUgVFJVRSkKLSAgICBlbHNlICgpCi0gICAgICAgIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9QSVBFV0lSRSBGQUxTRSkKLSAgICBlbmRpZiAoKQotZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmNTZhOTcwMjdh
NmI0NDlkMDgwZmEzOTQ4YTBjOTNmZTYzOTQyYjRiLi5iMDI1MWE5Zjk1MGRiYTdiYmI4YmM3ZTJh
ZWVlNmZmYmU4ODhiOTYyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9ydGFsIGRlcGVuZGVuY3kK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODA1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNl
L2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21ha2U6IFJlbW92ZWQuCisgICAgICAgICogU291cmNlL2Nt
YWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZToKKwogMjAyMS0wNy0xNiAgQWxleGFuZGVyIE1pa2hh
eWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3VwcG9ydCBj
b2xvci1zY2hlbWVzIENTUyBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434004</attachid>
            <date>2021-07-22 03:56:39 -0700</date>
            <delta_ts>2021-07-22 06:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228056-20210722035637.patch</filename>
            <type>text/plain</type>
            <size>33971</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM2OTY3NWFkYmRjNmNlMWUxYTA3MjRj
NGI4YjBlMTQ3MWRkNjRmMzguLjNmOTRlMjFkNDE2NjU1Y2Y5NjA0NDkyOThhZmUzODAxMWE0ZThh
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9ydGFsIGRl
cGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOiBF
bmFibGUgc2NyZWVuIGNhcHR1cmUgb24gR1N0cmVhbWVyCisgICAgICAgIHBvcnRzLiBUaGUgUElQ
RVdJUkUgaWZkZWYgaXMgcmVkdW5kYW50LgorCiAyMDIxLTA3LTIxICBNaWd1ZWwgR29tZXogIDxt
YWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBbGxvdyB0aGUgdXNlciB0
byBjb25maWd1cmUgdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciBpbnNpZGUgdGhlIHdlYiBwcm9j
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMmQ2NTgyZmNkOTBhMTEzMTg4ZmQ0Y2U4NThmZmIzNTczMWMzM2Y3
Ny4uMDNkOTY5MWU3ZjJkNDc5MDVhNjUzNWQ1NTNiNzlmMmE1ODA2MWYyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gUmVtb3ZlIGxpYnBvcnRhbCBkZXBlbmRlbmN5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgwNTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHVy
ZS1HREJ1cyBhcHByb2FjaCBhbGxvd3MgdXMgdG8gcmVxdWVzdCB0aGUgaW5wdXQgZGV2aWNlIChN
b25pdG9yIG9yIFdpbmRvdykgZGVwZW5kaW5nCisgICAgICAgIG9uIHRoZSBDYXB0dXJlRGV2aWNl
IHR5cGUgYW5kIG1ha2UgdGhlIG1vdXNlIGN1cnNvciB2aXNpYmxlIGluIHRoZSBnZW5lcmF0ZWQg
dmlkZW8gc3RyZWFtLgorICAgICAgICBBbHNvIHJlcXVlc3RpbmcgY2FwdHVyZSBzdXBwb3J0IHdp
dGhpbiBjb21wdXRlQ2FwdHVyZURldmljZXMoKSB3YXMgYSBiYWQgaWRlYSBiZWNhdXNlIHRoaXMK
KyAgICAgICAgYmVpbmcgdXNlZCBieSB0aGUgZW51bWVyYXRlTWVkaWFEZXZpY2VzIEFQSSBjb3Vs
ZCBwb3RlbnRpYWxseSBzcGFtIHRoZSB1c2VyIHdpdGggcGVybWlzc2lvbgorICAgICAgICBwb3B1
cHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2U6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURl
dmljZU1hbmFnZXI6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OnN0b3BTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp3YWl0UmVzcG9uc2VT
aWduYWwpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1
cmVyLmg6CisKIDIwMjEtMDctMjIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFBhc3MgdGhlIGZ1bGwgdGFyZ2V0IHBv
aW50IHdoZW4gc2VsZWN0aW5nIGEgc25hcCBvZmZzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwKaW5kZXggYzQyZWJlYmEwNjdjMTVkN2Y1ZGMwZTkwYWIzZGI0NTJlOTIyYTRlZC4uNmQzNmEw
MWVjNzIzNDc5NjgwNzcxM2IxYWQzODZlMzBhMTYzMDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysr
IGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwKQEAgLTk0MCw3ICs5NDAsNyBAQCBTY3JlZW5DYXB0dXJlRW5hYmxlZDoKICAgICBX
ZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYktpdDoKLSAgICAgICJQ
TEFURk9STShNQUMpIHx8IFVTRShQSVBFV0lSRSkiOiB0cnVlCisgICAgICAiUExBVEZPUk0oTUFD
KSB8fCBVU0UoR1NUUkVBTUVSKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgV2Vi
Q29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFt
ZXIuY21ha2UKaW5kZXggZTMyOTcxYTRhZjA0NGY2N2Q2YzdmM2NhOTI0OTViNmIwM2JlYzliNS4u
NTcxODkzZDU0OTk3ZDc4MTAxNWQxOTk3NWQyMjhlNzIxNTg5MTIxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtNTgsNiArNTgsNyBAQCBpZiAoRU5BQkxFX1ZJ
REVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAK
KyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAogICAgICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
ci5jcHAKQEAgLTE1MiwxMCArMTUzLDYgQEAgaWYgKEVOQUJMRV9WSURFTykKICAgICAgICAgICAg
ICAgICAke0dTVFJFQU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTfQogICAgICAgICAgICAgKQog
ICAgICAgICBlbmRpZiAoKQotCi0gICAgICAgIGlmIChVU0VfUElQRVdJUkUpCi0gICAgICAgICAg
ICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUyBMSUJQT1JUQUw6OkxJQlBPUlRBTCkKLSAg
ICAgICAgZW5kaWYgKCkKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggYTIzNTE1
M2M3NGZkNGZhOTZiZjE3MDc2YWNjYWNlYzYzZDhlZTU1ZC4uZDBiZjhmOGJlODA0NjkzMTJiZGM5
NjcxNjU1ODFmZDc1NjI2MDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAi
R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkdTdHJlYW1lckNv
bW1vbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCwxMiArNjMsNiBAQCBHU3RyZWFtZXJWaWRl
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0bwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCi1HU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXImIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOwotICAgIHJldHVybiBtYW5hZ2VyOwotfQot
CiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVEZXZpY2VN
YW5hZ2VyKCkKIHsKICAgICBpZiAobV9kZXZpY2VNb25pdG9yKQpAQCAtMjAzLDk3ICsxOTYsNiBA
QCB2b2lkIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVyZURldmlj
ZXMoKQogICAgIH0KIH0KIAotR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpH
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQSVBFV0lS
RSkKLSAgICBtX3BvcnRhbCA9IGFkb3B0R1JlZih4ZHBfcG9ydGFsX25ldygpKTsKLSNlbmRpZgot
fQotCi1HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAgICBpZiAo
bV9zZXNzaW9uKSB7Ci0gICAgICAgIHhkcF9zZXNzaW9uX2Nsb3NlKG1fc2Vzc2lvbi5nZXQoKSk7
Ci0gICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQg
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmlj
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQotewotI2lmIFVTRShQSVBF
V0lSRSkKLSAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgeGRwX3BvcnRh
bF9jcmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uKG1fcG9ydGFsLmdldCgpLCBzdGF0aWNfY2FzdDxY
ZHBPdXRwdXRUeXBlPihYRFBfT1VUUFVUX01PTklUT1IgfCBYRFBfT1VUUFVUX1dJTkRPVyksIFhE
UF9TQ1JFRU5DQVNUX0ZMQUdfTk9ORSwgbnVsbHB0ciwgW10oR09iamVjdCogc291cmNlLCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKLSAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvKiBzZXNzaW9uID0geGRwX3BvcnRhbF9j
cmVhdGVfc2NyZWVuY2FzdF9zZXNzaW9uX2ZpbmlzaChYRFBfUE9SVEFMKHNvdXJjZSksIHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uKSB7Ci0gICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2NyZWVuY2FzdCBzZXNzaW9uOiAlcyIs
IGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1
cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwotICAgICAgICBtYW5hZ2VyLnNldFNlc3Npb24o
c2Vzc2lvbik7Ci0gICAgfSwgdGhpcyk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIGNhbGxiYWNrKCk7Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShQSVBFV0lSRSkKLXZvaWQg
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRTZXNzaW9uKFhkcFNlc3Np
b24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKHNlc3Npb24pOwotICAgIG1fc2Vzc2lvbiA9IGFk
b3B0R1JlZihzZXNzaW9uKTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3Nlc3Np
b24uZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKCtbXShHU3RyZWFtZXJEaXNwbGF5Q2FwdHVy
ZURldmljZU1hbmFnZXIqIG1hbmFnZXIsIFhkcFNlc3Npb24qKSB7Ci0gICAgICAgIG1hbmFnZXIt
PnNlc3Npb25XYXNDbG9zZWQoKTsKLSAgICB9KSwgdGhpcyk7Ci0gICAgeGRwX3Nlc3Npb25fc3Rh
cnQobV9zZXNzaW9uLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBbXShHT2JqZWN0KiBzb3VyY2Us
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewotICAgICAgICBhdXRv
KiBzZXNzaW9uID0gWERQX1NFU1NJT04oc291cmNlKTsKLSAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwotICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwotICAgICAg
ICBpZiAoIXhkcF9zZXNzaW9uX3N0YXJ0X2ZpbmlzaChzZXNzaW9uLCByZXN1bHQsICZlcnJvci5v
dXRQdHIoKSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHN0YXJ0IHNj
cmVlbmNhc3Qgc2Vzc2lvbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICAgICBtYW5h
Z2VyLm5vdGlmeUNsaWVudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbWFuYWdlci5zZXNzaW9uU3RhcnRlZCgpOwotICAgIH0sIHRoaXMpOwotfQotI2VuZGlm
Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3Rh
cnRlZCgpCi17Ci0gICAgbV9kZXZpY2VzLmNsZWFyKCk7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAg
IGludCBmZCA9IHhkcF9zZXNzaW9uX29wZW5fcGlwZXdpcmVfcmVtb3RlKG1fc2Vzc2lvbi5nZXQo
KSk7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxpYnBvcnRhbCBBUEkgZG9lc24ndCBzZWVtIHRvIGV4
cG9zZSB3aGljaCBYZHBPdXRwdXRUeXBlIHdhcyBzZWxlY3RlZCBieSB0aGUKLSAgICAvLyB1c2Vy
LCBzbyBoYXJkY29kZSBTY3JlZW4gaGVyZS4g8J+ktwotICAgIENhcHR1cmVEZXZpY2UgY2FwdHVy
ZURldmljZShXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihmZCksIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBEaXNwbGF5Iikp
OwotICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICBtX2RldmljZXMuYXBw
ZW5kKFdURk1vdmUoY2FwdHVyZURldmljZSkpOwotI2VuZGlmCi0gICAgbm90aWZ5Q2xpZW50KCk7
Ci19Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpub3RpZnlD
bGllbnQoKQotewotICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICBtX2NhbGxiYWNrKCk7Ci19
Ci0KLXZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uV2Fz
Q2xvc2VkKCkKLXsKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgbV9zZXNzaW9uID0gbnVsbHB0cjsK
LSNlbmRpZgotICAgIG1fZGV2aWNlcy5jbGVhcigpOwotICAgIGRldmljZUNoYW5nZWQoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOTUzOTgxYWU4NjJkMDhiNzU3YTQ0ZTVmMzkwMDAw
MzMwZjY1ZjYzMC4uODBiZTU4YzY1OGU1ZDZhZTkyMTBhYTg2ZWI1MDMwMzhkZTVhZTNlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
QEAgLTI4LDEwICsyOCw2IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmljZS5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCiAKLSNpZiBVU0UoUElQRVdJ
UkUpCi0jaW5jbHVkZSA8bGlicG9ydGFsL3BvcnRhbC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIgOiBwdWJsaWMg
Q2FwdHVyZURldmljZU1hbmFnZXIgewpAQCAtNzYsMjUgKzcyLDQ1IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsK
ICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWwg
eyByZXR1cm4gbV9kZXZpY2VzOyB9OwogICAgIHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqKTsKKworICAgIGVudW0gUGlwZVdpcmVPdXRwdXRUeXBlIHsKKyAg
ICAgICAgTW9uaXRvciA9IDEgPDwgMCwKKyAgICAgICAgV2luZG93ID0gMSA8PCAxCisgICAgfTsK
KworICAgIHZvaWQgc3RvcFNvdXJjZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCk7CiAKIHBy
b3RlY3RlZDoKLSNpZiBVU0UoUElQRVdJUkUpCi0gICAgdm9pZCBzZXRTZXNzaW9uKFhkcFNlc3Np
b24qKTsKLSNlbmRpZgotICAgIHZvaWQgc2Vzc2lvblN0YXJ0ZWQoKTsKLSAgICB2b2lkIG5vdGlm
eUNsaWVudCgpOwotICAgIHZvaWQgc2Vzc2lvbldhc0Nsb3NlZCgpOworICAgIHZvaWQgbm90aWZ5
UmVzcG9uc2UoKSB7IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2soKTsgfQogCiBwcml2YXRlOgog
ICAgIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKIAotICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4gbV9jYWxsYmFjazsKKyAgICB2b2lkIHdhaXRSZXNwb25zZVNpZ25hbChjb25zdCBj
aGFyKiBvYmplY3RQYXRoKTsKKwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7
Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgIEdSZWZQdHI8WGRwUG9ydGFsPiBtX3BvcnRhbDsKLSAg
ICBHUmVmUHRyPFhkcFNlc3Npb24+IG1fc2Vzc2lvbjsKLSNlbmRpZgorCisgICAgc3RydWN0IFNl
c3Npb24geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFNlc3Npb24oaW50IGZkLCBTdHJpbmcmJiBwYXRoKQorICAgICAgICAgICAgOiBmZChm
ZCkKKyAgICAgICAgICAgICwgcGF0aChXVEZNb3ZlKHBhdGgpKSB7IH0KKworICAgICAgICB+U2Vz
c2lvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGludCBmZDsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAgfTsKKyAgICBIYXNoTWFw
PFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb24+PiBtX3Nlc3Npb25zOworCisgICAgR1Jl
ZlB0cjxHREJ1c1Byb3h5PiBtX3Byb3h5OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4g
bV9jdXJyZW50UmVzcG9uc2VDYWxsYmFjazsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzg4M2Q1NzBmYmRhNTk5ZWRkNTEzZjU1MDYzNDEyNWViMDIyNDBmYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisg
KiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+CisgKiBBdXRo
b3I6IEFsZWphbmRybyBHLiBDYXN0cm8gPGFsZXhAaWdhbGlhLmNvbT4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1
ZGUgIkdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaCIKKyNp
bmNsdWRlIDxnaW8vZ3VuaXhmZGxpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBTZWNvbmRzIHNfZGJ1c0NhbGxUaW1lb3V0
ID0gMTBfbXM7CisKK0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlciYgR1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI+IG1h
bmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0dTdHJlYW1lckRpc3BsYXlDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK3sK
K30KKworR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+R1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHNvdXJjZUlkIDog
bV9zZXNzaW9ucy5rZXlzKCkpCisgICAgICAgIHN0b3BTb3VyY2Uoc291cmNlSWQpOworfQorCit2
b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2Rl
dmljZXMuY2xlYXIoKTsKKworICAgIENhcHR1cmVEZXZpY2Ugc2NyZWVuQ2FwdHVyZURldmljZShX
VEY6OmNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIpKTsKKyAgICBzY3JlZW5DYXB0
dXJlRGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgbV9kZXZpY2VzLmFwcGVuZChXVEZNb3Zl
KHNjcmVlbkNhcHR1cmVEZXZpY2UpKTsKKyAgICBjYWxsYmFjaygpOworfQorCitDYXB0dXJlU291
cmNlT3JFcnJvciBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZURp
c3BsYXlDYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVk
aWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7CisgICAgaWYgKG1fc2Vzc2lvbnMuY29udGFp
bnMoZGV2aWNlLnBlcnNpc3RlbnRJZCgpKSkgeworICAgICAgICBjb25zdCBhdXRvIGl0ID0gbV9z
ZXNzaW9ucy5maW5kKGRldmljZS5wZXJzaXN0ZW50SWQoKSk7CisgICAgICAgIHJldHVybiBHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJlU291cmNlKGRldmljZS5wZXJz
aXN0ZW50SWQoKS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgICAgIGl0LT52YWx1ZS0+ZmQsIHsg
fSwgY29uc3RyYWludHMsIGRldmljZS50eXBlKCkpOworICAgIH0KKworICAgIG1fcHJveHkgPSBh
ZG9wdEdSZWYoZ19kYnVzX3Byb3h5X25ld19mb3JfYnVzX3N5bmMoR19CVVNfVFlQRV9TRVNTSU9O
LAorICAgICAgICBzdGF0aWNfY2FzdDxHREJ1c1Byb3h5RmxhZ3M+KEdfREJVU19QUk9YWV9GTEFH
U19ET19OT1RfQ09OTkVDVF9TSUdOQUxTIHwgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9MT0FE
X1BST1BFUlRJRVMpLCBudWxscHRyLAorICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5E
ZXNrdG9wIiwgIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiLCAib3JnLmZyZWVkZXNr
dG9wLnBvcnRhbC5TY3JlZW5DYXN0IiwgbnVsbHB0ciwgbnVsbHB0cikpOworCisgICAgYXV0byB0
b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAg
ICBhdXRvIHNlc3Npb25Ub2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRv
bVVpbnQzMigpKTsKKyAgICBHVmFyaWFudEJ1aWxkZXIgb3B0aW9uczsKKyAgICBnX3ZhcmlhbnRf
YnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3Zh
cmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFy
aWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgZ192YXJpYW50X2J1
aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJzZXNzaW9uX2hhbmRsZV90b2tlbiIsIGdfdmFy
aWFudF9uZXdfc3RyaW5nKHNlc3Npb25Ub2tlbi5hc2NpaSgpLmRhdGEoKSkpOworCisgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRHUmVmKGdf
ZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQoKSwgIkNyZWF0ZVNlc3Npb24iLCBnX3Zh
cmlhbnRfbmV3KCIoYXtzdn0pIiwgJm9wdGlvbnMpLAorICAgICAgICBHX0RCVVNfQ0FMTF9GTEFH
U19OT05FLCBzX2RidXNDYWxsVGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCksIG51bGxwdHIs
ICZlcnJvci5vdXRQdHIoKSkpOworCisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBvYmplY3RQYXRo
OworICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKG8pIiwgJm9iamVjdFBhdGgub3V0
UHRyKCkpOworICAgIHdhaXRSZXNwb25zZVNpZ25hbChvYmplY3RQYXRoLmdldCgpKTsKKworICAg
IFN0cmluZyByZXF1ZXN0UGF0aChvYmplY3RQYXRoLmdldCgpKTsKKyAgICBhdXRvIHNlc3Npb25Q
YXRoID0gcmVxdWVzdFBhdGgucmVwbGFjZSgiL3JlcXVlc3QvIiwgIi9zZXNzaW9uLyIpLnJlcGxh
Y2UodG9rZW4sIHNlc3Npb25Ub2tlbik7CisKKyAgICAvLyBGSVhNRTogTWF5YmUgY2hlY2sgdGhp
cyBkZXBlbmRpbmcgb24gZGV2aWNlLnR5cGUoKS4KKyAgICBhdXRvIG91dHB1dFR5cGUgPSBHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlwZTo6TW9u
aXRvciB8IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6UGlwZVdpcmVPdXRw
dXRUeXBlOjpXaW5kb3c7CisKKyAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6
d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25z
LCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9w
dGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2Vu
LmFzY2lpKCkuZGF0YSgpKSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAi
e3N2fSIsICJ0eXBlcyIsIGdfdmFyaWFudF9uZXdfdWludDMyKHN0YXRpY19jYXN0PHVpbnQzMl90
PihvdXRwdXRUeXBlKSkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntz
dn0iLCAibXVsdGlwbGUiLCBnX3ZhcmlhbnRfbmV3X2Jvb2xlYW4oZmFsc2UpKTsKKworICAgIGF1
dG8gcHJvcGVydGllc1Jlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1f
cHJveHkuZ2V0KCksICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzLkdldCIsCisgICAg
ICAgIGdfdmFyaWFudF9uZXcoIihzcykiLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5D
YXN0IiwgInZlcnNpb24iKSwgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgc19kYnVz
Q2FsbFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgaWYgKHByb3BlcnRpZXNSZXN1bHQpIHsKKyAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcHJv
cGVydHk7CisgICAgICAgIGdfdmFyaWFudF9nZXQocHJvcGVydGllc1Jlc3VsdC5nZXQoKSwgIih2
KSIsICZwcm9wZXJ0eS5vdXRQdHIoKSk7CisgICAgICAgIGlmIChnX3ZhcmlhbnRfZ2V0X3VpbnQz
Mihwcm9wZXJ0eS5nZXQoKSkgPj0gMikgeworICAgICAgICAgICAgLy8gRW5hYmxlIGVtYmVkZGVk
IGN1cnNvci4gRklYTUU6IFNob3VsZCBiZSBjaGVja2VkIGluIHRoZSBjb25zdHJhaW50cy4KKyAg
ICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAiY3Vyc29y
X21vZGUiLCBnX3ZhcmlhbnRfbmV3X3VpbnQzMigyKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhtX3Byb3h5LmdldCgp
LCAiU2VsZWN0U291cmNlcyIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihvYXtzdn0pIiwgc2Vz
c2lvblBhdGguYXNjaWkoKS5kYXRhKCksICZvcHRpb25zKSwgR19EQlVTX0NBTExfRkxBR1NfTk9O
RSwgc19kYnVzQ2FsbFRpbWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJT
ZWxlY3RTb3VyY2VzIGVycm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihvKSIsICZv
YmplY3RQYXRoLm91dFB0cigpKTsKKyAgICB3YWl0UmVzcG9uc2VTaWduYWwob2JqZWN0UGF0aC5n
ZXQoKSk7CisKKyAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRv
bVVpbnQzMigpKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklB
TlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7
c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCku
ZGF0YSgpKSk7CisgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMo
bV9wcm94eS5nZXQoKSwgIlN0YXJ0IiwKKyAgICAgICAgZ192YXJpYW50X25ldygiKG9zYXtzdn0p
Iiwgc2Vzc2lvblBhdGguYXNjaWkoKS5kYXRhKCksICIiLCAmb3B0aW9ucyksIEdfREJVU19DQUxM
X0ZMQUdTX05PTkUsIHNfZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiU3RhcnQgZXJyb3I6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIobyki
LCAmb2JqZWN0UGF0aC5vdXRQdHIoKSk7CisgICAgd2FpdFJlc3BvbnNlU2lnbmFsKG9iamVjdFBh
dGguZ2V0KCkpOworCisgICAgR1JlZlB0cjxHVW5peEZETGlzdD4gZmRMaXN0OworICAgIGludCBm
ZCA9IC0xOworICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJm9wdGlvbnMsIEdfVkFSSUFOVF9U
WVBFX1ZBUkRJQ1QpOworICAgIHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF93
aXRoX3VuaXhfZmRfbGlzdF9zeW5jKG1fcHJveHkuZ2V0KCksICJPcGVuUGlwZVdpcmVSZW1vdGUi
LAorICAgICAgICBnX3ZhcmlhbnRfbmV3KCIob2F7c3Z9KSIsIHNlc3Npb25QYXRoLmFzY2lpKCku
ZGF0YSgpLCAmb3B0aW9ucyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIHNfZGJ1c0NhbGxUaW1l
b3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgJmZkTGlzdC5vdXRQdHIoKSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiVW5hYmxlIHRvIHJlcXVlc3QgZGlzcGxheSBjYXB0dXJlLiBFcnJvcjogJXMiLCBl
cnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaW50IGZk
T3V0OworICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKGgpIiwgJmZkT3V0KTsKKyAg
ICBmZCA9IGdfdW5peF9mZF9saXN0X2dldChmZExpc3QuZ2V0KCksIGZkT3V0LCBudWxscHRyKTsK
KworICAgIGF1dG8gc2Vzc2lvbiA9IFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI6OlNlc3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7Cisg
ICAgbV9zZXNzaW9ucy5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCgpLCBXVEZNb3ZlKHNlc3Npb24p
KTsKKyAgICByZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2ly
ZVNvdXJjZShkZXZpY2UucGVyc2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIGZkLCB7IH0sIGNv
bnN0cmFpbnRzLCBkZXZpY2UudHlwZSgpKTsKK30KKwordm9pZCBHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI6OnN0b3BTb3VyY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQp
Cit7CisgICAgYXV0byBzZXNzaW9uID0gbV9zZXNzaW9ucy50YWtlKHBlcnNpc3RlbnRJRCk7Cisg
ICAgYXV0byBwcm94eSA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfbmV3X2Zvcl9idXNfc3luYyhH
X0JVU19UWVBFX1NFU1NJT04sCisgICAgICAgIHN0YXRpY19jYXN0PEdEQnVzUHJveHlGbGFncz4o
R19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9DT05ORUNUX1NJR05BTFMgfCBHX0RCVVNfUFJPWFlf
RkxBR1NfRE9fTk9UX0xPQURfUFJPUEVSVElFUyksIG51bGxwdHIsCisgICAgICAgICJvcmcuZnJl
ZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiLCBzZXNzaW9uLT5wYXRoLmFzY2lpKCkuZGF0YSgpLCAi
b3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TZXNzaW9uIiwgbnVsbHB0ciwgbnVsbHB0cikpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMocHJveHkuZ2V0
KCksICJDbG9zZSIsIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAgICAgIHNf
ZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgbnVsbHB0cikp
OworfQorCit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6d2FpdFJl
c3BvbnNlU2lnbmFsKGNvbnN0IGNoYXIqIG9iamVjdFBhdGgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2spOworICAgIG1fY3VycmVudFJlc3BvbnNlQ2Fs
bGJhY2sgPSBbXSB7IH07CisgICAgYXV0byogY29ubmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRf
Y29ubmVjdGlvbihtX3Byb3h5LmdldCgpKTsKKyAgICBhdXRvIHNpZ25hbElkID0gZ19kYnVzX2Nv
bm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25uZWN0aW9uLCAib3JnLmZyZWVkZXNrdG9wLnBv
cnRhbC5EZXNrdG9wIiwgIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIsCisgICAgICAg
ICJSZXNwb25zZSIsIG9iamVjdFBhdGgsIG51bGxwdHIsIEdfREJVU19TSUdOQUxfRkxBR1NfTk9f
TUFUQ0hfUlVMRSwgcmVpbnRlcnByZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxiYWNrPigrW10oR0RC
dXNDb25uZWN0aW9uKiwgY29uc3QgY2hhciogLyogc2VuZGVyTmFtZSAqLywgY29uc3QgY2hhciog
Lyogb2JqZWN0UGF0aCAqLywgY29uc3QgY2hhciogLyogaW50ZXJmYWNlTmFtZSAqLywgY29uc3Qg
Y2hhciogLyogc2lnbmFsTmFtZSAqLywgR1ZhcmlhbnQqIC8qIHBhcmFtZXRlcnMgKi8sIGdwb2lu
dGVyIHVzZXJEYXRhKSB7CisgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwor
ICAgICAgICAgICAgbWFuYWdlci5ub3RpZnlSZXNwb25zZSgpOworICAgICAgICB9KSwgdGhpcywg
bnVsbHB0cik7CisKKyAgICB3aGlsZSAobV9jdXJyZW50UmVzcG9uc2VDYWxsYmFjaykKKyAgICAg
ICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKG51bGxwdHIsIGZhbHNlKTsKKworICAgIGdfZGJ1
c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0aW9uLCBzaWduYWxJZCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRlNTg4ZDZhNDA1ZGQ0OGVlZTBhYTc0YjAyYWIx
NmZhNGVkMzNhYzUuLjBlZDdmNWFiNDk3MWViMzNhYTBlNDIwMjE4MzgyMjM4ZGNhZTQwZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
CkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVHU3RyZWFtZXIuaCIKIAog
I2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCwz
NCArNjksMTcgQEAgcHJpdmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgdmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIEdTdHJlYW1lclZpZGVvQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOyB9CiB9OwogCi1WaWRlb0NhcHR1cmVGYWN0b3J5JiBs
aWJXZWJSVENWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeT4gZmFjdG9yeTsKLSAg
ICByZXR1cm4gZmFjdG9yeS5nZXQoKTsKLX0KLQogY2xhc3MgR1N0cmVhbWVyRGlzcGxheUNhcHR1
cmVTb3VyY2VGYWN0b3J5IGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CiBw
dWJsaWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3Vy
Y2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBj
b25zdHJhaW50cykgZmluYWwKICAgICB7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgICAgICByZXR1
cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZp
Y2UucGVyc2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIHsgfSwgY29uc3RyYWludHMsIGRldmlj
ZS50eXBlKCkpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7Ci0gICAgICAg
IFVOVVNFRF9QQVJBTShjb25zdHJhaW50cyk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0jZW5kaWYK
KyAgICAgICAgYXV0byYgbWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCk7CisgICAgICAgIHJldHVybiBtYW5hZ2VyLmNyZWF0ZURpc3BsYXlD
YXB0dXJlU291cmNlKGRldmljZSwgY29uc3RyYWludHMpOwogICAgIH0KIHByaXZhdGU6CiAgICAg
Q2FwdHVyZURldmljZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFs
IHsgcmV0dXJuIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCk7IH0KIH07CiAKLURpc3BsYXlDYXB0dXJlRmFjdG9yeSYgbGliV2ViUlRDRGlzcGxheUNhcHR1
cmVTb3VyY2VGYWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OwotICAgIHJldHVybiBmYWN0b3J5
LmdldCgpOwotfQotCiBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewogICAgIGF1dG8gZGV2aWNlID0gR1N0
cmVhbWVyVmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ3N0cmVhbWVyRGV2
aWNlV2l0aFVJRChkZXZpY2VJRCk7CkBAIC0xMTQsOSArOTYsOSBAQCBDYXB0dXJlU291cmNlT3JF
cnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJ
RCwgU3RyaQogICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkp
OwogfQogCi1DYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OmNyZWF0ZVBpcGV3aXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2Fs
dCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgZGV2aWNlVHlwZSkKK0NhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIGlu
dCBmZCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFp
bnRzLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCiB7Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZigqbmV3IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3Zl
KGRldmljZUlEKSwgeyB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgInBpcGV3aXJlc3JjIiwgZGV2aWNl
VHlwZSkpOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIHsgfSwgV1RGTW92ZShoYXNoU2FsdCksICJw
aXBld2lyZXNyYyIsIGRldmljZVR5cGUsIGZkKSk7CiAgICAgaWYgKGNvbnN0cmFpbnRzKSB7CiAg
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3Ry
YWludHMpKQogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0LT5iYWRDb25zdHJhaW50
KTsKQEAgLTEyNiwyNSArMTA4LDIzIEBAIENhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYKIAogVmlkZW9D
YXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gbGliV2ViUlRDVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5PiBm
YWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwogfQogCiBEaXNwbGF5Q2FwdHVyZUZh
Y3RvcnkmIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheUZhY3RvcnkoKQogewot
ICAgIHJldHVybiBsaWJXZWJSVENEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnkoKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5
PiBmYWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwogfQogCi1HU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZp
Y2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3Vy
Y2VGYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCitHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcm
JiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFy
KiBzb3VyY2VGYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUsIGlu
dCBmZCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUobmFtZSksIFdU
Rk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKICAgICAsIG1fY2FwdHVyZXIobWFr
ZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VGYWN0b3J5LCBkZXZpY2VUeXBl
KSkKICAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VUeXBlKQogewogICAgIGluaXRpYWxpemVEZWJ1
Z0NhdGVnb3J5KCk7Ci0KLSAgICBpZiAoZ19zdHJfZXF1YWwoc291cmNlRmFjdG9yeSwgInBpcGV3
aXJlc3JjIikpIHsKLSAgICAgICAgaWYgKGF1dG8gZmQgPSBwYXJzZUludGVnZXI8aW50PihwZXJz
aXN0ZW50SUQoKSkpCi0gICAgICAgICAgICBtX2NhcHR1cmVyLT5zZXRQaXBld2lyZUZEKCpmZCk7
Ci0gICAgfQorICAgIG1fY2FwdHVyZXItPnNldFBpcGV3aXJlRkQoZmQpOwogICAgIG1fY2FwdHVy
ZXItPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIApAQCAtMjI0LDYgKzIwNCwxMSBAQCB2b2lkIEdT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewogICAgIEdT
VF9JTkZPKCJSZXNldCBoZWlnaHQgYW5kIHdpZHRoIGFmdGVyIHN0b3BwaW5nIHNvdXJjZSIpOwog
ICAgIHNldFNpemUoeyAwLCAwIH0pOworCisgICAgaWYgKGF1dG8gZmQgPSBtX2NhcHR1cmVyLT5w
aXBld2lyZUZEKCkpIHsKKyAgICAgICAgYXV0byYgbWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CisgICAgICAgIG1hbmFnZXIuc3RvcFNv
dXJjZShwZXJzaXN0ZW50SUQoKSk7CisgICAgfQogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGll
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgK
aW5kZXggOWJlMzlkZWEzZTYwNTYwY2U0ZTA2MDQ3YTQ1ODRkNjM1N2U2NjI3My4uYWE4YTkyZTFl
NzVmODgxNmNhZTNiNzMyMzIwYzEwZTRhMDUyYTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMg
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UsIEdTdHJlYW1lckNhcHR1cmVyOjpPYnNlcnZlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShTdHJpbmcm
JiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsK
LSAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUGlwZXdpcmVTb3VyY2UoU3Ry
aW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRz
KiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VP
ckVycm9yIGNyZWF0ZVBpcGV3aXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBpbnQgZmQsIFN0
cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0dXJlRmFj
dG9yeSYgZmFjdG9yeSgpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNv
dXJjZUNhcHNDaGFuZ2VkKGNvbnN0IEdzdENhcHMqKSBmaW5hbDsKIAogcHJvdGVjdGVkOgotICAg
IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYg
bmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VfZmFjdG9yeSwgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZSk7CisgICAgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
KFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29u
c3QgZ2NoYXIqIHNvdXJjZV9mYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBpbnQg
ZmQpOwogICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2
aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCk7CiAgICAgdmlydHVhbCB+R1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlKCk7CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcAppbmRleCBkMWE4MGMy
NDliN2Q1NTA1ZmI4Y2MyNzFmZmYyZWU4NWFmZWE0NWNkLi5hZjY1OWU4NTkxNTZjNTljYjFhNjll
YWM0NDg4NDQzM2E5NjIwNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZXIuY3BwCkBAIC03NSwxMSArNzUsNiBAQCBHc3RWaWRlb0luZm8gR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlcjo6Z2V0QmVzdEZvcm1hdCgpCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLXZvaWQg
R1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0UGlwZXdpcmVGRChpbnQgZmQpCi17Ci0gICAgbV9m
ZCA9IGZkOwotfQotCiBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldFNpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmIChtX2ZkLmhhc192YWx1ZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9DYXB0dXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaAppbmRleCA3MGQzNjUyZGNiNWJjNWUz
YjBlNjM1ZDFjZmEyMmM3ZGNlMTFmOGUwLi5lMDk5NzlkMmNjN2QyYjNiNGFlYzVmZjg3NmRhMGI0
YmY2MmM2MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgK
QEAgLTQzLDcgKzQzLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2V0RnJhbWVSYXRlKGRvdWJsZSk7
CiAgICAgR3N0VmlkZW9JbmZvIGdldEJlc3RGb3JtYXQoKTsKIAotICAgIHZvaWQgc2V0UGlwZXdp
cmVGRChpbnQpOworICAgIHZvaWQgc2V0UGlwZXdpcmVGRChpbnQgZmQpIHsgbV9mZCA9IGZkOyB9
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHBpcGV3aXJlRkQoKSBjb25zdCB7IHJldHVybiBtX2Zk
OyB9CisKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZmQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmlu
ZExJQlBPUlRBTC5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ4MGViYmI4
ZTE0NWY4MTVjNjFiNDMxZTNlM2JmMGQ0MGRhYzZjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQor
KysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0jIC0gVHJ5IHRvIGZpbmQgbGlicG9ydGFs
Ci0jIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQotIwotIyAgTElCUE9SVEFMX0ZPVU5EIC0g
c3lzdGVtIGhhcyBsaWJwb3J0YWwKLSMgIExJQlBPUlRBTF9JTkNMVURFX0RJUlMgLSB0aGUgbGli
cG9ydGFsIGluY2x1ZGUgZGlyZWN0b3JpZXMKLSMgIExJQlBPUlRBTF9MSUJSQVJJRVMgLSBsaW5r
IHRoZXNlIHRvIHVzZSBsaWJwb3J0YWwKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBT
LkwuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTCi0jIElTJycgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0j
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgSVRTCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOwotIyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKLSMgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IKLSMgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgotIyBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotI1s9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVsucnN0OgotRmluZExJQlBPUlRBTAotLS0t
LS0tLS0tLS0tLQotCi1GaW5kIGxpYnBvcnRhbCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMuCi0KLUlt
cG9ydGVkIFRhcmdldHMKLV5eXl5eXl5eXl5eXl5eXl4KLQotYGBMSUJQT1JUQUw6OkxJQlBPUlRB
TGBgCi0gIFRoZSBMSUJQT1JUQUwgbGlicmFyeSwgaWYgZm91bmQuCi0KLVJlc3VsdCBWYXJpYWJs
ZXMKLV5eXl5eXl5eXl5eXl5eXl4KLQotVGhpcyB3aWxsIGRlZmluZSB0aGUgZm9sbG93aW5nIHZh
cmlhYmxlcyBpbiB5b3VyIHByb2plY3Q6Ci0KLWBgTElCUE9SVEFMX0ZPVU5EYGAKLSAgdHJ1ZSBp
ZiAodGhlIHJlcXVlc3RlZCB2ZXJzaW9uIG9mKSBMSUJQT1JUQUwgaXMgYXZhaWxhYmxlLgotYGBM
SUJQT1JUQUxfVkVSU0lPTmBgCi0gIHRoZSB2ZXJzaW9uIG9mIExJQlBPUlRBTC4KLWBgTElCUE9S
VEFMX0xJQlJBUklFU2BgCi0gIHRoZSBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IHRvIHVzZSBM
SUJQT1JUQUwuCi1gYExJQlBPUlRBTF9JTkNMVURFX0RJUlNgYAotICB3aGVyZSB0byBmaW5kIHRo
ZSBMSUJQT1JUQUwgaGVhZGVycy4KLWBgTElCUE9SVEFMX0NPTVBJTEVfT1BUSU9OU2BgCi0gIHRo
aXMgc2hvdWxkIGJlIHBhc3NlZCB0byB0YXJnZXRfY29tcGlsZV9vcHRpb25zKCksIGlmIHRoZQot
ICB0YXJnZXQgaXMgbm90IHVzZWQgZm9yIGxpbmtpbmcKLQotI109PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PV0KLQot
ZmluZF9wYWNrYWdlKFBrZ0NvbmZpZykKLXBrZ19jaGVja19tb2R1bGVzKFBDX0xJQlBPUlRBTCBR
VUlFVCBsaWJwb3J0YWwpCi1zZXQoTElCUE9SVEFMX0NPTVBJTEVfT1BUSU9OUyAke1BDX0xJQlBP
UlRBTF9DRkxBR1NfT1RIRVJ9KQotc2V0KExJQlBPUlRBTF9WRVJTSU9OICR7UENfTElCUE9SVEFM
X1ZFUlNJT059KQotCi1maW5kX3BhdGgoTElCUE9SVEFMX0lOQ0xVREVfRElSCi0gICAgTkFNRVMg
cG9ydGFsLmgKLSAgICBISU5UUyAke1BDX0xJQlBPUlRBTF9JTkNMVURFRElSfQotICAgICAgICAg
ICR7UENfTElCUE9SVEFMX0lOQ0xVREVfRElSU30KLSAgICBQQVRIX1NVRkZJWEVTIGxpYnBvcnRh
bAotKQotCi1maW5kX2xpYnJhcnkoTElCUE9SVEFMX0xJQlJBUlkKLSAgICBOQU1FUyAke0xJQlBP
UlRBTF9OQU1FU30gcG9ydGFsCi0gICAgSElOVFMgJHtQQ19MSUJQT1JUQUxfTElCRElSfQotICAg
ICAgICAgICR7UENfTElCUE9SVEFMX0xJQlJBUllfRElSU30KLSkKLQotaW5jbHVkZShGaW5kUGFj
a2FnZUhhbmRsZVN0YW5kYXJkQXJncykKLWZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJn
cyhMSUJQT1JUQUwKLSAgICBGT1VORF9WQVIgTElCUE9SVEFMX0ZPVU5ECi0gICAgUkVRVUlSRURf
VkFSUyBMSUJQT1JUQUxfSU5DTFVERV9ESVIgTElCUE9SVEFMX0xJQlJBUlkKLSAgICBWRVJTSU9O
X1ZBUiBMSUJQT1JUQUxfVkVSU0lPTgotKQotCi1pZiAoTElCUE9SVEFMX0xJQlJBUlkgQU5EIE5P
VCBUQVJHRVQgTElCUE9SVEFMOjpMSUJQT1JUQUwpCi0gICAgYWRkX2xpYnJhcnkoTElCUE9SVEFM
OjpMSUJQT1JUQUwgVU5LTk9XTiBJTVBPUlRFRCBHTE9CQUwpCi0gICAgc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKExJQlBPUlRBTDo6TElCUE9SVEFMIFBST1BFUlRJRVMKLSAgICAgICAgSU1QT1JURURf
TE9DQVRJT04gIiR7TElCUE9SVEFMX0xJQlJBUll9IgotICAgICAgICBJTlRFUkZBQ0VfQ09NUElM
RV9PUFRJT05TICIke0xJQlBPUlRBTF9DT01QSUxFX09QVElPTlN9IgotICAgICAgICBJTlRFUkZB
Q0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtMSUJQT1JUQUxfSU5DTFVERV9ESVJ9IgotICAgICkK
LWVuZGlmICgpCi0KLW1hcmtfYXNfYWR2YW5jZWQoTElCUE9SVEFMX0lOQ0xVREVfRElSIExJQlBP
UlRBTF9MSUJSQVJZKQotCi1pZiAoTElCUE9SVEFMX0ZPVU5EKQotICAgIHNldChMSUJQT1JUQUxf
TElCUkFSSUVTICR7TElCUE9SVEFMX0xJQlJBUll9KQotICAgIHNldChMSUJQT1JUQUxfSU5DTFVE
RV9ESVJTICR7TElCUE9SVEFMX0lOQ0xVREVfRElSfSkKLWVuZGlmICgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1l
ckNoZWNrcy5jbWFrZQppbmRleCBhZjk2NzRiMTQwYmZjYzE3N2NlYTEwYzI2Zjc4MjlhZmYzMTAw
MDllLi43N2U5NTg0NWU5OTEzYTU5NzhkYWQxMGNmYzQzMDA5M2I0M2M3YWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9H
U3RyZWFtZXJDaGVja3MuY21ha2UKQEAgLTU3LDEyICs1NywzIEBAIGlmIChFTkFCTEVfTUVESUFf
U1RSRUFNIEFORCBFTkFCTEVfV0VCX1JUQykKIGVsc2UgKCkKICAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfTElCV0VCUlRDIEZBTFNFKQogZW5kaWYgKCkKLQotaWYgKEVOQUJMRV9NRURJ
QV9TVFJFQU0pCi0gICAgZmluZF9wYWNrYWdlKExJQlBPUlRBTCkKLSAgICBpZiAoTElCUE9SVEFM
X0ZPVU5EKQotICAgICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUElQRVdJUkUgVFJV
RSkKLSAgICBlbHNlICgpCi0gICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9QSVBF
V0lSRSBGQUxTRSkKLSAgICBlbmRpZiAoKQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCBmNTZhOTcwMjdhNmI0NDlkMDgwZmEzOTQ4YTBjOTNmZTYzOTQy
YjRiLi5iMDI1MWE5Zjk1MGRiYTdiYmI4YmM3ZTJhZWVlNmZmYmU4ODhiOTYyIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTgg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGli
XSBSZW1vdmUgbGlicG9ydGFsIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21ha2U6
IFJlbW92ZWQuCisgICAgICAgICogU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZToK
KwogMjAyMS0wNy0xNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgog
CiAgICAgICAgIFtHVEtdW1dQRV0gU3VwcG9ydCBjb2xvci1zY2hlbWVzIENTUyBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434008</attachid>
            <date>2021-07-22 06:55:09 -0700</date>
            <delta_ts>2021-07-23 02:22:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228056-20210722065507.patch</filename>
            <type>text/plain</type>
            <size>34013</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRhYzMzYjM1OTEyOTczOTZlMTIxNGZh
MjkyMmIwMDhkNzBkNTVkYTguLjRhMWZmNmY1MDc5OWRjMDM0M2I0MDk3ODgwMzc3NjVjNDZhY2Mx
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9ydGFsIGRl
cGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOiBF
bmFibGUgc2NyZWVuIGNhcHR1cmUgb24gR1N0cmVhbWVyCisgICAgICAgIHBvcnRzLiBUaGUgUElQ
RVdJUkUgaWZkZWYgaXMgcmVkdW5kYW50LgorCiAyMDIxLTA3LTIyICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgQ1BVKFJJU0NWNjQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMmQ2NTgyZmNkOTBhMTEzMTg4ZmQ0Y2U4NThmZmIzNTczMWMzM2Y3Ny4uMDNkOTY5MWU3
ZjJkNDc5MDVhNjUzNWQ1NTNiNzlmMmE1ODA2MWYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDIxLTA3LTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR0xpYl0gUmVtb3ZlIGxpYnBvcnRhbCBkZXBlbmRlbmN5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgwNTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHVyZS1HREJ1cyBhcHBy
b2FjaCBhbGxvd3MgdXMgdG8gcmVxdWVzdCB0aGUgaW5wdXQgZGV2aWNlIChNb25pdG9yIG9yIFdp
bmRvdykgZGVwZW5kaW5nCisgICAgICAgIG9uIHRoZSBDYXB0dXJlRGV2aWNlIHR5cGUgYW5kIG1h
a2UgdGhlIG1vdXNlIGN1cnNvciB2aXNpYmxlIGluIHRoZSBnZW5lcmF0ZWQgdmlkZW8gc3RyZWFt
LgorICAgICAgICBBbHNvIHJlcXVlc3RpbmcgY2FwdHVyZSBzdXBwb3J0IHdpdGhpbiBjb21wdXRl
Q2FwdHVyZURldmljZXMoKSB3YXMgYSBiYWQgaWRlYSBiZWNhdXNlIHRoaXMKKyAgICAgICAgYmVp
bmcgdXNlZCBieSB0aGUgZW51bWVyYXRlTWVkaWFEZXZpY2VzIEFQSSBjb3VsZCBwb3RlbnRpYWxs
eSBzcGFtIHRoZSB1c2VyIHdpdGggcGVybWlzc2lvbgorICAgICAgICBwb3B1cHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6
OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNw
bGF5Q2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI6OnN0b3BTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp3YWl0UmVzcG9uc2VTaWduYWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9k
dWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmg6CisKIDIw
MjEtMDctMjIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFBhc3MgdGhlIGZ1bGwgdGFyZ2V0IHBvaW50IHdoZW4gc2Vs
ZWN0aW5nIGEgc25hcCBvZmZzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggYzQy
ZWJlYmEwNjdjMTVkN2Y1ZGMwZTkwYWIzZGI0NTJlOTIyYTRlZC4uNmQzNmEwMWVjNzIzNDc5Njgw
NzcxM2IxYWQzODZlMzBhMTYzMDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAg
LTk0MCw3ICs5NDAsNyBAQCBTY3JlZW5DYXB0dXJlRW5hYmxlZDoKICAgICBXZWJLaXRMZWdhY3k6
CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYktpdDoKLSAgICAgICJQTEFURk9STShNQUMp
IHx8IFVTRShQSVBFV0lSRSkiOiB0cnVlCisgICAgICAiUExBVEZPUk0oTUFDKSB8fCBVU0UoR1NU
UkVBTUVSKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgV2ViQ29yZToKICAgICAg
IGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3Ry
ZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5k
ZXggZTMyOTcxYTRhZjA0NGY2N2Q2YzdmM2NhOTI0OTViNmIwM2JlYzliNS4uNTcxODkzZDU0OTk3
ZDc4MTAxNWQxOTk3NWQyMjhlNzIxNTg5MTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dT
dHJlYW1lci5jbWFrZQpAQCAtNTgsNiArNTgsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJM
RV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAKKyAgICAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAogICAgICAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKQEAgLTE1
MiwxMCArMTUzLDYgQEAgaWYgKEVOQUJMRV9WSURFTykKICAgICAgICAgICAgICAgICAke0dTVFJF
QU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTfQogICAgICAgICAgICAgKQogICAgICAgICBlbmRp
ZiAoKQotCi0gICAgICAgIGlmIChVU0VfUElQRVdJUkUpCi0gICAgICAgICAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0xJQlJBUklFUyBMSUJQT1JUQUw6OkxJQlBPUlRBTCkKLSAgICAgICAgZW5kaWYg
KCkKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggYTIzNTE1M2M3NGZkNGZhOTZi
ZjE3MDc2YWNjYWNlYzYzZDhlZTU1ZC4uZDBiZjhmOGJlODA0NjkzMTJiZGM5NjcxNjU1ODFmZDc1
NjI2MDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2Fw
dHVyZURldmljZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02NCwxMiArNjMsNiBAQCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyJiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwog
ICAgIHJldHVybiBtYW5hZ2VyOwogfQogCi1HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXImIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkK
LXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyPiBtYW5hZ2VyOwotICAgIHJldHVybiBtYW5hZ2VyOwotfQotCiBHU3RyZWFtZXJD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsK
ICAgICBpZiAobV9kZXZpY2VNb25pdG9yKQpAQCAtMjAzLDk3ICsxOTYsNiBAQCB2b2lkIEdTdHJl
YW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVyZURldmljZXMoKQogICAgIH0K
IH0KIAotR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpHU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAgICBtX3Bv
cnRhbCA9IGFkb3B0R1JlZih4ZHBfcG9ydGFsX25ldygpKTsKLSNlbmRpZgotfQotCi1HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6On5HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURl
dmljZU1hbmFnZXIoKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAgICBpZiAobV9zZXNzaW9uKSB7
Ci0gICAgICAgIHhkcF9zZXNzaW9uX2Nsb3NlKG1fc2Vzc2lvbi5nZXQoKSk7Ci0gICAgICAgIG1f
c2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgR1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQotewotI2lmIFVTRShQSVBFV0lSRSkKLSAgICBt
X2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgeGRwX3BvcnRhbF9jcmVhdGVfc2Ny
ZWVuY2FzdF9zZXNzaW9uKG1fcG9ydGFsLmdldCgpLCBzdGF0aWNfY2FzdDxYZHBPdXRwdXRUeXBl
PihYRFBfT1VUUFVUX01PTklUT1IgfCBYRFBfT1VUUFVUX1dJTkRPVyksIFhEUF9TQ1JFRU5DQVNU
X0ZMQUdfTk9ORSwgbnVsbHB0ciwgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKLSAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgICAgICBhdXRvKiBzZXNzaW9uID0geGRwX3BvcnRhbF9jcmVhdGVfc2NyZWVu
Y2FzdF9zZXNzaW9uX2ZpbmlzaChYRFBfUE9SVEFMKHNvdXJjZSksIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKTsKLSAgICAgICAgaWYgKCFzZXNzaW9uKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBjcmVhdGUgc2NyZWVuY2FzdCBzZXNzaW9uOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhdXRvJiBtYW5h
Z2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyKj4odXNlckRhdGEpOwotICAgICAgICBtYW5hZ2VyLnNldFNlc3Npb24oc2Vzc2lvbik7Ci0g
ICAgfSwgdGhpcyk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGNhbGxi
YWNrKCk7Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShQSVBFV0lSRSkKLXZvaWQgR1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRTZXNzaW9uKFhkcFNlc3Npb24qIHNlc3Npb24p
Ci17Ci0gICAgQVNTRVJUKHNlc3Npb24pOwotICAgIG1fc2Vzc2lvbiA9IGFkb3B0R1JlZihzZXNz
aW9uKTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3Nlc3Npb24uZ2V0KCksICJj
bG9zZWQiLCBHX0NBTExCQUNLKCtbXShHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFn
ZXIqIG1hbmFnZXIsIFhkcFNlc3Npb24qKSB7Ci0gICAgICAgIG1hbmFnZXItPnNlc3Npb25XYXND
bG9zZWQoKTsKLSAgICB9KSwgdGhpcyk7Ci0gICAgeGRwX3Nlc3Npb25fc3RhcnQobV9zZXNzaW9u
LmdldCgpLCBudWxscHRyLCBudWxscHRyLCBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewotICAgICAgICBhdXRvKiBzZXNzaW9uID0g
WERQX1NFU1NJT04oc291cmNlKTsKLSAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwotICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOwotICAgICAgICBpZiAoIXhkcF9z
ZXNzaW9uX3N0YXJ0X2ZpbmlzaChzZXNzaW9uLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpIHsK
LSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHN0YXJ0IHNjcmVlbmNhc3Qgc2Vz
c2lvbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICAgICBtYW5hZ2VyLm5vdGlmeUNs
aWVudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbWFuYWdl
ci5zZXNzaW9uU3RhcnRlZCgpOwotICAgIH0sIHRoaXMpOwotfQotI2VuZGlmCi0KLXZvaWQgR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3RhcnRlZCgpCi17Ci0g
ICAgbV9kZXZpY2VzLmNsZWFyKCk7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgIGludCBmZCA9IHhk
cF9zZXNzaW9uX29wZW5fcGlwZXdpcmVfcmVtb3RlKG1fc2Vzc2lvbi5nZXQoKSk7Ci0KLSAgICAv
LyBGSVhNRTogVGhlIGxpYnBvcnRhbCBBUEkgZG9lc24ndCBzZWVtIHRvIGV4cG9zZSB3aGljaCBY
ZHBPdXRwdXRUeXBlIHdhcyBzZWxlY3RlZCBieSB0aGUKLSAgICAvLyB1c2VyLCBzbyBoYXJkY29k
ZSBTY3JlZW4gaGVyZS4g8J+ktwotICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZShXVEY6
Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihmZCksIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBEaXNwbGF5IikpOwotICAgIGNhcHR1
cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICBtX2RldmljZXMuYXBwZW5kKFdURk1vdmUo
Y2FwdHVyZURldmljZSkpOwotI2VuZGlmCi0gICAgbm90aWZ5Q2xpZW50KCk7Ci19Ci0KLXZvaWQg
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpub3RpZnlDbGllbnQoKQotewot
ICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICBtX2NhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uV2FzQ2xvc2VkKCkKLXsK
LSNpZiBVU0UoUElQRVdJUkUpCi0gICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKLSNlbmRpZgotICAg
IG1fZGV2aWNlcy5jbGVhcigpOwotICAgIGRldmljZUNoYW5nZWQoKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdT
VFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKaW5kZXggOTUzOTgxYWU4NjJkMDhiNzU3YTQ0ZTVmMzkwMDAwMzMwZjY1ZjYzMC4u
NWNmODc4MjJkZWIxZGZiN2E0ZTdhZTg0ZmFlNTMwYzcwOWRkNTM1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsy
OCw2IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2VGYWN0b3J5LmgiCiAKLSNpZiBVU0UoUElQRVdJUkUpCi0jaW5jbHVk
ZSA8bGlicG9ydGFsL3BvcnRhbC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIgOiBwdWJsaWMgQ2FwdHVyZURldmlj
ZU1hbmFnZXIgewpAQCAtNzYsMjYgKzcyLDQ2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKICAgICBjb25zdCBW
ZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWwgeyByZXR1cm4gbV9k
ZXZpY2VzOyB9OwogICAgIHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlz
cGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMqKTsKKworICAgIGVudW0gUGlwZVdpcmVPdXRwdXRUeXBlIHsKKyAgICAgICAgTW9uaXRv
ciA9IDEgPDwgMCwKKyAgICAgICAgV2luZG93ID0gMSA8PCAxCisgICAgfTsKKworICAgIHZvaWQg
c3RvcFNvdXJjZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCk7CiAKIHByb3RlY3RlZDoKLSNp
ZiBVU0UoUElQRVdJUkUpCi0gICAgdm9pZCBzZXRTZXNzaW9uKFhkcFNlc3Npb24qKTsKLSNlbmRp
ZgotICAgIHZvaWQgc2Vzc2lvblN0YXJ0ZWQoKTsKLSAgICB2b2lkIG5vdGlmeUNsaWVudCgpOwot
ICAgIHZvaWQgc2Vzc2lvbldhc0Nsb3NlZCgpOworICAgIHZvaWQgbm90aWZ5UmVzcG9uc2UoKSB7
IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2soKTsgfQogCiBwcml2YXRlOgogICAgIEdTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwogICAgIH5HU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXIoKTsKIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gbV9j
YWxsYmFjazsKKyAgICB2b2lkIHdhaXRSZXNwb25zZVNpZ25hbChjb25zdCBjaGFyKiBvYmplY3RQ
YXRoKTsKKwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7Ci0jaWYgVVNFKFBJ
UEVXSVJFKQotICAgIEdSZWZQdHI8WGRwUG9ydGFsPiBtX3BvcnRhbDsKLSAgICBHUmVmUHRyPFhk
cFNlc3Npb24+IG1fc2Vzc2lvbjsKLSNlbmRpZgorCisgICAgc3RydWN0IFNlc3Npb24geworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNlc3Npb24pOworICAgICAgICBTZXNzaW9uKGludCBmZCwgU3RyaW5nJiYgcGF0
aCkKKyAgICAgICAgICAgIDogZmQoZmQpCisgICAgICAgICAgICAsIHBhdGgoV1RGTW92ZShwYXRo
KSkgeyB9CisKKyAgICAgICAgflNlc3Npb24oKQorICAgICAgICB7CisgICAgICAgICAgICBjbG9z
ZShmZCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZmQ7CisgICAgICAgIFN0cmluZyBwYXRo
OworICAgIH07CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uPj4g
bV9zZXNzaW9uczsKKworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gbV9wcm94eTsKKyAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2s7CiB9OwogfQog
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgICYmIFVTRShHU1RSRUFNRVIpCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJE
aXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjdkM2RjNzVkZDQ1Y2QxMGM5YzU5ZTUwN2UwYTg3NGFmNDc3MjUz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC0w
LDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCisgKiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+
CisgKiBBdXRob3I6IEFsZWphbmRybyBHLiBDYXN0cm8gPGFsZXhAaWdhbGlhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoR1NUUkVBTUVS
KQorI2luY2x1ZGUgIkdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCIKKyNpbmNsdWRlIDxnaW8vZ3VuaXhmZGxpc3QuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBTZWNvbmRzIHNfZGJ1c0Nh
bGxUaW1lb3V0ID0gMTBfbXM7CisKK0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdl
ciYgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0dTdHJlYW1lckRpc3Bs
YXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyKCkKK3sKK30KKworR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+R1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHNv
dXJjZUlkIDogbV9zZXNzaW9ucy5rZXlzKCkpCisgICAgICAgIHN0b3BTb3VyY2Uoc291cmNlSWQp
OworfQorCit2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0
ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sK
KyAgICBtX2RldmljZXMuY2xlYXIoKTsKKworICAgIENhcHR1cmVEZXZpY2Ugc2NyZWVuQ2FwdHVy
ZURldmljZShXVEY6OmNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIpKTsKKyAgICBz
Y3JlZW5DYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgbV9kZXZpY2VzLmFwcGVu
ZChXVEZNb3ZlKHNjcmVlbkNhcHR1cmVEZXZpY2UpKTsKKyAgICBjYWxsYmFjaygpOworfQorCitD
YXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6
OmNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwg
Y29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7CisgICAgY29uc3QgYXV0byBp
dCA9IG1fc2Vzc2lvbnMuZmluZChkZXZpY2UucGVyc2lzdGVudElkKCkpOworICAgIGlmIChpdCAh
PSBtX3Nlc3Npb25zLmVuZCgpKSB7CisgICAgICAgIHJldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJlU291cmNlKGRldmljZS5wZXJzaXN0ZW50SWQoKS5pc29s
YXRlZENvcHkoKSwKKyAgICAgICAgICAgIGl0LT52YWx1ZS0+ZmQsIHsgfSwgY29uc3RyYWludHMs
IGRldmljZS50eXBlKCkpOworICAgIH0KKworICAgIG1fcHJveHkgPSBhZG9wdEdSZWYoZ19kYnVz
X3Byb3h5X25ld19mb3JfYnVzX3N5bmMoR19CVVNfVFlQRV9TRVNTSU9OLAorICAgICAgICBzdGF0
aWNfY2FzdDxHREJ1c1Byb3h5RmxhZ3M+KEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfQ09OTkVD
VF9TSUdOQUxTIHwgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9MT0FEX1BST1BFUlRJRVMpLCBu
dWxscHRyLAorICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiwgIi9vcmcv
ZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3Jl
ZW5DYXN0IiwgbnVsbHB0ciwgbnVsbHB0cikpOworCisgICAgYXV0byB0b2tlbiA9IG1ha2VTdHJp
bmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAgICBhdXRvIHNlc3Npb25U
b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAg
ICBHVmFyaWFudEJ1aWxkZXIgb3B0aW9uczsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZv
cHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9h
ZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5n
KHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRp
b25zLCAie3N2fSIsICJzZXNzaW9uX2hhbmRsZV90b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5n
KHNlc3Npb25Ub2tlbi5hc2NpaSgpLmRhdGEoKSkpOworCisgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxs
X3N5bmMobV9wcm94eS5nZXQoKSwgIkNyZWF0ZVNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIoYXtz
dn0pIiwgJm9wdGlvbnMpLAorICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCBzX2RidXND
YWxsVGltZW91dC5taWxsaXNlY29uZHNBczxpbnQ+KCksIG51bGxwdHIsICZlcnJvci5vdXRQdHIo
KSkpOworCisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBvYmplY3RQYXRoOworICAgIGdfdmFyaWFu
dF9nZXQocmVzdWx0LmdldCgpLCAiKG8pIiwgJm9iamVjdFBhdGgub3V0UHRyKCkpOworICAgIHdh
aXRSZXNwb25zZVNpZ25hbChvYmplY3RQYXRoLmdldCgpKTsKKworICAgIFN0cmluZyByZXF1ZXN0
UGF0aChvYmplY3RQYXRoLmdldCgpKTsKKyAgICBhdXRvIHNlc3Npb25QYXRoID0gcmVxdWVzdFBh
dGgucmVwbGFjZSgiL3JlcXVlc3QvIiwgIi9zZXNzaW9uLyIpLnJlcGxhY2UodG9rZW4sIHNlc3Np
b25Ub2tlbik7CisKKyAgICAvLyBGSVhNRTogTWF5YmUgY2hlY2sgdGhpcyBkZXBlbmRpbmcgb24g
ZGV2aWNlLnR5cGUoKS4KKyAgICBhdXRvIG91dHB1dFR5cGUgPSBHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlwZTo6TW9uaXRvciB8IEdTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6UGlwZVdpcmVPdXRwdXRUeXBlOjpXaW5kb3c7
CisKKyAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQz
MigpKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQ
RV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9Iiwg
ImhhbmRsZV90b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgp
KSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJ0eXBlcyIs
IGdfdmFyaWFudF9uZXdfdWludDMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihvdXRwdXRUeXBlKSkp
OworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAibXVsdGlwbGUi
LCBnX3ZhcmlhbnRfbmV3X2Jvb2xlYW4oZmFsc2UpKTsKKworICAgIGF1dG8gcHJvcGVydGllc1Jl
c3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1fcHJveHkuZ2V0KCksICJv
cmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzLkdldCIsCisgICAgICAgIGdfdmFyaWFudF9u
ZXcoIihzcykiLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5DYXN0IiwgInZlcnNpb24i
KSwgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgc19kYnVzQ2FsbFRpbWVvdXQubWls
bGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgaWYgKHByb3BlcnRp
ZXNSZXN1bHQpIHsKKyAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcHJvcGVydHk7CisgICAgICAg
IGdfdmFyaWFudF9nZXQocHJvcGVydGllc1Jlc3VsdC5nZXQoKSwgIih2KSIsICZwcm9wZXJ0eS5v
dXRQdHIoKSk7CisgICAgICAgIGlmIChnX3ZhcmlhbnRfZ2V0X3VpbnQzMihwcm9wZXJ0eS5nZXQo
KSkgPj0gMikgeworICAgICAgICAgICAgLy8gRW5hYmxlIGVtYmVkZGVkIGN1cnNvci4gRklYTUU6
IFNob3VsZCBiZSBjaGVja2VkIGluIHRoZSBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIGdfdmFy
aWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAiY3Vyc29yX21vZGUiLCBnX3Zhcmlh
bnRfbmV3X3VpbnQzMigyKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBhZG9w
dEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhtX3Byb3h5LmdldCgpLCAiU2VsZWN0U291cmNl
cyIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihvYXtzdn0pIiwgc2Vzc2lvblBhdGguYXNjaWko
KS5kYXRhKCksICZvcHRpb25zKSwgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwgc19kYnVzQ2FsbFRp
bWVvdXQubWlsbGlzZWNvbmRzQXM8aW50PigpLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTZWxlY3RTb3VyY2VzIGVy
cm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KyAgICBnX3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihvKSIsICZvYmplY3RQYXRoLm91dFB0
cigpKTsKKyAgICB3YWl0UmVzcG9uc2VTaWduYWwob2JqZWN0UGF0aC5nZXQoKSk7CisKKyAgICB0
b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNU
KTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90
b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CisgICAg
cmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQoKSwg
IlN0YXJ0IiwKKyAgICAgICAgZ192YXJpYW50X25ldygiKG9zYXtzdn0pIiwgc2Vzc2lvblBhdGgu
YXNjaWkoKS5kYXRhKCksICIiLCAmb3B0aW9ucyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIHNf
ZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgJmVycm9yLm91
dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiU3RhcnQg
ZXJyb3I6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorCisgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIobykiLCAmb2JqZWN0UGF0aC5v
dXRQdHIoKSk7CisgICAgd2FpdFJlc3BvbnNlU2lnbmFsKG9iamVjdFBhdGguZ2V0KCkpOworCisg
ICAgR1JlZlB0cjxHVW5peEZETGlzdD4gZmRMaXN0OworICAgIGludCBmZCA9IC0xOworICAgIGdf
dmFyaWFudF9idWlsZGVyX2luaXQoJm9wdGlvbnMsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpOwor
ICAgIHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF93aXRoX3VuaXhfZmRfbGlz
dF9zeW5jKG1fcHJveHkuZ2V0KCksICJPcGVuUGlwZVdpcmVSZW1vdGUiLAorICAgICAgICBnX3Zh
cmlhbnRfbmV3KCIob2F7c3Z9KSIsIHNlc3Npb25QYXRoLmFzY2lpKCkuZGF0YSgpLCAmb3B0aW9u
cyksIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIHNfZGJ1c0NhbGxUaW1lb3V0Lm1pbGxpc2Vjb25k
c0FzPGludD4oKSwgbnVsbHB0ciwgJmZkTGlzdC5vdXRQdHIoKSwgbnVsbHB0ciwgJmVycm9yLm91
dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5hYmxl
IHRvIHJlcXVlc3QgZGlzcGxheSBjYXB0dXJlLiBFcnJvcjogJXMiLCBlcnJvci0+bWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaW50IGZkT3V0OworICAgIGdfdmFy
aWFudF9nZXQocmVzdWx0LmdldCgpLCAiKGgpIiwgJmZkT3V0KTsKKyAgICBmZCA9IGdfdW5peF9m
ZF9saXN0X2dldChmZExpc3QuZ2V0KCksIGZkT3V0LCBudWxscHRyKTsKKworICAgIGF1dG8gc2Vz
c2lvbiA9IFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFn
ZXI6OlNlc3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7CisgICAgbV9zZXNzaW9ucy5h
ZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCgpLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICByZXR1cm4g
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2Uu
cGVyc2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIGZkLCB7IH0sIGNvbnN0cmFpbnRzLCBkZXZp
Y2UudHlwZSgpKTsKK30KKwordm9pZCBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFn
ZXI6OnN0b3BTb3VyY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpCit7CisgICAgYXV0byBz
ZXNzaW9uID0gbV9zZXNzaW9ucy50YWtlKHBlcnNpc3RlbnRJRCk7CisgICAgYXV0byBwcm94eSA9
IGFkb3B0R1JlZihnX2RidXNfcHJveHlfbmV3X2Zvcl9idXNfc3luYyhHX0JVU19UWVBFX1NFU1NJ
T04sCisgICAgICAgIHN0YXRpY19jYXN0PEdEQnVzUHJveHlGbGFncz4oR19EQlVTX1BST1hZX0ZM
QUdTX0RPX05PVF9DT05ORUNUX1NJR05BTFMgfCBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0xP
QURfUFJPUEVSVElFUyksIG51bGxwdHIsCisgICAgICAgICJvcmcuZnJlZWRlc2t0b3AucG9ydGFs
LkRlc2t0b3AiLCBzZXNzaW9uLT5wYXRoLmFzY2lpKCkuZGF0YSgpLCAib3JnLmZyZWVkZXNrdG9w
LnBvcnRhbC5TZXNzaW9uIiwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMocHJveHkuZ2V0KCksICJDbG9zZSIsIG51
bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAgICAgIHNfZGJ1c0NhbGxUaW1lb3V0
Lm1pbGxpc2Vjb25kc0FzPGludD4oKSwgbnVsbHB0ciwgbnVsbHB0cikpOworfQorCit2b2lkIEdT
dHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6d2FpdFJlc3BvbnNlU2lnbmFsKGNv
bnN0IGNoYXIqIG9iamVjdFBhdGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudFJl
c3BvbnNlQ2FsbGJhY2spOworICAgIG1fY3VycmVudFJlc3BvbnNlQ2FsbGJhY2sgPSBbXSB7IH07
CisgICAgYXV0byogY29ubmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihtX3By
b3h5LmdldCgpKTsKKyAgICBhdXRvIHNpZ25hbElkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFs
X3N1YnNjcmliZShjb25uZWN0aW9uLCAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiwg
Im9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIsCisgICAgICAgICJSZXNwb25zZSIsIG9i
amVjdFBhdGgsIG51bGxwdHIsIEdfREJVU19TSUdOQUxfRkxBR1NfTk9fTUFUQ0hfUlVMRSwgcmVp
bnRlcnByZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxiYWNrPigrW10oR0RCdXNDb25uZWN0aW9uKiwg
Y29uc3QgY2hhciogLyogc2VuZGVyTmFtZSAqLywgY29uc3QgY2hhciogLyogb2JqZWN0UGF0aCAq
LywgY29uc3QgY2hhciogLyogaW50ZXJmYWNlTmFtZSAqLywgY29uc3QgY2hhciogLyogc2lnbmFs
TmFtZSAqLywgR1ZhcmlhbnQqIC8qIHBhcmFtZXRlcnMgKi8sIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgICAgICBhdXRvJiBtYW5hZ2VyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpOworICAgICAgICAgICAgbWFu
YWdlci5ub3RpZnlSZXNwb25zZSgpOworICAgICAgICB9KSwgdGhpcywgbnVsbHB0cik7CisKKyAg
ICB3aGlsZSAobV9jdXJyZW50UmVzcG9uc2VDYWxsYmFjaykKKyAgICAgICAgZ19tYWluX2NvbnRl
eHRfaXRlcmF0aW9uKG51bGxwdHIsIGZhbHNlKTsKKworICAgIGdfZGJ1c19jb25uZWN0aW9uX3Np
Z25hbF91bnN1YnNjcmliZShjb25uZWN0aW9uLCBzaWduYWxJZCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RS
RUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCmluZGV4IGRlNTg4ZDZhNDA1ZGQ0OGVlZTBhYTc0YjAyYWIxNmZhNGVkMzNhYzUuLjBl
ZDdmNWFiNDk3MWViMzNhYTBlNDIwMjE4MzgyMjM4ZGNhZTQwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9h
cHAvZ3N0YXBwc2luay5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCwzNCArNjksMTcgQEAgcHJp
dmF0ZToKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdl
cigpIGZpbmFsIHsgcmV0dXJuIEdTdHJlYW1lclZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpOyB9CiB9OwogCi1WaWRlb0NhcHR1cmVGYWN0b3J5JiBsaWJXZWJSVENWaWRlb0Nh
cHR1cmVTb3VyY2VGYWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeT4gZmFjdG9yeTsKLSAgICByZXR1cm4gZmFjdG9y
eS5nZXQoKTsKLX0KLQogY2xhc3MgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5
IGZpbmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVy
ZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmlu
YWwKICAgICB7Ci0jaWYgVVNFKFBJUEVXSVJFKQotICAgICAgICByZXR1cm4gR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lzdGVudElk
KCkuaXNvbGF0ZWRDb3B5KCksIHsgfSwgY29uc3RyYWludHMsIGRldmljZS50eXBlKCkpOwotI2Vs
c2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRldmljZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShj
b25zdHJhaW50cyk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0jZW5kaWYKKyAgICAgICAgYXV0byYg
bWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9u
KCk7CisgICAgICAgIHJldHVybiBtYW5hZ2VyLmNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGRl
dmljZSwgY29uc3RyYWludHMpOwogICAgIH0KIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZU1h
bmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIEdTdHJl
YW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7IH0KIH07CiAKLURp
c3BsYXlDYXB0dXJlRmFjdG9yeSYgbGliV2ViUlRDRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVT
b3VyY2VGYWN0b3J5PiBmYWN0b3J5OwotICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwotfQotCiBD
YXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMqIGNvbnN0cmFpbnRzKQogewogICAgIGF1dG8gZGV2aWNlID0gR1N0cmVhbWVyVmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ3N0cmVhbWVyRGV2aWNlV2l0aFVJRChkZXZp
Y2VJRCk7CkBAIC0xMTQsOSArOTYsOSBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaQogICAgIHJl
dHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQogCi1DYXB0dXJl
U291cmNlT3JFcnJvciBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJl
U291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFD
b25zdHJhaW50cyogY29uc3RyYWludHMsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNl
VHlwZSkKK0NhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIGludCBmZCwgU3RyaW5nJiYg
aGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJl
ZigqbmV3IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgeyB9
LCBXVEZNb3ZlKGhhc2hTYWx0KSwgInBpcGV3aXJlc3JjIiwgZGV2aWNlVHlwZSkpOworICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoV1RG
TW92ZShkZXZpY2VJRCksIHsgfSwgV1RGTW92ZShoYXNoU2FsdCksICJwaXBld2lyZXNyYyIsIGRl
dmljZVR5cGUsIGZkKSk7CiAgICAgaWYgKGNvbnN0cmFpbnRzKSB7CiAgICAgICAgIGlmIChhdXRv
IHJlc3VsdCA9IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQogICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0LT5iYWRDb25zdHJhaW50KTsKQEAgLTEyNiwyNSAr
MTA4LDIzIEBAIENhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYKIAogVmlkZW9DYXB0dXJlRmFjdG9yeSYg
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIHsKLSAgICByZXR1cm4gbGli
V2ViUlRDVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OworICAgIHJl
dHVybiBmYWN0b3J5LmdldCgpOwogfQogCiBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheUZhY3RvcnkoKQogewotICAgIHJldHVybiBsaWJX
ZWJSVENEaXNwbGF5Q2FwdHVyZVNvdXJjZUZhY3RvcnkoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVTb3VyY2VGYWN0b3J5PiBmYWN0b3J5OworICAg
IHJldHVybiBmYWN0b3J5LmdldCgpOwogfQogCi1HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYg
bmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VGYWN0b3J5LCBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCitHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VGYWN0b3J5
LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUsIGludCBmZCkKICAgICA6IFJl
YWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUobmFtZSksIFdURk1vdmUoZGV2aWNlSUQp
LCBXVEZNb3ZlKGhhc2hTYWx0KSkKICAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VGYWN0b3J5LCBkZXZpY2VUeXBlKSkKICAgICAsIG1fZGV2
aWNlVHlwZShkZXZpY2VUeXBlKQogewogICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7Ci0K
LSAgICBpZiAoZ19zdHJfZXF1YWwoc291cmNlRmFjdG9yeSwgInBpcGV3aXJlc3JjIikpIHsKLSAg
ICAgICAgaWYgKGF1dG8gZmQgPSBwYXJzZUludGVnZXI8aW50PihwZXJzaXN0ZW50SUQoKSkpCi0g
ICAgICAgICAgICBtX2NhcHR1cmVyLT5zZXRQaXBld2lyZUZEKCpmZCk7Ci0gICAgfQorICAgIG1f
Y2FwdHVyZXItPnNldFBpcGV3aXJlRkQoZmQpOwogICAgIG1fY2FwdHVyZXItPmFkZE9ic2VydmVy
KCp0aGlzKTsKIH0KIApAQCAtMjI0LDYgKzIwNCwxMSBAQCB2b2lkIEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewogICAgIEdTVF9JTkZPKCJSZXNldCBo
ZWlnaHQgYW5kIHdpZHRoIGFmdGVyIHN0b3BwaW5nIHNvdXJjZSIpOwogICAgIHNldFNpemUoeyAw
LCAwIH0pOworCisgICAgaWYgKGF1dG8gZmQgPSBtX2NhcHR1cmVyLT5waXBld2lyZUZEKCkpIHsK
KyAgICAgICAgYXV0byYgbWFuYWdlciA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCk7CisgICAgICAgIG1hbmFnZXIuc3RvcFNvdXJjZShwZXJzaXN0ZW50
SUQoKSk7CisgICAgfQogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggOWJlMzlkZWEz
ZTYwNTYwY2U0ZTA2MDQ3YTQ1ODRkNjM1N2U2NjI3My4uYWE4YTkyZTFlNzVmODgxNmNhZTNiNzMy
MzIwYzEwZTRhMDUyYTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2UsIEdTdHJlYW1lckNhcHR1cmVyOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3Ry
aW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUGlwZXdpcmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQs
IFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSk7CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVBp
cGV3aXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBpbnQgZmQsIFN0cmluZyYmIGhhc2hTYWx0
LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgp
OwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZUNhcHNDaGFuZ2Vk
KGNvbnN0IEdzdENhcHMqKSBmaW5hbDsKIAogcHJvdGVjdGVkOgotICAgIEdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYg
aGFzaFNhbHQsIGNvbnN0IGdjaGFyKiBzb3VyY2VfZmFjdG9yeSwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSk7CisgICAgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmlj
ZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIqIHNvdXJj
ZV9mYWN0b3J5LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBpbnQgZmQpOwogICAgIEdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBTdHJpbmcmJiBo
YXNoU2FsdCk7CiAgICAgdmlydHVhbCB+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKCk7CiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcAppbmRleCBkMWE4MGMyNDliN2Q1NTA1ZmI4Y2My
NzFmZmYyZWU4NWFmZWE0NWNkLi5hZjY1OWU4NTkxNTZjNTljYjFhNjllYWM0NDg4NDQzM2E5NjIw
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwCkBA
IC03NSwxMSArNzUsNiBAQCBHc3RWaWRlb0luZm8gR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Z2V0
QmVzdEZvcm1hdCgpCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLXZvaWQgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlcjo6c2V0UGlwZXdpcmVGRChpbnQgZmQpCi17Ci0gICAgbV9mZCA9IGZkOwotfQotCiBi
b29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogewogICAgIGlmIChtX2ZkLmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZXIuaAppbmRleCA3MGQzNjUyZGNiNWJjNWUzYjBlNjM1ZDFjZmEyMmM3
ZGNlMTFmOGUwLi5lMDk5NzlkMmNjN2QyYjNiNGFlYzVmZjg3NmRhMGI0YmY2MmM2MjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKQEAgLTQzLDcgKzQzLDkg
QEAgcHVibGljOgogICAgIGJvb2wgc2V0RnJhbWVSYXRlKGRvdWJsZSk7CiAgICAgR3N0VmlkZW9J
bmZvIGdldEJlc3RGb3JtYXQoKTsKIAotICAgIHZvaWQgc2V0UGlwZXdpcmVGRChpbnQpOworICAg
IHZvaWQgc2V0UGlwZXdpcmVGRChpbnQgZmQpIHsgbV9mZCA9IGZkOyB9CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHBpcGV3aXJlRkQoKSBjb25zdCB7IHJldHVybiBtX2ZkOyB9CisKIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL0ZpbmRMSUJQT1JUQUwuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFr
ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ4MGViYmI4ZTE0NWY4MTVjNjFiNDMx
ZTNlM2JmMGQ0MGRhYzZjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZExJQlBPUlRBTC5jbWFrZQorKysgL2Rldi9udWxsCkBA
IC0xLDEwMSArMCwwIEBACi0jIC0gVHJ5IHRvIGZpbmQgbGlicG9ydGFsCi0jIE9uY2UgZG9uZSwg
dGhpcyB3aWxsIGRlZmluZQotIwotIyAgTElCUE9SVEFMX0ZPVU5EIC0gc3lzdGVtIGhhcyBsaWJw
b3J0YWwKLSMgIExJQlBPUlRBTF9JTkNMVURFX0RJUlMgLSB0aGUgbGlicG9ydGFsIGluY2x1ZGUg
ZGlyZWN0b3JpZXMKLSMgIExJQlBPUlRBTF9MSUJSQVJJRVMgLSBsaW5rIHRoZXNlIHRvIHVzZSBs
aWJwb3J0YWwKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTCi0jIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgSVRTCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOwotIyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKLSMgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKLSMgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRgotIyBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
I1s9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PVsucnN0OgotRmluZExJQlBPUlRBTAotLS0tLS0tLS0tLS0tLQotCi1G
aW5kIGxpYnBvcnRhbCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMuCi0KLUltcG9ydGVkIFRhcmdldHMK
LV5eXl5eXl5eXl5eXl5eXl4KLQotYGBMSUJQT1JUQUw6OkxJQlBPUlRBTGBgCi0gIFRoZSBMSUJQ
T1JUQUwgbGlicmFyeSwgaWYgZm91bmQuCi0KLVJlc3VsdCBWYXJpYWJsZXMKLV5eXl5eXl5eXl5e
Xl5eXl4KLQotVGhpcyB3aWxsIGRlZmluZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3Vy
IHByb2plY3Q6Ci0KLWBgTElCUE9SVEFMX0ZPVU5EYGAKLSAgdHJ1ZSBpZiAodGhlIHJlcXVlc3Rl
ZCB2ZXJzaW9uIG9mKSBMSUJQT1JUQUwgaXMgYXZhaWxhYmxlLgotYGBMSUJQT1JUQUxfVkVSU0lP
TmBgCi0gIHRoZSB2ZXJzaW9uIG9mIExJQlBPUlRBTC4KLWBgTElCUE9SVEFMX0xJQlJBUklFU2Bg
Ci0gIHRoZSBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IHRvIHVzZSBMSUJQT1JUQUwuCi1gYExJ
QlBPUlRBTF9JTkNMVURFX0RJUlNgYAotICB3aGVyZSB0byBmaW5kIHRoZSBMSUJQT1JUQUwgaGVh
ZGVycy4KLWBgTElCUE9SVEFMX0NPTVBJTEVfT1BUSU9OU2BgCi0gIHRoaXMgc2hvdWxkIGJlIHBh
c3NlZCB0byB0YXJnZXRfY29tcGlsZV9vcHRpb25zKCksIGlmIHRoZQotICB0YXJnZXQgaXMgbm90
IHVzZWQgZm9yIGxpbmtpbmcKLQotI109PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PV0KLQotZmluZF9wYWNrYWdlKFBr
Z0NvbmZpZykKLXBrZ19jaGVja19tb2R1bGVzKFBDX0xJQlBPUlRBTCBRVUlFVCBsaWJwb3J0YWwp
Ci1zZXQoTElCUE9SVEFMX0NPTVBJTEVfT1BUSU9OUyAke1BDX0xJQlBPUlRBTF9DRkxBR1NfT1RI
RVJ9KQotc2V0KExJQlBPUlRBTF9WRVJTSU9OICR7UENfTElCUE9SVEFMX1ZFUlNJT059KQotCi1m
aW5kX3BhdGgoTElCUE9SVEFMX0lOQ0xVREVfRElSCi0gICAgTkFNRVMgcG9ydGFsLmgKLSAgICBI
SU5UUyAke1BDX0xJQlBPUlRBTF9JTkNMVURFRElSfQotICAgICAgICAgICR7UENfTElCUE9SVEFM
X0lOQ0xVREVfRElSU30KLSAgICBQQVRIX1NVRkZJWEVTIGxpYnBvcnRhbAotKQotCi1maW5kX2xp
YnJhcnkoTElCUE9SVEFMX0xJQlJBUlkKLSAgICBOQU1FUyAke0xJQlBPUlRBTF9OQU1FU30gcG9y
dGFsCi0gICAgSElOVFMgJHtQQ19MSUJQT1JUQUxfTElCRElSfQotICAgICAgICAgICR7UENfTElC
UE9SVEFMX0xJQlJBUllfRElSU30KLSkKLQotaW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5k
YXJkQXJncykKLWZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhMSUJQT1JUQUwKLSAg
ICBGT1VORF9WQVIgTElCUE9SVEFMX0ZPVU5ECi0gICAgUkVRVUlSRURfVkFSUyBMSUJQT1JUQUxf
SU5DTFVERV9ESVIgTElCUE9SVEFMX0xJQlJBUlkKLSAgICBWRVJTSU9OX1ZBUiBMSUJQT1JUQUxf
VkVSU0lPTgotKQotCi1pZiAoTElCUE9SVEFMX0xJQlJBUlkgQU5EIE5PVCBUQVJHRVQgTElCUE9S
VEFMOjpMSUJQT1JUQUwpCi0gICAgYWRkX2xpYnJhcnkoTElCUE9SVEFMOjpMSUJQT1JUQUwgVU5L
Tk9XTiBJTVBPUlRFRCBHTE9CQUwpCi0gICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKExJQlBPUlRB
TDo6TElCUE9SVEFMIFBST1BFUlRJRVMKLSAgICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7TElC
UE9SVEFMX0xJQlJBUll9IgotICAgICAgICBJTlRFUkZBQ0VfQ09NUElMRV9PUFRJT05TICIke0xJ
QlBPUlRBTF9DT01QSUxFX09QVElPTlN9IgotICAgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJF
Q1RPUklFUyAiJHtMSUJQT1JUQUxfSU5DTFVERV9ESVJ9IgotICAgICkKLWVuZGlmICgpCi0KLW1h
cmtfYXNfYWR2YW5jZWQoTElCUE9SVEFMX0lOQ0xVREVfRElSIExJQlBPUlRBTF9MSUJSQVJZKQot
Ci1pZiAoTElCUE9SVEFMX0ZPVU5EKQotICAgIHNldChMSUJQT1JUQUxfTElCUkFSSUVTICR7TElC
UE9SVEFMX0xJQlJBUll9KQotICAgIHNldChMSUJQT1JUQUxfSU5DTFVERV9ESVJTICR7TElCUE9S
VEFMX0lOQ0xVREVfRElSfSkKLWVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0
cmVhbWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQpp
bmRleCBhZjk2NzRiMTQwYmZjYzE3N2NlYTEwYzI2Zjc4MjlhZmYzMTAwMDllLi43N2U5NTg0NWU5
OTEzYTU5NzhkYWQxMGNmYzQzMDA5M2I0M2M3YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
R1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3Mu
Y21ha2UKQEAgLTU3LDEyICs1NywzIEBAIGlmIChFTkFCTEVfTUVESUFfU1RSRUFNIEFORCBFTkFC
TEVfV0VCX1JUQykKIGVsc2UgKCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElC
V0VCUlRDIEZBTFNFKQogZW5kaWYgKCkKLQotaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCi0gICAg
ZmluZF9wYWNrYWdlKExJQlBPUlRBTCkKLSAgICBpZiAoTElCUE9SVEFMX0ZPVU5EKQotICAgICAg
ICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUElQRVdJUkUgVFJVRSkKLSAgICBlbHNlICgp
Ci0gICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9QSVBFV0lSRSBGQUxTRSkKLSAg
ICBlbmRpZiAoKQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCBmNTZhOTcwMjdhNmI0NDlkMDgwZmEzOTQ4YTBjOTNmZTYzOTQyYjRiLi5iMDI1MWE5Zjk1
MGRiYTdiYmI4YmM3ZTJhZWVlNmZmYmU4ODhiOTYyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBSZW1vdmUgbGlicG9y
dGFsIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyODA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRMSUJQT1JUQUwuY21ha2U6IFJlbW92ZWQuCisgICAg
ICAgICogU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZToKKwogMjAyMS0wNy0xNiAg
QWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gU3VwcG9ydCBjb2xvci1zY2hlbWVzIENTUyBwcm9wZXJ0eQo=
</data>
<flag name="review"
          id="456402"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="456480"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>