<?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>187343</bug_id>
          
          <creation_ts>2018-07-05 07:22:57 -0700</creation_ts>
          <short_desc>[WebVR] Add support for connect/disconnect and mount/unmount device events</short_desc>
          <delta_ts>2018-07-16 07:25:26 -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>New Bugs</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="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1439391</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-05 07:22:57 -0700</bug_when>
    <thetext>[WebVR] Add support for connect/disconnect and mount/unmount device events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439394</commentid>
    <comment_count>1</comment_count>
      <attachid>344328</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-05 08:23:32 -0700</bug_when>
    <thetext>Created attachment 344328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439729</commentid>
    <comment_count>2</comment_count>
      <attachid>344328</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-07-06 01:52:54 -0700</bug_when>
    <thetext>Comment on attachment 344328
Patch

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

&gt; Source/WebCore/Modules/webvr/NavigatorWebVR.cpp:62
&gt; +        Vector&lt;Ref&lt;VRDisplay&gt;&gt; oldDisplays;
&gt; +        oldDisplays.reserveInitialCapacity(m_displays.size());
&gt; +        for (unsigned i = 0; i &lt; m_displays.size(); ++i)
&gt; +            oldDisplays.uncheckedAppend(m_displays[i].copyRef());
&gt; +        m_displays.clear();

Can this move from m_displays into oldDisplays? I think it has the same effect.

    auto oldDisplays = WTFMove(m_displays);

&gt; Source/WebCore/Modules/webvr/NavigatorWebVR.cpp:73
&gt; +            for (unsigned i = 0; i &lt; oldDisplays.size() &amp;&amp; newDisplay; ++i) {
&gt; +                if (platformDisplay-&gt;getDisplayInfo().displayIdentifier() == oldDisplays[i]-&gt;displayId()) {
&gt; +                    newDisplay = false;
&gt; +                    m_displays.append(oldDisplays[i].copyRef());
&gt; +                }
&gt; +            }

Use a range-based for-loop, but break from it after finding an old display.

&gt; Source/WebCore/platform/vr/VRManager.cpp:57
&gt; +    for (auto display : displays) {

auto&amp;. How should the WeakPtr be handled though? Maybe it should be asserted it&apos;s non-null?

&gt; Source/WebCore/platform/vr/VRManager.cpp:76
&gt; +    for (auto display : m_displays)
&gt; +        display.value-&gt;notifyVRPlatformDisplayEvent(VRPlatformDisplay::Event::Disconnected);

Ditto.

&gt; Source/WebCore/platform/vr/VRManager.cpp:81
&gt; +    for (auto display : displays)
&gt; +        m_displays.add(display-&gt;getDisplayInfo().displayIdentifier(), display);

Ditto.

Also, HashMap::add() doesn&apos;t set the display value if the key is already in the map. Meaning a potentially stale WeakPtr can remain in the HashMap if the underlying display object (and the corresponding WeakPtrFactory) changes. Should this use HashMap::set() instead?

Would it make more sense for this method to create a fresh HashMap, fill it with all the live display objects, dispatch connected/mounted events according to the change of state, disconnect any displays that are in m_displays but not in the new HashMap, and then move over the new HashMap into the m_displays object?

&gt; Source/WebCore/platform/vr/VRPlatformDisplay.cpp:28
&gt; +    ASSERT(client &amp;&amp; m_client);

This correct? Shouldn&apos;t one be null and the other one non-null, i.e. (!!m_client ^ !!client)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1439730</commentid>
    <comment_count>3</comment_count>
      <attachid>344328</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-07-06 01:56:49 -0700</bug_when>
    <thetext>Comment on attachment 344328
Patch

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

&gt; Source/WebCore/platform/vr/VRPlatformDisplayClient.h:30
&gt; +class VRPlatformDisplayClient {
&gt; +public:
&gt; +    virtual void VRPlatformDisplayConnected() { }
&gt; +    virtual void VRPlatformDisplayDisconnected() { }
&gt; +    virtual void VRPlatformDisplayMounted() { }
&gt; +    virtual void VRPlatformDisplayUnmounted() { }
&gt; +};

Empty line after namespace.

The class needs a virtual destructor. That&apos;s why the Cocoa builds are failing.

Nit: method names are odd-looking with the starting &apos;VR&apos; being capitalized. I&apos;d just remove that and use &apos;platformDisplayConnected()&apos; etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442350</commentid>
    <comment_count>4</comment_count>
      <attachid>344328</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-16 01:27:55 -0700</bug_when>
    <thetext>Comment on attachment 344328
Patch

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

&gt;&gt; Source/WebCore/platform/vr/VRManager.cpp:81
&gt;&gt; +        m_displays.add(display-&gt;getDisplayInfo().displayIdentifier(), display);
&gt; 
&gt; Ditto.
&gt; 
&gt; Also, HashMap::add() doesn&apos;t set the display value if the key is already in the map. Meaning a potentially stale WeakPtr can remain in the HashMap if the underlying display object (and the corresponding WeakPtrFactory) changes. Should this use HashMap::set() instead?
&gt; 
&gt; Would it make more sense for this method to create a fresh HashMap, fill it with all the live display objects, dispatch connected/mounted events according to the change of state, disconnect any displays that are in m_displays but not in the new HashMap, and then move over the new HashMap into the m_displays object?

Agree on the ::set() thing.

Regarding your suggestion I think both approaches are similar, I don&apos;t have a strong opinion there.

&gt;&gt; Source/WebCore/platform/vr/VRPlatformDisplay.cpp:28
&gt;&gt; +    ASSERT(client &amp;&amp; m_client);
&gt; 
&gt; This correct? Shouldn&apos;t one be null and the other one non-null, i.e. (!!m_client ^ !!client)?

Indeed the condition is totally wrong

&gt;&gt; Source/WebCore/platform/vr/VRPlatformDisplayClient.h:30
&gt;&gt; +};
&gt; 
&gt; Empty line after namespace.
&gt; 
&gt; The class needs a virtual destructor. That&apos;s why the Cocoa builds are failing.
&gt; 
&gt; Nit: method names are odd-looking with the starting &apos;VR&apos; being capitalized. I&apos;d just remove that and use &apos;platformDisplayConnected()&apos; etc.

ack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442353</commentid>
    <comment_count>5</comment_count>
      <attachid>345087</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-16 03:37:33 -0700</bug_when>
    <thetext>Created attachment 345087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442355</commentid>
    <comment_count>6</comment_count>
      <attachid>345087</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-07-16 04:34:48 -0700</bug_when>
    <thetext>Comment on attachment 345087
Patch

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

&gt; Source/WebCore/Modules/webvr/VRDisplay.h:92
&gt; +    // VRPlatformDisplayClient implementation.
&gt; +    void platformDisplayConnected() override;
&gt; +    void platformDisplayDisconnected() override;
&gt; +    void platformDisplayMounted() override;
&gt; +    void platformDisplayUnmounted() override;

These should be private, if possible.

&gt; Source/WebCore/platform/vr/VRManager.cpp:56
&gt; +    auto displays = m_platformManager-&gt;getVRDisplays();

You can inline this into the range-based for-loop:

    for (auto&amp; display : m_platformManager-&gt;getVRDisplays())

&gt; Source/WebCore/platform/vr/VRPlatformDisplayClient.h:32
&gt; +    virtual ~VRPlatformDisplayClient() { }

Nit: this virtual dtor should be above the methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442369</commentid>
    <comment_count>7</comment_count>
      <attachid>345087</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-16 06:31:29 -0700</bug_when>
    <thetext>Comment on attachment 345087
Patch

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

&gt;&gt; Source/WebCore/platform/vr/VRManager.cpp:56
&gt;&gt; +    auto displays = m_platformManager-&gt;getVRDisplays();
&gt; 
&gt; You can inline this into the range-based for-loop:
&gt; 
&gt;     for (auto&amp; display : m_platformManager-&gt;getVRDisplays())

Yeah but you have to return displays anyway, so I decided to keep it outside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442370</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-16 06:35:45 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #6)
&gt; Comment on attachment 345087 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345087&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webvr/VRDisplay.h:92
&gt; &gt; +    // VRPlatformDisplayClient implementation.
&gt; &gt; +    void platformDisplayConnected() override;
&gt; &gt; +    void platformDisplayDisconnected() override;
&gt; &gt; +    void platformDisplayMounted() override;
&gt; &gt; +    void platformDisplayUnmounted() override;
&gt; 
&gt; These should be private, if possible.

Ideally yes, but not in this case as we need to explicitly call these methods over a VRDisplay, in NavigatorWebVR for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442371</commentid>
    <comment_count>9</comment_count>
      <attachid>345087</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-07-16 06:41:46 -0700</bug_when>
    <thetext>Comment on attachment 345087
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/vr/VRManager.cpp:56
&gt;&gt;&gt; +    auto displays = m_platformManager-&gt;getVRDisplays();
&gt;&gt; 
&gt;&gt; You can inline this into the range-based for-loop:
&gt;&gt; 
&gt;&gt;     for (auto&amp; display : m_platformManager-&gt;getVRDisplays())
&gt; 
&gt; Yeah but you have to return displays anyway, so I decided to keep it outside.

Didn&apos;t notice that, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442372</commentid>
    <comment_count>10</comment_count>
      <attachid>345093</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-07-16 06:44:20 -0700</bug_when>
    <thetext>Created attachment 345093
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442374</commentid>
    <comment_count>11</comment_count>
      <attachid>345093</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-16 07:24:29 -0700</bug_when>
    <thetext>Comment on attachment 345093
Patch for landing

Clearing flags on attachment: 345093

Committed r233846: &lt;https://trac.webkit.org/changeset/233846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442375</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-16 07:24:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442376</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-16 07:25:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/42239689&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344328</attachid>
            <date>2018-07-05 08:23:32 -0700</date>
            <delta_ts>2018-07-16 03:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187343-20180705172329.patch</filename>
            <type>text/plain</type>
            <size>30338</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyNzdlNGNmZDJkODFm
N2Y0OWViMTVmMmE4ZjMyNDgxMmRjOTE5MC4uYTdhOWQxOTA0YmYzYTliYjc0YjBjMzIyMTBkZDVl
MjQ4ODk1ODAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTA3LTA1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl0g
QWRkIHN1cHBvcnQgZm9yIGNvbm5lY3QvZGlzY29ubmVjdCBhbmQgbW91bnQvdW5tb3VudCBkZXZp
Y2UgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODczNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJWUiBzcGVjcyBkZWZpbmUgYSBzZXJpZXMgb2YgZXZlbnRzIGFzIHBhcnQgb2YgdGhlIFdp
bmRvdyBJbnRlcmZhY2UgRXh0ZW5zaW9uLiBXZSdyZQorICAgICAgICBhZGRpbmcgc3VwcG9ydCBm
b3IgdGhlIGNvbm5lY3QvZGlzY29ubmVjdCBhbmQgbW91bnQvdW5tb3VudCBldmVudHMgYm90aCBh
dCB0aGUgbW9kdWxlIGxldmVsCisgICAgICAgIGFuZCB0aGUgcGxhdGZvcm0gbGV2ZWwgdXNpbmcg
T3BlblZSLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoYXQgd2UgbmVlZCB0byBrZWVwIGxp
c3RzIG9mIFZSUGxhdGZvcm1EaXNwbGF5cyBhdCBwbGF0Zm9ybSBsZXZlbCBhbmQKKyAgICAgICAg
VlJEaXNwbGF5cyBhdCBiaW5kaW5ncyBsZXZlbC4gV2UgdGhlbiB1cGRhdGUgdGhvc2UgbGlzdHMg
YWNjb3JkaW5nbHkgdG8gZGV0ZWN0IHBvdGVudGlhbAorICAgICAgICBhZGRpdGlvbnMvcmVtb3Zh
bHMsIGFuZCBlbWl0IHRoZSBjb3JyZXNwb25kaW5nIHNpZ25hbHMuIEEgbmV3IGNsaWVudCBpbnRl
cmZhY2UKKyAgICAgICAgVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQgd2FzIGFsc28gZGVmaW5lZCBz
byB0aGF0IFZSUGxhdGZvcm1EaXNwbGF5IGltcGxlbWVudGF0aW9ucyBjb3VsZAorICAgICAgICBu
b3RpZnkgdGhlaXIgY2xpZW50cyAodHlwaWNhbGx5IGEgVlJEaXNwbGF5KS4KKworICAgICAgICBM
YXN0IGJ1dCBub3QgbGVhc3QsIE5hdmlnYXRvcldlYlZSIHdhcyB1cGRhdGVkIHNvIGl0IHN1cHBs
ZW1lbnRzIE5hdmlnYXRvciBpbnN0ZWFkIG9mCisgICAgICAgIHN1cHBsZW1lbnRpbmcgUGFnZS4K
KworICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwOiBTdXBwbGVtZW50
IE5hdmlnYXRvciBub3QgUGFnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpn
ZXRWUkRpc3BsYXlzKTogS2VlcCBhIGxpc3Qgb2YgVlJEaXNwbGF5cyBhbmQgdXBkYXRlIHRoZW0K
KyAgICAgICAgY29udmVuaWVudGx5LCBhbHNvIGVtaXR0aW5nIHRoZSByZXF1aXJlZCBldmVudHMg
dW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChsaWtlIGRldmljZQorICAgICAgICBkaXNjb25uZWN0
aW9uKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpzdXBwbGVtZW50TmFtZSk6
IE5ldyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJWUjo6ZnJvbSk6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaDogU3VwcGxlbWVu
dCBOYXZpZ2F0b3Igbm90IFBhZ2UuCisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpjcmVhdGUpOiBNb3ZlZCBzdXNwZW5k
SWZOZWVkZWQoKSB0byBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6
VlJEaXNwbGF5KTogU2V0IGl0c2VsZiBhcyBWUlBsYXRmb3JtRGlzcGxheSBjbGllbnQuCisgICAg
ICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6On5WUkRpc3BsYXkpOiBVbnNldCBhcyAgVlJQbGF0Zm9y
bURpc3BsYXkgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUlBsYXRmb3Jt
RGlzcGxheUNvbm5lY3RlZCk6IERpc3BhdGNoIGV2ZW50IG9uIERPTSB3aW5kb3cuCisgICAgICAg
IChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5RGlzY29ubmVjdGVkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5TW91bnRl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUlBsYXRmb3JtRGlzcGxh
eVVubW91bnRlZCk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Lmg6
IEV4dGVuZCBmcm9tIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6
VlJEaXNwbGF5Ojpkb2N1bWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlF
dmVudC5jcHA6IFVwZGF0ZWQgQ29weXJpZ2h0LgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJE
aXNwbGF5RXZlbnQuaDogRGl0dG8uCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIHRoZSB0
d28gbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZSTWFuYWdlcjo6Z2V0VlJEaXNwbGF5cyk6IEtlZXAgYSBsaXN0IG9mIFZSUGxh
dGZvcm1EaXNwbGF5cyBhbmQgdXBkYXRlIHRoZW0gY29udmVuaWVudGx5LAorICAgICAgICBhbHNv
IGVtaXR0aW5nIHRoZSByZXF1aXJlZCBldmVudHMgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChs
aWtlIGRldmljZSBkaXNjb25uZWN0aW9uKS4KKyAgICAgICAgKiBwbGF0Zm9ybS92ci9WUk1hbmFn
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHA6IE5ldyBm
aWxlIHdpdGggY29tbW9uIGltcGxlbWVudGF0aW9ucyBmb3IgVlJQbGF0Zm9ybURpc3BsYXlzLgor
ICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybURpc3BsYXk6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheTo6bm90aWZ5VlJQbGF0Zm9ybURpc3BsYXlFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaDogQWRkZWQgYSBn
ZW5lcmljIG1ldGhvZCB0byBub3RpZnkgYWJvdXQgZGlmZmVyZW50CisgICAgICAgIGV2ZW50cy4g
QWRkZWQgdGhlIGNsaWVudCBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL3ZyL1ZSUGxhdGZv
cm1EaXNwbGF5Q2xpZW50Lmg6IE5ldyBmaWxlLiBWUlBsYXRmb3JtRGlzcGxheSBpbXBsZW1lbnRh
dGlvbnMgd2lsbAorICAgICAgICBjYWxsIHRoZSBjbGllbnQgbWV0aG9kcyBpbiB0aGUgZXZlbnQg
b2Ygc29tZSBjaXJjdW1zdGFuY2VzIGhhcHBlbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxh
dGZvcm1EaXNwbGF5Q2xpZW50OjpWUlBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheUNsaWVudDo6VlJQbGF0Zm9ybURpc3BsYXlEaXNj
b25uZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybURpc3BsYXlDbGllbnQ6OlZS
UGxhdGZvcm1EaXNwbGF5TW91bnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtRGlz
cGxheUNsaWVudDo6VlJQbGF0Zm9ybURpc3BsYXlVbm1vdW50ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjo6dXBkYXRlRGlzcGxheUluZm8pOiBQb2xsIHRo
ZSBkZXZpY2UgZm9yIG5ldyBldmVudHMgdG8KKyAgICAgICAgZGV0ZWN0IGNvbm5lY3Rpb24vZGlz
Y29ubmVjdGlvbnMgb3IgZGV2aWNlIGFjdGl2YXRpb25zL2RlYWN0aXZhdGlvbnMgKEhNRAorICAg
ICAgICBtb3VudGVkL3VubW91bnRlZCkuCisgICAgICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZS
UGxhdGZvcm1EaXNwbGF5T3BlblZSLmg6CisKIDIwMTgtMDctMDUgIFNlcmdpbyBWaWxsYXIgU2Vu
aW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlZSXSBGaXggVlJEaXNwbGF5
RXZlbnQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9O
YXZpZ2F0b3JXZWJWUi5jcHAKaW5kZXggZjJjMjMzMDdiODA5ODY2NTQ5NDc1ZDU0ZmIzNWVmODY4
YzQ4ZjQ4YS4uNmIzZmRlOGI2ZDEzY2UyNzIyNzE3MmRkYzg0YzJjZTE2YTZmNWE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwy
NyArMzIsNTMgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVk
ZSAiVlJEaXNwbGF5LmgiCiAjaW5jbHVkZSAiVlJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVlJQbGF0
Zm9ybURpc3BsYXkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIE5hdmlnYXRvcldl
YlZSOjpnZXRWUkRpc3BsYXlzKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1bWVudCwgR2V0VlJE
aXNwbGF5c1Byb21pc2UmJiBwcm9taXNlKQordm9pZCBOYXZpZ2F0b3JXZWJWUjo6Z2V0VlJEaXNw
bGF5cyhOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50LCBHZXRWUkRpc3Bs
YXlzUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYlZSRW5hYmxlZCgpKSB7CiAgICAgICAgIHByb21pc2UucmVq
ZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgTmF2aWdhdG9yV2ViVlI6OmZyb20o
Jm5hdmlnYXRvciktPmdldFZSRGlzcGxheXMoZG9jdW1lbnQsIFdURk1vdmUocHJvbWlzZSkpOwor
fQogCi0gICAgZG9jdW1lbnQucG9zdFRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cit2b2lkIE5hdmlnYXRv
cldlYlZSOjpnZXRWUkRpc3BsYXlzKERvY3VtZW50JiBkb2N1bWVudCwgR2V0VlJEaXNwbGF5c1By
b21pc2UmJiBwcm9taXNlKQoreworICAgIGRvY3VtZW50LnBvc3RUYXNrKFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZSTWFuYWdlcjo6VlJEaXNwbGF5c1ZlY3Rv
cj4gcGxhdGZvcm1EaXNwbGF5cyA9IFZSTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0VlJEaXNwbGF5
cygpOwogICAgICAgICBpZiAoIXBsYXRmb3JtRGlzcGxheXMpIHsKICAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KCk7CisgICAgICAgICAgICBtX2Rpc3BsYXlzLmNsZWFyKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFZSRGlzcGxheT4+IGRp
c3BsYXlzOwotICAgICAgICBmb3IgKGF1dG8mIHBsYXRmb3JtRGlzcGxheSA6IHBsYXRmb3JtRGlz
cGxheXMudmFsdWUoKSkKLSAgICAgICAgICAgIGRpc3BsYXlzLmFwcGVuZChWUkRpc3BsYXk6OmNy
ZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHBsYXRmb3JtRGlzcGxheSkpKTsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKGRpc3BsYXlzKTsKKyAgICAgICAgVmVjdG9yPFJlZjxWUkRpc3BsYXk+PiBvbGRE
aXNwbGF5czsKKyAgICAgICAgb2xkRGlzcGxheXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Rp
c3BsYXlzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rpc3Bs
YXlzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgb2xkRGlzcGxheXMudW5jaGVja2VkQXBwZW5k
KG1fZGlzcGxheXNbaV0uY29weVJlZigpKTsKKyAgICAgICAgbV9kaXNwbGF5cy5jbGVhcigpOwor
CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmVjdG9yIG9mIGRpc3BsYXlzLiBOb3RlIHRoYXQgYWx0
aG91Z2ggdGhpcyBpcyBPKG5eMikgdGhlIGFtb3VudCBvZiBleHBlY3RlZAorICAgICAgICAvLyBW
UkRpc3BsYXlzIGlzIHNvIHJlZHVjZWQgdGhhdCBpdCdsbCBydW4gZmFzdCBlbm91Z2guCisgICAg
ICAgIGZvciAoYXV0byYgcGxhdGZvcm1EaXNwbGF5IDogcGxhdGZvcm1EaXNwbGF5cy52YWx1ZSgp
KSB7CisgICAgICAgICAgICBib29sIG5ld0Rpc3BsYXkgPSB0cnVlOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG9sZERpc3BsYXlzLnNpemUoKSAmJiBuZXdEaXNwbGF5OyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LT5nZXREaXNwbGF5SW5m
bygpLmRpc3BsYXlJZGVudGlmaWVyKCkgPT0gb2xkRGlzcGxheXNbaV0tPmRpc3BsYXlJZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIG5ld0Rpc3BsYXkgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9kaXNwbGF5cy5hcHBlbmQob2xkRGlzcGxheXNbaV0uY29weVJlZigpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmV3RGlzcGxheSkg
eworICAgICAgICAgICAgICAgIG1fZGlzcGxheXMuYXBwZW5kKFZSRGlzcGxheTo6Y3JlYXRlKGNv
bnRleHQsIFdURk1vdmUocGxhdGZvcm1EaXNwbGF5KSkpOworICAgICAgICAgICAgICAgIG1fZGlz
cGxheXMubGFzdCgpLT5WUlBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHByb21pc2UucmVzb2x2ZShXVEY6Om1hcChtX2Rpc3BsYXlz
LCBbXShjb25zdCBSZWY8VlJEaXNwbGF5PiYgZGlzcGxheSkgeworICAgICAgICAgICAgcmV0dXJu
IGRpc3BsYXkuY29weVJlZigpOworICAgICAgICB9KSk7CiAgICAgfSk7CiB9CiAKQEAgLTYyLDQg
Kzg4LDIwIEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8VlJEaXNwbGF5Pj4mIE5hdmlnYXRvcldlYlZS
OjphY3RpdmVWUkRpc3BsYXlzKE5hdmlnYXRvciYpCiAgICAgcmV0dXJuIG1vY2tWZWN0b3I7CiB9
CiAKK2NvbnN0IGNoYXIqIE5hdmlnYXRvcldlYlZSOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAg
cmV0dXJuICJOYXZpZ2F0b3JXZWJWUiI7Cit9CisKK05hdmlnYXRvcldlYlZSKiBOYXZpZ2F0b3JX
ZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKK3sKKyAgICBOYXZpZ2F0b3JXZWJWUiog
c3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVudDxOYXZp
Z2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOworICAgIGlmICghc3Vw
cGxlbWVudCkgeworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50OworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L05hdmlnYXRvcldlYlZSLmgKaW5kZXggNDZlZjFkNTQ1MjNkYzY4YmE0NGFmMTljZjI3OWMzYjk3
OGViZDllZS4uYmUwNTliOGMzNmY3MTFiODViOTdhOGMyMWM2YmNmYTE4MmY0ODJiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDEzICsz
NiwyMSBAQCBjbGFzcyBOYXZpZ2F0b3I7CiBjbGFzcyBQYWdlOwogY2xhc3MgVlJEaXNwbGF5Owog
Ci1jbGFzcyBOYXZpZ2F0b3JXZWJWUiBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsK
K2NsYXNzIE5hdmlnYXRvcldlYlZSIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9y
PiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgR2V0VlJEaXNwbGF5c1Byb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFZSRGlzcGxheT4+PjsKIAogICAgIHN0
YXRpYyB2b2lkIGdldFZSRGlzcGxheXMoTmF2aWdhdG9yJiwgRG9jdW1lbnQmLCBHZXRWUkRpc3Bs
YXlzUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFJlZlB0cjxWUkRpc3BsYXk+
PiYgYWN0aXZlVlJEaXNwbGF5cyhOYXZpZ2F0b3ImKTsKICAgICBzdGF0aWMgYm9vbCB2ckVuYWJs
ZWQoTmF2aWdhdG9yJik7CisKKyAgICB2b2lkIGdldFZSRGlzcGxheXMoRG9jdW1lbnQmLCBHZXRW
UkRpc3BsYXlzUHJvbWlzZSYmKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTmF2aWdhdG9yV2Vi
VlIqIGZyb20oTmF2aWdhdG9yKik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CisKKyAgICBWZWN0b3I8UmVmPFZSRGlzcGxheT4+IG1fZGlzcGxheXM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlz
cGxheS5jcHAKaW5kZXggYmQyNDNmZDVkOTQzY2M4ZDNjNmI5OTJmOTA2ZjU0NTAxY2MyNjA2Ny4u
YjA5ZTQzNzc0ZmFkYjA2OTI4Mjg5YTA0NWNjYWMzZWI1OWIwZjZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1
ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJET01FeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVlJEaXNwbGF5Q2FwYWJpbGl0
aWVzLmgiCisjaW5jbHVkZSAiVlJEaXNwbGF5RXZlbnQuaCIKICNpbmNsdWRlICJWUkV5ZVBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJWUkZyYW1lRGF0YS5oIgogI2luY2x1ZGUgIlZSTGF5ZXJJbml0
LmgiCkBAIC00NCw5ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFZSRGlzcGxh
eT4gVlJEaXNwbGF5OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vh
a1B0cjxWUlBsYXRmb3JtRGlzcGxheT4mJiBwbGF0Zm9ybURpc3BsYXkpCiB7Ci0gICAgYXV0byBk
aXNwbGF5ID0gYWRvcHRSZWYoKm5ldyBWUkRpc3BsYXkoY29udGV4dCwgV1RGTW92ZShwbGF0Zm9y
bURpc3BsYXkpKSk7Ci0gICAgZGlzcGxheS0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJu
IGRpc3BsYXk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJEaXNwbGF5KGNvbnRleHQsIFdU
Rk1vdmUocGxhdGZvcm1EaXNwbGF5KSkpOwogfQogCiBWUkRpc3BsYXk6OlZSRGlzcGxheShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiYm
IHBsYXRmb3JtRGlzcGxheSkKQEAgLTU5LDkgKzU5LDE1IEBAIFZSRGlzcGxheTo6VlJEaXNwbGF5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8VlJQbGF0Zm9ybURpc3Bs
YXk+CiAgICAgbV9yaWdodEV5ZVBhcmFtZXRlcnMgPSBWUkV5ZVBhcmFtZXRlcnM6OmNyZWF0ZShk
aXNwbGF5SW5mby5leWVUcmFuc2xhdGlvbihWUlBsYXRmb3JtRGlzcGxheUluZm86OkV5ZVJpZ2h0
KSwgZGlzcGxheUluZm8uZXllRmllbGRPZlZpZXcoVlJQbGF0Zm9ybURpc3BsYXlJbmZvOjpFeWVS
aWdodCksIGRpc3BsYXlJbmZvLnJlbmRlclNpemUoKSk7CiAgICAgbV9kaXNwbGF5SWQgPSBkaXNw
bGF5SW5mby5kaXNwbGF5SWRlbnRpZmllcigpOwogICAgIG1fZGlzcGxheU5hbWUgPSBkaXNwbGF5
SW5mby5kaXNwbGF5TmFtZSgpOworCisgICAgbV9kaXNwbGF5LT5zZXRDbGllbnQodGhpcyk7Cisg
ICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKLVZSRGlzcGxheTo6flZSRGlzcGxheSgpID0gZGVm
YXVsdDsKK1ZSRGlzcGxheTo6flZSRGlzcGxheSgpCit7CisgICAgbV9kaXNwbGF5LT5zZXRDbGll
bnQobnVsbHB0cik7Cit9CiAKIGJvb2wgVlJEaXNwbGF5Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB7
CkBAIC0xOTgsNiArMjA0LDI2IEBAIHZvaWQgVlJEaXNwbGF5OjpzdWJtaXRGcmFtZSgpCiB7CiB9
CiAKK3ZvaWQgVlJEaXNwbGF5OjpWUlBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCgpCit7CisgICAg
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoVlJEaXNwbGF5RXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkudnJkaXNwbGF5Y29ubmVjdEV2ZW50LCBtYWtlUmVmUHRyKHRoaXMp
LCBzdGQ6Om51bGxvcHQpKTsKK30KKwordm9pZCBWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5
RGlzY29ubmVjdGVkKCkKK3sKKyAgICBkb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hF
dmVudChWUkRpc3BsYXlFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52cmRpc3BsYXlkaXNjb25u
ZWN0RXZlbnQsIG1ha2VSZWZQdHIodGhpcyksIHN0ZDo6bnVsbG9wdCkpOworfQorCit2b2lkIFZS
RGlzcGxheTo6VlJQbGF0Zm9ybURpc3BsYXlNb3VudGVkKCkKK3sKKyAgICBkb2N1bWVudCgpLT5k
b21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChWUkRpc3BsYXlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS52cmRpc3BsYXlhY3RpdmF0ZUV2ZW50LCBtYWtlUmVmUHRyKHRoaXMpLCBWUkRpc3BsYXlF
dmVudFJlYXNvbjo6TW91bnRlZCkpOworfQorCit2b2lkIFZSRGlzcGxheTo6VlJQbGF0Zm9ybURp
c3BsYXlVbm1vdW50ZWQoKQoreworICAgIGRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRj
aEV2ZW50KFZSRGlzcGxheUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnZyZGlzcGxheWRlYWN0
aXZhdGVFdmVudCwgbWFrZVJlZlB0cih0aGlzKSwgVlJEaXNwbGF5RXZlbnRSZWFzb246OlVubW91
bnRlZCkpOworfQorCiBib29sIFZSRGlzcGxheTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3Bs
YXkuaAppbmRleCA0YTk5Yzk2YTk2NzkzMzllMmJiMTJkZTZmNmY1YTZjMjk3Njc3ZDYzLi43N2Ux
NmI4ZWM4MDE4YzI3Zjc5OGM0ZWEwYWJiN2U4M2RjMDA3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJWUkV5ZS5oIgogI2luY2x1ZGUgIlZSTGF5ZXJJ
bml0LmgiCisjaW5jbHVkZSAiVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0NSw3IEBA
IGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5OwogY2xhc3MgVlJQb3NlOwogY2xhc3MgVlJTdGFnZVBh
cmFtZXRlcnM7CiAKLWNsYXNzIFZSRGlzcGxheSA6IHB1YmxpYyBSZWZDb3VudGVkPFZSRGlzcGxh
eT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKK2NsYXNzIFZSRGlzcGxheSA6IHB1YmxpYyBSZWZDb3VudGVkPFZSRGlzcGxheT4sIHB1
YmxpYyBWUlBsYXRmb3JtRGlzcGxheUNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
VlJEaXNwbGF5PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8VlJQbGF0
Zm9ybURpc3BsYXk+JiYpOwogCkBAIC04NCw2ICs4NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHN1Ym1pdEZyYW1lKCk7CiAKKyAgICAvLyBWUlBsYXRmb3JtRGlzcGxheUNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KKyAgICB2b2lkIFZSUGxhdGZvcm1EaXNwbGF5Q29ubmVjdGVkKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBWUlBsYXRmb3JtRGlzcGxheURpc2Nvbm5lY3RlZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgVlJQbGF0Zm9ybURpc3BsYXlNb3VudGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBWUlBs
YXRmb3JtRGlzcGxheVVubW91bnRlZCgpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIFZSRGlz
cGxheShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4m
Jik7CiAKQEAgLTEwMSw2ICsxMDgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdG9wUHJlc2Vu
dGluZygpOwogCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9j
dW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7IH0KKwogICAgIFdlYWtQdHI8VlJQbGF0
Zm9ybURpc3BsYXk+IG1fZGlzcGxheTsKIAogICAgIFJlZlB0cjxWUkRpc3BsYXlDYXBhYmlsaXRp
ZXM+IG1fY2FwYWJpbGl0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZS
RGlzcGxheUV2ZW50LmNwcAppbmRleCA0OTlkYzRmZjk0MWI2N2EzNjJjM2JkZGNmYzExYmMwYmFk
ZTczMWMzLi41YWNkNjk4ZWIzMmRkYTg5Y2I1YTdmM2RhYmM4NGM2ZTQ3MTU3MWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuaAppbmRleCBkMzZlYTFmZmI2
ZDZiMGI4ZGUxZDUzZjI3ZjNkZjAyNTlkOTk3NGQ2Li45ZTE5NzQxYTMxMWQ3OWI4NmE5M2Q5N2Ni
NzQxYmNjMDNhMjFjMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L1ZSRGlzcGxheUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRp
c3BsYXlFdmVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiNDIzYzdiNjA3NDJhMjVhYTkxYjAyNGVlMzg2
Mzc3ZjE1OGFjMGJiLi42ZTU2MDM5MzEyZWI2OTVhNmEzYzFiM2E2ZDU3ZTc0YzllNTg0NzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTgwNyw2ICsxODA3LDcgQEAgcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmdEZXRlY3RvcklDVS5jcHAKIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnku
Y3BwCiAKIHBsYXRmb3JtL3ZyL1ZSTWFuYWdlci5jcHAKK3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1E
aXNwbGF5LmNwcAogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNw
cAogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZTY3NWNiNjI3MDVjYzU4MzUzYjhmZDIzOGRkNDZjZmQzZjVhY2EyYy4uNTAzODE4Y2M1OTM3MzM1
NjAwODI5OWZiMzAxODBmNTJmYzY2N2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ5OSw2ICsyNDk5LDcgQEAKIAkJOEFG
NEU1NUMxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1OTExREM1QTYzMDAwRUQz
REUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCAqLzsgfTsKIAkJOEJEMzdBNjgyMDFCQjM5QzAwMTE3
MzRBIC8qIFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhCRDM3QTY3MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0
cmVhbUNodW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOEU0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oICovOyB9OworCQk4RTYyMEU4MTIwRUU2MDI0
MDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNjIwRTgwMjBFRTVGRkMwMDdCQzVFRiAvKiBW
UlBsYXRmb3JtRGlzcGxheUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCThFQzZDOTYzMjAxQTI1MTYwMEZCRkE1MyAvKiBHYXBMZW5ndGgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFQzZDOTYx
MjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RjY3NTYxQjEyODhCMTdCMDA0N0FDQTMgLyogRXZl
bnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MDAxNzc0MDEyRTAzNDc4MDA2NDg0
NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzczRDEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5jcHAgKi87IH07CkBAIC0xMDE5NSw2ICsxMDE5Niw4IEBACiAJCThF
MzNDRDkzMjAxQTI5QzEwMEUzOTA5MyAvKiBHYXBMZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR2FwTGVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4RTYyMEU3RTIw
RUU1RkUyMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVlJQbGF0Zm9ybURpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURp
c3BsYXlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVlJQbGF0Zm9y
bURpc3BsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEy
MDFBMjUwMTAwRkJGQTUzIC8qIEdhcExlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHYXBMZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2
MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwMjUsNyArMjUwMjgsOSBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJRTE4ODIzNjIyMDMxRjU1QzAwQjQyREYzIC8qIFZSTWFuYWdlci5jcHAgKi8s
CiAJCQkJRTE4ODIzNjMyMDMxRjU1RDAwQjQyREYzIC8qIFZSTWFuYWdlci5oICovLAorCQkJCThF
NjIwRTdFMjBFRTVGRTIwMDdCQzVFRiAvKiBWUlBsYXRmb3JtRGlzcGxheS5jcHAgKi8sCiAJCQkJ
RTE4ODIzNjAyMDMxRjU1QTAwQjQyREYzIC8qIFZSUGxhdGZvcm1EaXNwbGF5LmggKi8sCisJCQkJ
OEU2MjBFODAyMEVFNUZGQzAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggKi8s
CiAJCQkJRTE4ODIzNjEyMDMxRjU1QjAwQjQyREYzIC8qIFZSUGxhdGZvcm1NYW5hZ2VyLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IHZyOwpAQCAtMzA3ODAsNiArMzA3ODUsNyBAQAogCQkJCUU0NDYx
M0I2MENENjM0NEUwMEZBREE3NSAvKiBWb2lkQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxODgyMzY0MjAzMUY1NzEwMEI0MkRGMyAvKiBWUk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxODgyMzY1MjAzMUY1N0YwMEI0MkRGMyAvKiBWUlBsYXRmb3JtRGlzcGxheS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOEU2MjBFODEyMEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNw
bGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg4MjM2NjIwMzFGNTk0MDBCNDJERjMg
LyogVlJQbGF0Zm9ybU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFMjA1MDdBMThBNDU4
NkIwMDgwNjQ3RSAvKiBWVFRDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlCMjAzMThDRkIy
REYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL1ZSTWFuYWdlci5jcHAKaW5kZXggZjdhNjg0NmVlNmRkMDM4ZDI1MGIyYzdlM2Yy
YjJmZTY3NjE5ZjFkYy4uMDViZDhhMjk4ZDI4Yzg5Njg3ZmFjM2Y5OTE2NGQzMjQyZDIyYTA3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUk1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0IHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggSWdhbGlhLCBTLkwuIEFsbCByaWdodCBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTMsNyArNTMsMzMgQEAgc3RkOjpvcHRp
b25hbDxWUk1hbmFnZXI6OlZSRGlzcGxheXNWZWN0b3I+IFZSTWFuYWdlcjo6Z2V0VlJEaXNwbGF5
cygpCiAgICAgaWYgKCFtX3BsYXRmb3JtTWFuYWdlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHJldHVybiBtX3BsYXRmb3JtTWFuYWdlci0+Z2V0VlJEaXNwbGF5cygpOwor
ICAgIGF1dG8gZGlzcGxheXMgPSBtX3BsYXRmb3JtTWFuYWdlci0+Z2V0VlJEaXNwbGF5cygpOwor
ICAgIGZvciAoYXV0byBkaXNwbGF5IDogZGlzcGxheXMpIHsKKyAgICAgICAgVlJQbGF0Zm9ybURp
c3BsYXlJbmZvIGluZm8gPSBkaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpOworICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9kaXNwbGF5cy5maW5kKGluZm8uZGlzcGxheUlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIGlmIChpdGVyYXRvciA9PSBtX2Rpc3BsYXlzLmVuZCgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgZGlzcGxheS0+dXBkYXRlRGlzcGxheUluZm8oKTsKKyAgICAgICAg
VlJQbGF0Zm9ybURpc3BsYXlJbmZvIG5ld0luZm8gPSBkaXNwbGF5LT5nZXREaXNwbGF5SW5mbygp
OworICAgICAgICBpZiAoaW5mby5pc0Nvbm5lY3RlZCgpICE9IG5ld0luZm8uaXNDb25uZWN0ZWQo
KSkKKyAgICAgICAgICAgIGRpc3BsYXktPm5vdGlmeVZSUGxhdGZvcm1EaXNwbGF5RXZlbnQobmV3
SW5mby5pc0Nvbm5lY3RlZCgpID8gVlJQbGF0Zm9ybURpc3BsYXk6OkV2ZW50OjpDb25uZWN0ZWQg
OiBWUlBsYXRmb3JtRGlzcGxheTo6RXZlbnQ6OkRpc2Nvbm5lY3RlZCk7CisgICAgICAgIGlmIChp
bmZvLmlzTW91bnRlZCgpICE9IG5ld0luZm8uaXNNb3VudGVkKCkpCisgICAgICAgICAgICBkaXNw
bGF5LT5ub3RpZnlWUlBsYXRmb3JtRGlzcGxheUV2ZW50KG5ld0luZm8uaXNNb3VudGVkKCkgPyBW
UlBsYXRmb3JtRGlzcGxheTo6RXZlbnQ6Ok1vdW50ZWQgOiBWUlBsYXRmb3JtRGlzcGxheTo6RXZl
bnQ6OlVubW91bnRlZCk7CisKKyAgICAgICAgLy8gTGV0J3MgcmVtb3ZlIHRoZSBhbHJlYWR5IGV4
aXN0aW5nIGRpc3BsYXlzIGZyb20gdGhlIEhhc2hNYXAuIFRoZSBvbmx5IHJlbWFpbmluZyBvbmVz
IGFyZQorICAgICAgICAvLyB0aGUgZGlzcGxheXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAg
ICAgICAgbV9kaXNwbGF5cy5yZW1vdmUoaXRlcmF0b3IpOworICAgIH0KKworICAgIGZvciAoYXV0
byBkaXNwbGF5IDogbV9kaXNwbGF5cykKKyAgICAgICAgZGlzcGxheS52YWx1ZS0+bm90aWZ5VlJQ
bGF0Zm9ybURpc3BsYXlFdmVudChWUlBsYXRmb3JtRGlzcGxheTo6RXZlbnQ6OkRpc2Nvbm5lY3Rl
ZCk7CisKKyAgICAvLyBUaGlzIHNob3VsZCBiZSBxdWl0ZSBjaGVhcCBhcyB3ZSBkb24ndCBleHBl
Y3QgYSBiaWcgbnVtYmVyIG9mIGRpc3BsYXlzLgorICAgIG1fZGlzcGxheXMuY2xlYXIoKTsKKyAg
ICBmb3IgKGF1dG8gZGlzcGxheSA6IGRpc3BsYXlzKQorICAgICAgICBtX2Rpc3BsYXlzLmFkZChk
aXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmRpc3BsYXlJZGVudGlmaWVyKCksIGRpc3BsYXkpOwor
ICAgIHJldHVybiBkaXNwbGF5czsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmgKaW5kZXggMDk0MmM3Y2I1NWYwNTllMmQ3ODZk
MjMzNjI0MDYyMWNhZWFlMzNkZS4uMmVhNzA3YmY1MTA1Mzg0NmI4OTI4ZDczYmI0MjAxZTliZmIx
YmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSwgUy5MLiBBbGwgcmlnaHQgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw2ICsyMCw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KQEAgLTQ0LDYgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBWUk1hbmFnZXIoKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlcj4gbV9wbGF0Zm9ybU1hbmFnZXI7Cisg
ICAgSGFzaE1hcDx1aW50MzJfdCwgV2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IG1fZGlzcGxh
eXM7CiB9OwogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNjA1NjZhZTAw
M2E1MTM3NjRmZWU3YjcyY2RiMjY4MzA2ZjZlYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0IHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZSUGxhdGZvcm1EaXNwbGF5
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWUlBsYXRmb3JtRGlzcGxheTo6c2V0
Q2xpZW50KFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNs
aWVudCAmJiBtX2NsaWVudCk7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK3ZvaWQgVlJQ
bGF0Zm9ybURpc3BsYXk6Om5vdGlmeVZSUGxhdGZvcm1EaXNwbGF5RXZlbnQoRXZlbnQgZXZlbnQp
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChl
dmVudCkgeworICAgIGNhc2UgRXZlbnQ6OkNvbm5lY3RlZDoKKyAgICAgICAgbV9jbGllbnQtPlZS
UGxhdGZvcm1EaXNwbGF5Q29ubmVjdGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZl
bnQ6OkRpc2Nvbm5lY3RlZDoKKyAgICAgICAgbV9jbGllbnQtPlZSUGxhdGZvcm1EaXNwbGF5RGlz
Y29ubmVjdGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnQ6Ok1vdW50ZWQ6Cisg
ICAgICAgIG1fY2xpZW50LT5WUlBsYXRmb3JtRGlzcGxheU1vdW50ZWQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFdmVudDo6VW5tb3VudGVkOgorICAgICAgICBtX2NsaWVudC0+VlJQbGF0
Zm9ybURpc3BsYXlVbm1vdW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9y
bURpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5
LmgKaW5kZXggMWEwOGViMjhmZjI0YTM1YTIxOTFlYWZiOTI5YjdhMDQyM2IyN2NhZC4uMjFmYTNl
MGYwMzgzNjExYzY4MGJmMGMwMzExNzMxOGJlY2I0M2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNp
bmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgorI2luY2x1ZGUgIlZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmgiCiAKICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTYxLDcgKzE2
MiwyMiBAQCBjbGFzcyBWUlBsYXRmb3JtRGlzcGxheSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxW
UlBsYXRmb3JtRGlzcGxheT4gewogcHVibGljOgogICAgIHZpcnR1YWwgVlJQbGF0Zm9ybURpc3Bs
YXlJbmZvIGdldERpc3BsYXlJbmZvKCkgPSAwOwogICAgIHZpcnR1YWwgVlJQbGF0Zm9ybVRyYWNr
aW5nSW5mbyBnZXRUcmFja2luZ0luZm8oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURp
c3BsYXlJbmZvKCkgPSAwOwogICAgIHZpcnR1YWwgflZSUGxhdGZvcm1EaXNwbGF5KCkgPSBkZWZh
dWx0OworCisgICAgdm9pZCBzZXRDbGllbnQoVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQqKTsKKwor
ICAgIGVudW0gY2xhc3MgRXZlbnQgeworICAgICAgICBDb25uZWN0ZWQsCisgICAgICAgIERpc2Nv
bm5lY3RlZCwKKyAgICAgICAgTW91bnRlZCwKKyAgICAgICAgVW5tb3VudGVkLAorICAgIH07CisK
KyAgICB2b2lkIG5vdGlmeVZSUGxhdGZvcm1EaXNwbGF5RXZlbnQoRXZlbnQpOworCitwcml2YXRl
OgorICAgIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKIH07
CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzFkYzQ3Y2Y2
ZDEwNmU2Njg5NWUzMDI5YzQwNjg2MzNiNmU0YWI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaApAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHQg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
VlJQbGF0Zm9ybURpc3BsYXlDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBWUlBs
YXRmb3JtRGlzcGxheUNvbm5lY3RlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBWUlBsYXRmb3Jt
RGlzcGxheURpc2Nvbm5lY3RlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBWUlBsYXRmb3JtRGlz
cGxheU1vdW50ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgVlJQbGF0Zm9ybURpc3BsYXlVbm1v
dW50ZWQoKSB7IH0KK307CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5
T3BlblZSLmNwcAppbmRleCBkZDYyODhlMGVkYmU3YWM4NzEzOTY0ZDhjYTcyMjljMDhjYjcwZWJi
Li4xNTY1ODMwMjc2N2Q5YTExN2UwZTgyYjk2ODM1ZjlmZWJhNDRhN2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5jcHAKQEAgLTE1OCw2ICsxNTgsMzYgQEAgVlJQbGF0Zm9ybVRyYWNraW5nSW5m
byBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjo6Z2V0VHJhY2tpbmdJbmZvKCkKICAgICByZXR1cm4g
bV90cmFja2luZ0luZm87CiB9CiAKK3ZvaWQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OnVwZGF0
ZURpc3BsYXlJbmZvKCkKK3sKKyAgICBpZiAoIXZyOjpWUl9Jc0htZFByZXNlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdnI6OlZSRXZlbnRfdCBldmVudDsKKyAgICB3aGlsZSAobV9zeXN0
ZW0gJiYgbV9zeXN0ZW0tPlBvbGxOZXh0RXZlbnQoJmV2ZW50LCBzaXplb2YoZXZlbnQpKSkgewor
ICAgICAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSkgeworICAgICAgICBjYXNlIHZyOjpWUkV2
ZW50X1RyYWNrZWREZXZpY2VVc2VySW50ZXJhY3Rpb25TdGFydGVkOgorICAgICAgICBjYXNlIHZy
OjpWUkV2ZW50X1RyYWNrZWREZXZpY2VVc2VySW50ZXJhY3Rpb25FbmRlZDoKKyAgICAgICAgICAg
IGlmIChldmVudC50cmFja2VkRGV2aWNlSW5kZXggPT0gdnI6OmtfdW5UcmFja2VkRGV2aWNlSW5k
ZXhfSG1kKQorICAgICAgICAgICAgICAgIG1fZGlzcGxheUluZm8uc2V0SXNNb3VudGVkKGV2ZW50
LmV2ZW50VHlwZSA9PSB2cjo6VlJFdmVudF9UcmFja2VkRGV2aWNlVXNlckludGVyYWN0aW9uU3Rh
cnRlZCA/IHRydWUgOiBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSB2
cjo6RVZSRXZlbnRUeXBlOjpWUkV2ZW50X1RyYWNrZWREZXZpY2VBY3RpdmF0ZWQ6CisgICAgICAg
IGNhc2UgdnI6OkVWUkV2ZW50VHlwZTo6VlJFdmVudF9UcmFja2VkRGV2aWNlRGVhY3RpdmF0ZWQ6
CisgICAgICAgICAgICBpZiAoZXZlbnQudHJhY2tlZERldmljZUluZGV4ID09IHZyOjprX3VuVHJh
Y2tlZERldmljZUluZGV4X0htZCkKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlJbmZvLnNldElz
Q29ubmVjdGVkKGV2ZW50LmV2ZW50VHlwZSA9PSB2cjo6VlJFdmVudF9UcmFja2VkRGV2aWNlQWN0
aXZhdGVkID8gdHJ1ZSA6IGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IHZyOjpFVlJFdmVudFR5cGU6OlZSRXZlbnRfRHJpdmVyUmVxdWVzdGVkUXVpdDoKKyAgICAgICAg
Y2FzZSB2cjo6RVZSRXZlbnRUeXBlOjpWUkV2ZW50X1F1aXQ6CisgICAgICAgIGNhc2UgdnI6OkVW
UkV2ZW50VHlwZTo6VlJFdmVudF9Qcm9jZXNzUXVpdDoKKyAgICAgICAgY2FzZSB2cjo6RVZSRXZl
bnRUeXBlOjpWUkV2ZW50X1F1aXRBY2tub3dsZWRnZWQ6CisgICAgICAgIGNhc2UgdnI6OkVWUkV2
ZW50VHlwZTo6VlJFdmVudF9RdWl0QWJvcnRlZF9Vc2VyUHJvbXB0OgorICAgICAgICAgICAgLy8g
RklYTUU6IHNob3VsZCB3ZSBub3RpZnkgdGhlIHBsYXRmb3JtIG1hbmFnZXIgYWJvdXQgdGhpcyBh
bmQgY2FsbCBWUl9TaHV0ZG93bigpLgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBVU0UoT1BFTlZSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaAppbmRleCAzYWJlM2RhYzA3
OWUxZDkwY2FhMGE4NWUxNWIyZGQ2NWVjM2IzYTJiLi5kZDZhZTczNjA0Njc5ZjE4OGUwMWUxMTBl
NGZlYmU1OTNkNTM3ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhLCBTLkwuIEFsbCByaWdodCByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHQgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDYgKzM1LDcgQEAgcHVibGljOgogICAg
IH5WUlBsYXRmb3JtRGlzcGxheU9wZW5WUigpID0gZGVmYXVsdDsKICAgICBWUlBsYXRmb3JtRGlz
cGxheUluZm8gZ2V0RGlzcGxheUluZm8oKSBvdmVycmlkZSB7IHJldHVybiBtX2Rpc3BsYXlJbmZv
OyB9CiAgICAgVlJQbGF0Zm9ybVRyYWNraW5nSW5mbyBnZXRUcmFja2luZ0luZm8oKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlJbmZvKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgVlJQbGF0Zm9ybURpc3BsYXlJbmZvOjpGaWVsZE9mVmlldyBjb21wdXRlRmllbGRPZlZpZXco
dnI6OkhtZF9FeWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345087</attachid>
            <date>2018-07-16 03:37:33 -0700</date>
            <delta_ts>2018-07-16 06:44:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187343-20180716123731.patch</filename>
            <type>text/plain</type>
            <size>30044</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyNzdlNGNmZDJkODFm
N2Y0OWViMTVmMmE4ZjMyNDgxMmRjOTE5MC4uYTdhOWQxOTA0YmYzYTliYjc0YjBjMzIyMTBkZDVl
MjQ4ODk1ODAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTA3LTA1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl0g
QWRkIHN1cHBvcnQgZm9yIGNvbm5lY3QvZGlzY29ubmVjdCBhbmQgbW91bnQvdW5tb3VudCBkZXZp
Y2UgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODczNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJWUiBzcGVjcyBkZWZpbmUgYSBzZXJpZXMgb2YgZXZlbnRzIGFzIHBhcnQgb2YgdGhlIFdp
bmRvdyBJbnRlcmZhY2UgRXh0ZW5zaW9uLiBXZSdyZQorICAgICAgICBhZGRpbmcgc3VwcG9ydCBm
b3IgdGhlIGNvbm5lY3QvZGlzY29ubmVjdCBhbmQgbW91bnQvdW5tb3VudCBldmVudHMgYm90aCBh
dCB0aGUgbW9kdWxlIGxldmVsCisgICAgICAgIGFuZCB0aGUgcGxhdGZvcm0gbGV2ZWwgdXNpbmcg
T3BlblZSLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoYXQgd2UgbmVlZCB0byBrZWVwIGxp
c3RzIG9mIFZSUGxhdGZvcm1EaXNwbGF5cyBhdCBwbGF0Zm9ybSBsZXZlbCBhbmQKKyAgICAgICAg
VlJEaXNwbGF5cyBhdCBiaW5kaW5ncyBsZXZlbC4gV2UgdGhlbiB1cGRhdGUgdGhvc2UgbGlzdHMg
YWNjb3JkaW5nbHkgdG8gZGV0ZWN0IHBvdGVudGlhbAorICAgICAgICBhZGRpdGlvbnMvcmVtb3Zh
bHMsIGFuZCBlbWl0IHRoZSBjb3JyZXNwb25kaW5nIHNpZ25hbHMuIEEgbmV3IGNsaWVudCBpbnRl
cmZhY2UKKyAgICAgICAgVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQgd2FzIGFsc28gZGVmaW5lZCBz
byB0aGF0IFZSUGxhdGZvcm1EaXNwbGF5IGltcGxlbWVudGF0aW9ucyBjb3VsZAorICAgICAgICBu
b3RpZnkgdGhlaXIgY2xpZW50cyAodHlwaWNhbGx5IGEgVlJEaXNwbGF5KS4KKworICAgICAgICBM
YXN0IGJ1dCBub3QgbGVhc3QsIE5hdmlnYXRvcldlYlZSIHdhcyB1cGRhdGVkIHNvIGl0IHN1cHBs
ZW1lbnRzIE5hdmlnYXRvciBpbnN0ZWFkIG9mCisgICAgICAgIHN1cHBsZW1lbnRpbmcgUGFnZS4K
KworICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwOiBTdXBwbGVtZW50
IE5hdmlnYXRvciBub3QgUGFnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpn
ZXRWUkRpc3BsYXlzKTogS2VlcCBhIGxpc3Qgb2YgVlJEaXNwbGF5cyBhbmQgdXBkYXRlIHRoZW0K
KyAgICAgICAgY29udmVuaWVudGx5LCBhbHNvIGVtaXR0aW5nIHRoZSByZXF1aXJlZCBldmVudHMg
dW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChsaWtlIGRldmljZQorICAgICAgICBkaXNjb25uZWN0
aW9uKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpzdXBwbGVtZW50TmFtZSk6
IE5ldyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJWUjo6ZnJvbSk6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaDogU3VwcGxlbWVu
dCBOYXZpZ2F0b3Igbm90IFBhZ2UuCisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpjcmVhdGUpOiBNb3ZlZCBzdXNwZW5k
SWZOZWVkZWQoKSB0byBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6
VlJEaXNwbGF5KTogU2V0IGl0c2VsZiBhcyBWUlBsYXRmb3JtRGlzcGxheSBjbGllbnQuCisgICAg
ICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6On5WUkRpc3BsYXkpOiBVbnNldCBhcyAgVlJQbGF0Zm9y
bURpc3BsYXkgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUlBsYXRmb3Jt
RGlzcGxheUNvbm5lY3RlZCk6IERpc3BhdGNoIGV2ZW50IG9uIERPTSB3aW5kb3cuCisgICAgICAg
IChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5RGlzY29ubmVjdGVkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5TW91bnRl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUlBsYXRmb3JtRGlzcGxh
eVVubW91bnRlZCk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Lmg6
IEV4dGVuZCBmcm9tIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6
VlJEaXNwbGF5Ojpkb2N1bWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlF
dmVudC5jcHA6IFVwZGF0ZWQgQ29weXJpZ2h0LgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJE
aXNwbGF5RXZlbnQuaDogRGl0dG8uCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIHRoZSB0
d28gbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZSTWFuYWdlcjo6Z2V0VlJEaXNwbGF5cyk6IEtlZXAgYSBsaXN0IG9mIFZSUGxh
dGZvcm1EaXNwbGF5cyBhbmQgdXBkYXRlIHRoZW0gY29udmVuaWVudGx5LAorICAgICAgICBhbHNv
IGVtaXR0aW5nIHRoZSByZXF1aXJlZCBldmVudHMgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChs
aWtlIGRldmljZSBkaXNjb25uZWN0aW9uKS4KKyAgICAgICAgKiBwbGF0Zm9ybS92ci9WUk1hbmFn
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHA6IE5ldyBm
aWxlIHdpdGggY29tbW9uIGltcGxlbWVudGF0aW9ucyBmb3IgVlJQbGF0Zm9ybURpc3BsYXlzLgor
ICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybURpc3BsYXk6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheTo6bm90aWZ5VlJQbGF0Zm9ybURpc3BsYXlFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaDogQWRkZWQgYSBn
ZW5lcmljIG1ldGhvZCB0byBub3RpZnkgYWJvdXQgZGlmZmVyZW50CisgICAgICAgIGV2ZW50cy4g
QWRkZWQgdGhlIGNsaWVudCBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL3ZyL1ZSUGxhdGZv
cm1EaXNwbGF5Q2xpZW50Lmg6IE5ldyBmaWxlLiBWUlBsYXRmb3JtRGlzcGxheSBpbXBsZW1lbnRh
dGlvbnMgd2lsbAorICAgICAgICBjYWxsIHRoZSBjbGllbnQgbWV0aG9kcyBpbiB0aGUgZXZlbnQg
b2Ygc29tZSBjaXJjdW1zdGFuY2VzIGhhcHBlbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxh
dGZvcm1EaXNwbGF5Q2xpZW50OjpWUlBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheUNsaWVudDo6VlJQbGF0Zm9ybURpc3BsYXlEaXNj
b25uZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybURpc3BsYXlDbGllbnQ6OlZS
UGxhdGZvcm1EaXNwbGF5TW91bnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtRGlz
cGxheUNsaWVudDo6VlJQbGF0Zm9ybURpc3BsYXlVbm1vdW50ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjo6dXBkYXRlRGlzcGxheUluZm8pOiBQb2xsIHRo
ZSBkZXZpY2UgZm9yIG5ldyBldmVudHMgdG8KKyAgICAgICAgZGV0ZWN0IGNvbm5lY3Rpb24vZGlz
Y29ubmVjdGlvbnMgb3IgZGV2aWNlIGFjdGl2YXRpb25zL2RlYWN0aXZhdGlvbnMgKEhNRAorICAg
ICAgICBtb3VudGVkL3VubW91bnRlZCkuCisgICAgICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZS
UGxhdGZvcm1EaXNwbGF5T3BlblZSLmg6CisKIDIwMTgtMDctMDUgIFNlcmdpbyBWaWxsYXIgU2Vu
aW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlZSXSBGaXggVlJEaXNwbGF5
RXZlbnQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9O
YXZpZ2F0b3JXZWJWUi5jcHAKaW5kZXggZjJjMjMzMDdiODA5ODY2NTQ5NDc1ZDU0ZmIzNWVmODY4
YzQ4ZjQ4YS4uYTYxMWY0MzIwMzc0ZmQ5YTA3MDlkNDQyNWI0NGIyMDQ5ODI4NThiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwy
NyArMzIsNTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVk
ZSAiVlJEaXNwbGF5LmgiCiAjaW5jbHVkZSAiVlJNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVlJQbGF0
Zm9ybURpc3BsYXkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIE5hdmlnYXRvcldl
YlZSOjpnZXRWUkRpc3BsYXlzKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1bWVudCwgR2V0VlJE
aXNwbGF5c1Byb21pc2UmJiBwcm9taXNlKQordm9pZCBOYXZpZ2F0b3JXZWJWUjo6Z2V0VlJEaXNw
bGF5cyhOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50LCBHZXRWUkRpc3Bs
YXlzUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYlZSRW5hYmxlZCgpKSB7CiAgICAgICAgIHByb21pc2UucmVq
ZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgTmF2aWdhdG9yV2ViVlI6OmZyb20o
Jm5hdmlnYXRvciktPmdldFZSRGlzcGxheXMoZG9jdW1lbnQsIFdURk1vdmUocHJvbWlzZSkpOwor
fQogCi0gICAgZG9jdW1lbnQucG9zdFRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cit2b2lkIE5hdmlnYXRv
cldlYlZSOjpnZXRWUkRpc3BsYXlzKERvY3VtZW50JiBkb2N1bWVudCwgR2V0VlJEaXNwbGF5c1By
b21pc2UmJiBwcm9taXNlKQoreworICAgIGRvY3VtZW50LnBvc3RUYXNrKFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZSTWFuYWdlcjo6VlJEaXNwbGF5c1ZlY3Rv
cj4gcGxhdGZvcm1EaXNwbGF5cyA9IFZSTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0VlJEaXNwbGF5
cygpOwogICAgICAgICBpZiAoIXBsYXRmb3JtRGlzcGxheXMpIHsKICAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KCk7CisgICAgICAgICAgICBtX2Rpc3BsYXlzLmNsZWFyKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFZSRGlzcGxheT4+IGRp
c3BsYXlzOwotICAgICAgICBmb3IgKGF1dG8mIHBsYXRmb3JtRGlzcGxheSA6IHBsYXRmb3JtRGlz
cGxheXMudmFsdWUoKSkKLSAgICAgICAgICAgIGRpc3BsYXlzLmFwcGVuZChWUkRpc3BsYXk6OmNy
ZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHBsYXRmb3JtRGlzcGxheSkpKTsKLSAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKGRpc3BsYXlzKTsKKyAgICAgICAgVmVjdG9yPFJlZjxWUkRpc3BsYXk+PiBvbGRE
aXNwbGF5cyA9IFdURk1vdmUobV9kaXNwbGF5cyk7CisKKyAgICAgICAgLy8gVXBkYXRlIHRoZSB2
ZWN0b3Igb2YgZGlzcGxheXMuIE5vdGUgdGhhdCBhbHRob3VnaCB0aGlzIGlzIE8obl4yKSB0aGUg
YW1vdW50IG9mIGV4cGVjdGVkCisgICAgICAgIC8vIFZSRGlzcGxheXMgaXMgc28gcmVkdWNlZCB0
aGF0IGl0J2xsIHJ1biBmYXN0IGVub3VnaC4KKyAgICAgICAgZm9yIChhdXRvJiBwbGF0Zm9ybURp
c3BsYXkgOiBwbGF0Zm9ybURpc3BsYXlzLnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgbmV3
RGlzcGxheSA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1dG8mIG9sZERpc3BsYXkgOiBvbGRE
aXNwbGF5cykgeworICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXktPmdldERpc3Bs
YXlJbmZvKCkuZGlzcGxheUlkZW50aWZpZXIoKSA9PSBvbGREaXNwbGF5LT5kaXNwbGF5SWQoKSkg
eworICAgICAgICAgICAgICAgICAgICBuZXdEaXNwbGF5ID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIG1fZGlzcGxheXMuYXBwZW5kKG9sZERpc3BsYXkuY29weVJlZigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKG5ld0Rpc3BsYXkpIHsKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlzLmFw
cGVuZChWUkRpc3BsYXk6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHBsYXRmb3JtRGlzcGxheSkp
KTsKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlzLmxhc3QoKS0+cGxhdGZvcm1EaXNwbGF5Q29u
bmVjdGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKFdURjo6bWFwKG1fZGlzcGxheXMsIFtdKGNvbnN0IFJlZjxWUkRpc3BsYXk+JiBkaXNwbGF5
KSB7CisgICAgICAgICAgICByZXR1cm4gZGlzcGxheS5jb3B5UmVmKCk7CisgICAgICAgIH0pKTsK
ICAgICB9KTsKIH0KIApAQCAtNjIsNCArODUsMjAgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxWUkRp
c3BsYXk+PiYgTmF2aWdhdG9yV2ViVlI6OmFjdGl2ZVZSRGlzcGxheXMoTmF2aWdhdG9yJikKICAg
ICByZXR1cm4gbW9ja1ZlY3RvcjsKIH0KIAorY29uc3QgY2hhciogTmF2aWdhdG9yV2ViVlI6OnN1
cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIk5hdmlnYXRvcldlYlZSIjsKK30KKworTmF2
aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQor
eworICAgIE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9y
V2ViVlIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpKSk7CisgICAgaWYgKCFzdXBwbGVtZW50KSB7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CisgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAg
cmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaAppbmRleCA0NmVmMWQ1NDUy
M2RjNjhiYTQ0YWYxOWNmMjc5YzNiOTc4ZWJkOWVlLi5iZTA1OWI4YzM2ZjcxMWI4NWI5N2E4YzIx
YzZiY2ZhMTgyZjQ4MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L05hdmlnYXRvcldlYlZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZp
Z2F0b3JXZWJWUi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsMTMgKzM2LDIxIEBAIGNsYXNzIE5hdmlnYXRvcjsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBWUkRpc3BsYXk7CiAKLWNsYXNzIE5hdmlnYXRvcldlYlZSIGZpbmFsIDogcHVi
bGljIFN1cHBsZW1lbnQ8UGFnZT4geworY2xhc3MgTmF2aWdhdG9yV2ViVlIgZmluYWwgOiBwdWJs
aWMgU3VwcGxlbWVudDxOYXZpZ2F0b3I+IHsKIHB1YmxpYzoKICAgICB1c2luZyBHZXRWUkRpc3Bs
YXlzUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8
VlJEaXNwbGF5Pj4+OwogCiAgICAgc3RhdGljIHZvaWQgZ2V0VlJEaXNwbGF5cyhOYXZpZ2F0b3Im
LCBEb2N1bWVudCYsIEdldFZSRGlzcGxheXNQcm9taXNlJiYpOwogICAgIHN0YXRpYyBjb25zdCBW
ZWN0b3I8UmVmUHRyPFZSRGlzcGxheT4+JiBhY3RpdmVWUkRpc3BsYXlzKE5hdmlnYXRvciYpOwog
ICAgIHN0YXRpYyBib29sIHZyRW5hYmxlZChOYXZpZ2F0b3ImKTsKKworICAgIHZvaWQgZ2V0VlJE
aXNwbGF5cyhEb2N1bWVudCYsIEdldFZSRGlzcGxheXNQcm9taXNlJiYpOworCitwcml2YXRlOgor
ICAgIHN0YXRpYyBOYXZpZ2F0b3JXZWJWUiogZnJvbShOYXZpZ2F0b3IqKTsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIFZlY3RvcjxSZWY8VlJEaXNwbGF5
Pj4gbV9kaXNwbGF5czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNwcAppbmRleCBiZDI0M2ZkNWQ5NDNjYzhkM2M2
Yjk5MmY5MDZmNTQ1MDFjYzI2MDY3Li5hZGI3NTFkMGMzOWMwYTU2YjVlNGRjMWY1NDIxMGJkYWE0
ZWRmZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggSWdhbGlhIFMuTC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksMTAgKzI5LDEyIEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNs
dWRlICJWUkRpc3BsYXlDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJWUkRpc3BsYXlFdmVudC5o
IgogI2luY2x1ZGUgIlZSRXllUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlZSRnJhbWVEYXRhLmgi
CiAjaW5jbHVkZSAiVlJMYXllckluaXQuaCIKQEAgLTQ0LDkgKzQ2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZWY8VlJEaXNwbGF5PiBWUkRpc3BsYXk6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiYmIHBsYXRmb3Jt
RGlzcGxheSkKIHsKLSAgICBhdXRvIGRpc3BsYXkgPSBhZG9wdFJlZigqbmV3IFZSRGlzcGxheShj
b250ZXh0LCBXVEZNb3ZlKHBsYXRmb3JtRGlzcGxheSkpKTsKLSAgICBkaXNwbGF5LT5zdXNwZW5k
SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gZGlzcGxheTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBWUkRpc3BsYXkoY29udGV4dCwgV1RGTW92ZShwbGF0Zm9ybURpc3BsYXkpKSk7CiB9CiAKIFZS
RGlzcGxheTo6VlJEaXNwbGF5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQ
dHI8VlJQbGF0Zm9ybURpc3BsYXk+JiYgcGxhdGZvcm1EaXNwbGF5KQpAQCAtNTksOSArNTksMTUg
QEAgVlJEaXNwbGF5OjpWUkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4KICAgICBtX3JpZ2h0RXllUGFyYW1ldGVycyA9IFZS
RXllUGFyYW1ldGVyczo6Y3JlYXRlKGRpc3BsYXlJbmZvLmV5ZVRyYW5zbGF0aW9uKFZSUGxhdGZv
cm1EaXNwbGF5SW5mbzo6RXllUmlnaHQpLCBkaXNwbGF5SW5mby5leWVGaWVsZE9mVmlldyhWUlBs
YXRmb3JtRGlzcGxheUluZm86OkV5ZVJpZ2h0KSwgZGlzcGxheUluZm8ucmVuZGVyU2l6ZSgpKTsK
ICAgICBtX2Rpc3BsYXlJZCA9IGRpc3BsYXlJbmZvLmRpc3BsYXlJZGVudGlmaWVyKCk7CiAgICAg
bV9kaXNwbGF5TmFtZSA9IGRpc3BsYXlJbmZvLmRpc3BsYXlOYW1lKCk7CisKKyAgICBtX2Rpc3Bs
YXktPnNldENsaWVudCh0aGlzKTsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAotVlJEaXNw
bGF5Ojp+VlJEaXNwbGF5KCkgPSBkZWZhdWx0OworVlJEaXNwbGF5Ojp+VlJEaXNwbGF5KCkKK3sK
KyAgICBtX2Rpc3BsYXktPnNldENsaWVudChudWxscHRyKTsKK30KIAogYm9vbCBWUkRpc3BsYXk6
OmlzQ29ubmVjdGVkKCkgY29uc3QKIHsKQEAgLTE5OCw2ICsyMDQsMjYgQEAgdm9pZCBWUkRpc3Bs
YXk6OnN1Ym1pdEZyYW1lKCkKIHsKIH0KIAordm9pZCBWUkRpc3BsYXk6OnBsYXRmb3JtRGlzcGxh
eUNvbm5lY3RlZCgpCit7CisgICAgZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZl
bnQoVlJEaXNwbGF5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudnJkaXNwbGF5Y29ubmVjdEV2
ZW50LCBtYWtlUmVmUHRyKHRoaXMpLCBzdGQ6Om51bGxvcHQpKTsKK30KKwordm9pZCBWUkRpc3Bs
YXk6OnBsYXRmb3JtRGlzcGxheURpc2Nvbm5lY3RlZCgpCit7CisgICAgZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPmRpc3BhdGNoRXZlbnQoVlJEaXNwbGF5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkudnJkaXNwbGF5ZGlzY29ubmVjdEV2ZW50LCBtYWtlUmVmUHRyKHRoaXMpLCBzdGQ6Om51bGxv
cHQpKTsKK30KKwordm9pZCBWUkRpc3BsYXk6OnBsYXRmb3JtRGlzcGxheU1vdW50ZWQoKQorewor
ICAgIGRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFZSRGlzcGxheUV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnZyZGlzcGxheWFjdGl2YXRlRXZlbnQsIG1ha2VSZWZQdHIo
dGhpcyksIFZSRGlzcGxheUV2ZW50UmVhc29uOjpNb3VudGVkKSk7Cit9CisKK3ZvaWQgVlJEaXNw
bGF5OjpwbGF0Zm9ybURpc3BsYXlVbm1vdW50ZWQoKQoreworICAgIGRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5kaXNwYXRjaEV2ZW50KFZSRGlzcGxheUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnZyZGlzcGxheWRlYWN0aXZhdGVFdmVudCwgbWFrZVJlZlB0cih0aGlzKSwgVlJEaXNwbGF5RXZl
bnRSZWFzb246OlVubW91bnRlZCkpOworfQorCiBib29sIFZSRGlzcGxheTo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ2ci9WUkRpc3BsYXkuaAppbmRleCA0YTk5Yzk2YTk2NzkzMzllMmJiMTJkZTZmNmY1YTZj
Mjk3Njc3ZDYzLi41OTRkZmMwMmY4MWIxOThjN2IyYmE3MTNlZjRkZWQzNzFmMTEyMWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJWUkV5ZS5oIgogI2lu
Y2x1ZGUgIlZSTGF5ZXJJbml0LmgiCisjaW5jbHVkZSAiVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NCw3ICs0NSw3IEBAIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5OwogY2xhc3MgVlJQb3NlOwog
Y2xhc3MgVlJTdGFnZVBhcmFtZXRlcnM7CiAKLWNsYXNzIFZSRGlzcGxheSA6IHB1YmxpYyBSZWZD
b3VudGVkPFZSRGlzcGxheT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIFZSRGlzcGxheSA6IHB1YmxpYyBSZWZDb3VudGVk
PFZSRGlzcGxheT4sIHB1YmxpYyBWUlBsYXRmb3JtRGlzcGxheUNsaWVudCwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8VlJEaXNwbGF5PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+JiYpOwogCkBAIC04NCw2ICs4NSwxMiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CiAKKyAgICAvLyBWUlBsYXRmb3JtRGlzcGxh
eUNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIHBsYXRmb3JtRGlzcGxheUNvbm5lY3Rl
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1EaXNwbGF5RGlzY29ubmVjdGVkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybURpc3BsYXlNb3VudGVkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwbGF0Zm9ybURpc3BsYXlVbm1vdW50ZWQoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAg
ICBWUkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8VlJQbGF0Zm9ybURp
c3BsYXk+JiYpOwogCkBAIC0xMDEsNiArMTA4LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3Rv
cFByZXNlbnRpbmcoKTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIGRvd25j
YXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOyB9CisKICAgICBXZWFrUHRy
PFZSUGxhdGZvcm1EaXNwbGF5PiBtX2Rpc3BsYXk7CiAKICAgICBSZWZQdHI8VlJEaXNwbGF5Q2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAKaW5kZXggNDk5ZGM0ZmY5NDFiNjdhMzYyYzNiZGRjZmMx
MWJjMGJhZGU3MzFjMy4uNWFjZDY5OGViMzJkZGE4OWNiNWE3ZjNkYWJjODRjNmU0NzE1NzFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBJZ2FsaWEgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmgKaW5kZXggZDM2
ZWExZmZiNmQ2YjBiOGRlMWQ1M2YyN2YzZGYwMjU5ZDk5NzRkNi4uOWUxOTc0MWEzMTFkNzliODZh
OTNkOTdjYjc0MWJjYzAzYTIxYzBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5RXZlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYjQyM2M3YjYwNzQyYTI1YWE5MWIw
MjRlZTM4NjM3N2YxNThhYzBiYi4uNmU1NjAzOTMxMmViNjk1YTZhM2MxYjNhNmQ1N2U3NGM5ZTU4
NDc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4MDcsNiArMTgwNyw3IEBAIHBsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwCiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1Jl
Z2lzdHJ5LmNwcAogCiBwbGF0Zm9ybS92ci9WUk1hbmFnZXIuY3BwCitwbGF0Zm9ybS92ci9WUlBs
YXRmb3JtRGlzcGxheS5jcHAKIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9w
ZW5WUi5jcHAKIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGU2NzVjYjYyNzA1Y2M1ODM1M2I4ZmQyMzhkZDQ2Y2ZkM2Y1YWNhMmMuLjUwMzgxOGNj
NTkzNzMzNTYwMDgyOTlmYjMwMTgwZjUyZmM2NjdjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0OTksNiArMjQ5OSw3IEBA
CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2
MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3QTY4MjAxQkIz
OUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyogUmVh
ZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKKwkJOEU2MjBFODEy
MEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1RkZDMDA3QkM1
RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZBNTMgLyogR2Fw
TGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3NDAxMkUwMzQ3
ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8q
IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9OwpAQCAtMTAxOTUsNiArMTAxOTYsOCBA
QAogCQk4RTMzQ0Q5MzIwMUEyOUMxMDBFMzkwOTMgLyogR2FwTGVuZ3RoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdhcExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThFNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9u
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaFJlc3Bv
bnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDkxQUQ0NDgzNTAw
MzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0ZldGNoUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEU2
MjBFN0UyMEVFNUZFMjAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZSUGxhdGZvcm1EaXNwbGF5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEU2MjBFODAyMEVFNUZGQzAwN0JDNUVGIC8qIFZSUGxh
dGZvcm1EaXNwbGF5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZS
UGxhdGZvcm1EaXNwbGF5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThF
QzZDOTYxMjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2FwTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CThGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01haW5UaHJlYWRFeGVjU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDI1LDcgKzI1MDI4LDkgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUUxODgyMzYyMjAzMUY1NUMwMEI0MkRGMyAvKiBWUk1hbmFnZXIu
Y3BwICovLAogCQkJCUUxODgyMzYzMjAzMUY1NUQwMEI0MkRGMyAvKiBWUk1hbmFnZXIuaCAqLywK
KwkJCQk4RTYyMEU3RTIwRUU1RkUyMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXkuY3BwICov
LAogCQkJCUUxODgyMzYwMjAzMUY1NUEwMEI0MkRGMyAvKiBWUlBsYXRmb3JtRGlzcGxheS5oICov
LAorCQkJCThFNjIwRTgwMjBFRTVGRkMwMDdCQzVFRiAvKiBWUlBsYXRmb3JtRGlzcGxheUNsaWVu
dC5oICovLAogCQkJCUUxODgyMzYxMjAzMUY1NUIwMEI0MkRGMyAvKiBWUlBsYXRmb3JtTWFuYWdl
ci5oICovLAogCQkJKTsKIAkJCXBhdGggPSB2cjsKQEAgLTMwNzgwLDYgKzMwNzg1LDcgQEAKIAkJ
CQlFNDQ2MTNCNjBDRDYzNDRFMDBGQURBNzUgLyogVm9pZENhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTg4MjM2NDIwMzFGNTcxMDBCNDJERjMgLyogVlJNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTg4MjM2NTIwMzFGNTdGMDBCNDJERjMgLyogVlJQbGF0Zm9ybURpc3BsYXku
aCBpbiBIZWFkZXJzICovLAorCQkJCThFNjIwRTgxMjBFRTYwMjQwMDdCQzVFRiAvKiBWUlBsYXRm
b3JtRGlzcGxheUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4ODIzNjYyMDMxRjU5NDAw
QjQyREYzIC8qIFZSUGxhdGZvcm1NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTIwNTA3
QTE4QTQ1ODZCMDA4MDY0N0UgLyogVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIw
MzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9WUk1hbmFnZXIuY3BwCmluZGV4IGY3YTY4NDZlZTZkZDAzOGQyNTBi
MmM3ZTNmMmIyZmU2NzYxOWYxZGMuLmM5N2M1ZjQzMWJmNTRmNmQwZjQzODI5MWM5NzNjZmY2MTU0
OWU4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhLCBTLkwuIEFsbCByaWdo
dCByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSwgUy5MLiBBbGwg
cmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDcgKzUzLDMzIEBAIHN0
ZDo6b3B0aW9uYWw8VlJNYW5hZ2VyOjpWUkRpc3BsYXlzVmVjdG9yPiBWUk1hbmFnZXI6OmdldFZS
RGlzcGxheXMoKQogICAgIGlmICghbV9wbGF0Zm9ybU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU1hbmFnZXItPmdldFZSRGlzcGxh
eXMoKTsKKyAgICBhdXRvIGRpc3BsYXlzID0gbV9wbGF0Zm9ybU1hbmFnZXItPmdldFZSRGlzcGxh
eXMoKTsKKyAgICBWUkRpc3BsYXlzSGFzaE1hcCBuZXdEaXNwbGF5czsKKyAgICBmb3IgKGF1dG8m
IGRpc3BsYXkgOiBkaXNwbGF5cykgeworICAgICAgICBBU1NFUlQoZGlzcGxheSk7CisgICAgICAg
IG5ld0Rpc3BsYXlzLmFkZChkaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmRpc3BsYXlJZGVudGlm
aWVyKCksIGRpc3BsYXkpOworCisgICAgICAgIFZSUGxhdGZvcm1EaXNwbGF5SW5mbyBpbmZvID0g
ZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fZGlz
cGxheXMuZmluZChpbmZvLmRpc3BsYXlJZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoaXRlcmF0
b3IgPT0gbV9kaXNwbGF5cy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGRpc3BsYXktPnVwZGF0ZURpc3BsYXlJbmZvKCk7CisgICAgICAgIFZSUGxhdGZvcm1EaXNwbGF5
SW5mbyBuZXdJbmZvID0gZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKTsKKyAgICAgICAgaWYgKGlu
Zm8uaXNDb25uZWN0ZWQoKSAhPSBuZXdJbmZvLmlzQ29ubmVjdGVkKCkpCisgICAgICAgICAgICBk
aXNwbGF5LT5ub3RpZnlWUlBsYXRmb3JtRGlzcGxheUV2ZW50KG5ld0luZm8uaXNDb25uZWN0ZWQo
KSA/IFZSUGxhdGZvcm1EaXNwbGF5OjpFdmVudDo6Q29ubmVjdGVkIDogVlJQbGF0Zm9ybURpc3Bs
YXk6OkV2ZW50OjpEaXNjb25uZWN0ZWQpOworICAgICAgICBpZiAoaW5mby5pc01vdW50ZWQoKSAh
PSBuZXdJbmZvLmlzTW91bnRlZCgpKQorICAgICAgICAgICAgZGlzcGxheS0+bm90aWZ5VlJQbGF0
Zm9ybURpc3BsYXlFdmVudChuZXdJbmZvLmlzTW91bnRlZCgpID8gVlJQbGF0Zm9ybURpc3BsYXk6
OkV2ZW50OjpNb3VudGVkIDogVlJQbGF0Zm9ybURpc3BsYXk6OkV2ZW50OjpVbm1vdW50ZWQpOwor
ICAgIH0KKworICAgIGZvciAoYXV0byYgaXRlciA6IG1fZGlzcGxheXMpIHsKKyAgICAgICAgQVNT
RVJUKGl0ZXIudmFsdWUpOworICAgICAgICBpZiAoIW5ld0Rpc3BsYXlzLmNvbnRhaW5zKGl0ZXIu
a2V5KSkKKyAgICAgICAgICAgIGl0ZXIudmFsdWUtPm5vdGlmeVZSUGxhdGZvcm1EaXNwbGF5RXZl
bnQoVlJQbGF0Zm9ybURpc3BsYXk6OkV2ZW50OjpEaXNjb25uZWN0ZWQpOworICAgIH0KKworICAg
IG1fZGlzcGxheXMgPSBXVEZNb3ZlKG5ld0Rpc3BsYXlzKTsKKyAgICByZXR1cm4gZGlzcGxheXM7
CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS92ci9WUk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZS
TWFuYWdlci5oCmluZGV4IDA5NDJjN2NiNTVmMDU5ZTJkNzg2ZDIzMzYyNDA2MjFjYWVhZTMzZGUu
LmZiM2I3Y2QyZjhlZTEzYTY0NzU5ZGY2OTRjYWVkNWE1ZDRlOGVkOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTggSWdhbGlhLCBTLkwuIEFsbCByaWdodCByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00Myw2ICs0NCw4
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVlJNYW5hZ2VyKCk7CiAKKyAgICB1c2luZyBWUkRp
c3BsYXlzSGFzaE1hcCA9IEhhc2hNYXA8dWludDMyX3QsIFdlYWtQdHI8VlJQbGF0Zm9ybURpc3Bs
YXk+PjsKKyAgICBWUkRpc3BsYXlzSGFzaE1hcCBtX2Rpc3BsYXlzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxWUlBsYXRmb3JtTWFuYWdlcj4gbV9wbGF0Zm9ybU1hbmFnZXI7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzMwYTczNGU5MmYwOTcwNDUyYzBiMGQxODEzOWY5MjEzZWY1MmNhYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmNwcApA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBB
bGwgcmlnaHQgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVlJQ
bGF0Zm9ybURpc3BsYXkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFZSUGxhdGZv
cm1EaXNwbGF5OjpzZXRDbGllbnQoVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBBU1NFUlQoIWNsaWVudCB8fCAhbV9jbGllbnQpOworICAgIG1fY2xpZW50ID0gY2xpZW50
OworfQorCit2b2lkIFZSUGxhdGZvcm1EaXNwbGF5Ojpub3RpZnlWUlBsYXRmb3JtRGlzcGxheUV2
ZW50KEV2ZW50IGV2ZW50KQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIHN3aXRjaCAoZXZlbnQpIHsKKyAgICBjYXNlIEV2ZW50OjpDb25uZWN0ZWQ6CisgICAg
ICAgIG1fY2xpZW50LT5wbGF0Zm9ybURpc3BsYXlDb25uZWN0ZWQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBFdmVudDo6RGlzY29ubmVjdGVkOgorICAgICAgICBtX2NsaWVudC0+cGxhdGZv
cm1EaXNwbGF5RGlzY29ubmVjdGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnQ6
Ok1vdW50ZWQ6CisgICAgICAgIG1fY2xpZW50LT5wbGF0Zm9ybURpc3BsYXlNb3VudGVkKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnQ6OlVubW91bnRlZDoKKyAgICAgICAgbV9jbGll
bnQtPnBsYXRmb3JtRGlzcGxheVVubW91bnRlZCgpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9W
UlBsYXRmb3JtRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9y
bURpc3BsYXkuaAppbmRleCAxYTA4ZWIyOGZmMjRhMzVhMjE5MWVhZmI5MjliN2EwNDIzYjI3Y2Fk
Li4yMWZhM2UwZjAzODM2MTFjNjgwYmYwYzAzMTE3MzE4YmVjYjQzZjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmgKQEAgLTIyLDYgKzIyLDcg
QEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCisjaW5jbHVkZSAiVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCIKIAogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0x
NjEsNyArMTYyLDIyIEBAIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWUlBsYXRm
b3JtRGlzcGxheUluZm8gZ2V0RGlzcGxheUluZm8oKSA9IDA7CiAgICAgdmlydHVhbCBWUlBsYXRm
b3JtVHJhY2tpbmdJbmZvIGdldFRyYWNraW5nSW5mbygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGlzcGxheUluZm8oKSA9IDA7CiAgICAgdmlydHVhbCB+VlJQbGF0Zm9ybURpc3BsYXko
KSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldENsaWVudChWUlBsYXRmb3JtRGlzcGxheUNsaWVu
dCopOworCisgICAgZW51bSBjbGFzcyBFdmVudCB7CisgICAgICAgIENvbm5lY3RlZCwKKyAgICAg
ICAgRGlzY29ubmVjdGVkLAorICAgICAgICBNb3VudGVkLAorICAgICAgICBVbm1vdW50ZWQsCisg
ICAgfTsKKworICAgIHZvaWQgbm90aWZ5VlJQbGF0Zm9ybURpc3BsYXlFdmVudChFdmVudCk7CisK
K3ByaXZhdGU6CisgICAgVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0
ciB9OwogfTsKIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheUNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYy
ZmJkZjBjMzU2ZWI2MmNjM2U4NjYxNjFiMTRhOGI3ODBhYTMyMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheUNsaWVudC5oCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhLCBTLkwuIEFs
bCByaWdodCByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1EaXNwbGF5Q29ubmVjdGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtRGlzcGxheURpc2Nvbm5lY3RlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bURpc3BsYXlNb3VudGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtRGlzcGxheVVu
bW91bnRlZCgpIHsgfQorCisgICAgdmlydHVhbCB+VlJQbGF0Zm9ybURpc3BsYXlDbGllbnQoKSB7
IH0KK307CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNw
cAppbmRleCBkZDYyODhlMGVkYmU3YWM4NzEzOTY0ZDhjYTcyMjljMDhjYjcwZWJiLi4xNTY1ODMw
Mjc2N2Q5YTExN2UwZTgyYjk2ODM1ZjlmZWJhNDRhN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ui5jcHAKQEAgLTE1OCw2ICsxNTgsMzYgQEAgVlJQbGF0Zm9ybVRyYWNraW5nSW5mbyBWUlBsYXRm
b3JtRGlzcGxheU9wZW5WUjo6Z2V0VHJhY2tpbmdJbmZvKCkKICAgICByZXR1cm4gbV90cmFja2lu
Z0luZm87CiB9CiAKK3ZvaWQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OnVwZGF0ZURpc3BsYXlJ
bmZvKCkKK3sKKyAgICBpZiAoIXZyOjpWUl9Jc0htZFByZXNlbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdnI6OlZSRXZlbnRfdCBldmVudDsKKyAgICB3aGlsZSAobV9zeXN0ZW0gJiYgbV9z
eXN0ZW0tPlBvbGxOZXh0RXZlbnQoJmV2ZW50LCBzaXplb2YoZXZlbnQpKSkgeworICAgICAgICBz
d2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSkgeworICAgICAgICBjYXNlIHZyOjpWUkV2ZW50X1RyYWNr
ZWREZXZpY2VVc2VySW50ZXJhY3Rpb25TdGFydGVkOgorICAgICAgICBjYXNlIHZyOjpWUkV2ZW50
X1RyYWNrZWREZXZpY2VVc2VySW50ZXJhY3Rpb25FbmRlZDoKKyAgICAgICAgICAgIGlmIChldmVu
dC50cmFja2VkRGV2aWNlSW5kZXggPT0gdnI6OmtfdW5UcmFja2VkRGV2aWNlSW5kZXhfSG1kKQor
ICAgICAgICAgICAgICAgIG1fZGlzcGxheUluZm8uc2V0SXNNb3VudGVkKGV2ZW50LmV2ZW50VHlw
ZSA9PSB2cjo6VlJFdmVudF9UcmFja2VkRGV2aWNlVXNlckludGVyYWN0aW9uU3RhcnRlZCA/IHRy
dWUgOiBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSB2cjo6RVZSRXZl
bnRUeXBlOjpWUkV2ZW50X1RyYWNrZWREZXZpY2VBY3RpdmF0ZWQ6CisgICAgICAgIGNhc2UgdnI6
OkVWUkV2ZW50VHlwZTo6VlJFdmVudF9UcmFja2VkRGV2aWNlRGVhY3RpdmF0ZWQ6CisgICAgICAg
ICAgICBpZiAoZXZlbnQudHJhY2tlZERldmljZUluZGV4ID09IHZyOjprX3VuVHJhY2tlZERldmlj
ZUluZGV4X0htZCkKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlJbmZvLnNldElzQ29ubmVjdGVk
KGV2ZW50LmV2ZW50VHlwZSA9PSB2cjo6VlJFdmVudF9UcmFja2VkRGV2aWNlQWN0aXZhdGVkID8g
dHJ1ZSA6IGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHZyOjpFVlJF
dmVudFR5cGU6OlZSRXZlbnRfRHJpdmVyUmVxdWVzdGVkUXVpdDoKKyAgICAgICAgY2FzZSB2cjo6
RVZSRXZlbnRUeXBlOjpWUkV2ZW50X1F1aXQ6CisgICAgICAgIGNhc2UgdnI6OkVWUkV2ZW50VHlw
ZTo6VlJFdmVudF9Qcm9jZXNzUXVpdDoKKyAgICAgICAgY2FzZSB2cjo6RVZSRXZlbnRUeXBlOjpW
UkV2ZW50X1F1aXRBY2tub3dsZWRnZWQ6CisgICAgICAgIGNhc2UgdnI6OkVWUkV2ZW50VHlwZTo6
VlJFdmVudF9RdWl0QWJvcnRlZF9Vc2VyUHJvbXB0OgorICAgICAgICAgICAgLy8gRklYTUU6IHNo
b3VsZCB3ZSBub3RpZnkgdGhlIHBsYXRmb3JtIG1hbmFnZXIgYWJvdXQgdGhpcyBhbmQgY2FsbCBW
Ul9TaHV0ZG93bigpLgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBV
U0UoT1BFTlZSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZy
L1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaAppbmRleCAzYWJlM2RhYzA3OWUxZDkwY2Fh
MGE4NWUxNWIyZGQ2NWVjM2IzYTJiLi5kZDZhZTczNjA0Njc5ZjE4OGUwMWUxMTBlNGZlYmU1OTNk
NTM3ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQ
bGF0Zm9ybURpc3BsYXlPcGVuVlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhLCBTLkwuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDYgKzM1LDcgQEAgcHVibGljOgogICAgIH5WUlBsYXRm
b3JtRGlzcGxheU9wZW5WUigpID0gZGVmYXVsdDsKICAgICBWUlBsYXRmb3JtRGlzcGxheUluZm8g
Z2V0RGlzcGxheUluZm8oKSBvdmVycmlkZSB7IHJldHVybiBtX2Rpc3BsYXlJbmZvOyB9CiAgICAg
VlJQbGF0Zm9ybVRyYWNraW5nSW5mbyBnZXRUcmFja2luZ0luZm8oKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZURpc3BsYXlJbmZvKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgVlJQbGF0
Zm9ybURpc3BsYXlJbmZvOjpGaWVsZE9mVmlldyBjb21wdXRlRmllbGRPZlZpZXcodnI6OkhtZF9F
eWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345093</attachid>
            <date>2018-07-16 06:44:20 -0700</date>
            <delta_ts>2018-07-16 07:24:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187343-20180716154417.patch</filename>
            <type>text/plain</type>
            <size>30053</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNmY2MxMjJlYjFkYTI4
NGZjOTM0MTZmNmVhN2U5YjhiMGI1YTUyZS4uOGJmMTQ3YmMzZjcxN2VkZmUwZGU3Mzg1MDM1MjM0
MDE5N2YxYTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTA3LTA1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl0g
QWRkIHN1cHBvcnQgZm9yIGNvbm5lY3QvZGlzY29ubmVjdCBhbmQgbW91bnQvdW5tb3VudCBkZXZp
Y2UgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODczNDMKKworICAgICAgICBSZXZpZXdlZCBieSDFvWFuIERvYmVyxaFlay4KKworICAgICAg
ICBXZWJWUiBzcGVjcyBkZWZpbmUgYSBzZXJpZXMgb2YgZXZlbnRzIGFzIHBhcnQgb2YgdGhlIFdp
bmRvdyBJbnRlcmZhY2UgRXh0ZW5zaW9uLiBXZSdyZQorICAgICAgICBhZGRpbmcgc3VwcG9ydCBm
b3IgdGhlIGNvbm5lY3QvZGlzY29ubmVjdCBhbmQgbW91bnQvdW5tb3VudCBldmVudHMgYm90aCBh
dCB0aGUgbW9kdWxlIGxldmVsCisgICAgICAgIGFuZCB0aGUgcGxhdGZvcm0gbGV2ZWwgdXNpbmcg
T3BlblZSLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoYXQgd2UgbmVlZCB0byBrZWVwIGxp
c3RzIG9mIFZSUGxhdGZvcm1EaXNwbGF5cyBhdCBwbGF0Zm9ybSBsZXZlbCBhbmQKKyAgICAgICAg
VlJEaXNwbGF5cyBhdCBiaW5kaW5ncyBsZXZlbC4gV2UgdGhlbiB1cGRhdGUgdGhvc2UgbGlzdHMg
YWNjb3JkaW5nbHkgdG8gZGV0ZWN0IHBvdGVudGlhbAorICAgICAgICBhZGRpdGlvbnMvcmVtb3Zh
bHMsIGFuZCBlbWl0IHRoZSBjb3JyZXNwb25kaW5nIHNpZ25hbHMuIEEgbmV3IGNsaWVudCBpbnRl
cmZhY2UKKyAgICAgICAgVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQgd2FzIGFsc28gZGVmaW5lZCBz
byB0aGF0IFZSUGxhdGZvcm1EaXNwbGF5IGltcGxlbWVudGF0aW9ucyBjb3VsZAorICAgICAgICBu
b3RpZnkgdGhlaXIgY2xpZW50cyAodHlwaWNhbGx5IGEgVlJEaXNwbGF5KS4KKworICAgICAgICBM
YXN0IGJ1dCBub3QgbGVhc3QsIE5hdmlnYXRvcldlYlZSIHdhcyB1cGRhdGVkIHNvIGl0IHN1cHBs
ZW1lbnRzIE5hdmlnYXRvciBpbnN0ZWFkIG9mCisgICAgICAgIHN1cHBsZW1lbnRpbmcgUGFnZS4K
KworICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwOiBTdXBwbGVtZW50
IE5hdmlnYXRvciBub3QgUGFnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpn
ZXRWUkRpc3BsYXlzKTogS2VlcCBhIGxpc3Qgb2YgVlJEaXNwbGF5cyBhbmQgdXBkYXRlIHRoZW0K
KyAgICAgICAgY29udmVuaWVudGx5LCBhbHNvIGVtaXR0aW5nIHRoZSByZXF1aXJlZCBldmVudHMg
dW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChsaWtlIGRldmljZQorICAgICAgICBkaXNjb25uZWN0
aW9uKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpzdXBwbGVtZW50TmFtZSk6
IE5ldyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJWUjo6ZnJvbSk6IERp
dHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaDogU3VwcGxlbWVu
dCBOYXZpZ2F0b3Igbm90IFBhZ2UuCisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpjcmVhdGUpOiBNb3ZlZCBzdXNwZW5k
SWZOZWVkZWQoKSB0byBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6
VlJEaXNwbGF5KTogU2V0IGl0c2VsZiBhcyBWUlBsYXRmb3JtRGlzcGxheSBjbGllbnQuCisgICAg
ICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6On5WUkRpc3BsYXkpOiBVbnNldCBhcyAgVlJQbGF0Zm9y
bURpc3BsYXkgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUlBsYXRmb3Jt
RGlzcGxheUNvbm5lY3RlZCk6IERpc3BhdGNoIGV2ZW50IG9uIERPTSB3aW5kb3cuCisgICAgICAg
IChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5RGlzY29ubmVjdGVkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSUGxhdGZvcm1EaXNwbGF5TW91bnRl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpWUlBsYXRmb3JtRGlzcGxh
eVVubW91bnRlZCk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Lmg6
IEV4dGVuZCBmcm9tIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6
VlJEaXNwbGF5Ojpkb2N1bWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlF
dmVudC5jcHA6IFVwZGF0ZWQgQ29weXJpZ2h0LgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJE
aXNwbGF5RXZlbnQuaDogRGl0dG8uCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIHRoZSB0
d28gbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZSTWFuYWdlcjo6Z2V0VlJEaXNwbGF5cyk6IEtlZXAgYSBsaXN0IG9mIFZSUGxh
dGZvcm1EaXNwbGF5cyBhbmQgdXBkYXRlIHRoZW0gY29udmVuaWVudGx5LAorICAgICAgICBhbHNv
IGVtaXR0aW5nIHRoZSByZXF1aXJlZCBldmVudHMgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChs
aWtlIGRldmljZSBkaXNjb25uZWN0aW9uKS4KKyAgICAgICAgKiBwbGF0Zm9ybS92ci9WUk1hbmFn
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHA6IE5ldyBm
aWxlIHdpdGggY29tbW9uIGltcGxlbWVudGF0aW9ucyBmb3IgVlJQbGF0Zm9ybURpc3BsYXlzLgor
ICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybURpc3BsYXk6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheTo6bm90aWZ5VlJQbGF0Zm9ybURpc3BsYXlFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3BsYXkuaDogQWRkZWQgYSBn
ZW5lcmljIG1ldGhvZCB0byBub3RpZnkgYWJvdXQgZGlmZmVyZW50CisgICAgICAgIGV2ZW50cy4g
QWRkZWQgdGhlIGNsaWVudCBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL3ZyL1ZSUGxhdGZv
cm1EaXNwbGF5Q2xpZW50Lmg6IE5ldyBmaWxlLiBWUlBsYXRmb3JtRGlzcGxheSBpbXBsZW1lbnRh
dGlvbnMgd2lsbAorICAgICAgICBjYWxsIHRoZSBjbGllbnQgbWV0aG9kcyBpbiB0aGUgZXZlbnQg
b2Ygc29tZSBjaXJjdW1zdGFuY2VzIGhhcHBlbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlZSUGxh
dGZvcm1EaXNwbGF5Q2xpZW50OjpWUlBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtRGlzcGxheUNsaWVudDo6VlJQbGF0Zm9ybURpc3BsYXlEaXNj
b25uZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybURpc3BsYXlDbGllbnQ6OlZS
UGxhdGZvcm1EaXNwbGF5TW91bnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtRGlz
cGxheUNsaWVudDo6VlJQbGF0Zm9ybURpc3BsYXlVbm1vdW50ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjo6dXBkYXRlRGlzcGxheUluZm8pOiBQb2xsIHRo
ZSBkZXZpY2UgZm9yIG5ldyBldmVudHMgdG8KKyAgICAgICAgZGV0ZWN0IGNvbm5lY3Rpb24vZGlz
Y29ubmVjdGlvbnMgb3IgZGV2aWNlIGFjdGl2YXRpb25zL2RlYWN0aXZhdGlvbnMgKEhNRAorICAg
ICAgICBtb3VudGVkL3VubW91bnRlZCkuCisgICAgICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZS
UGxhdGZvcm1EaXNwbGF5T3BlblZSLmg6CisKIDIwMTgtMDctMTYgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtOaWNvc2lhXSBBZGQgTmljb3NpYTo6UGxh
dGZvcm1MYXllciwgTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciBjbGFzc2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGYyYzIzMzA3
YjgwOTg2NjU0OTQ3NWQ1NGZiMzVlZjg2OGM0OGY0OGEuLmE2MTFmNDMyMDM3NGZkOWEwNzA5ZDQ0
MjViNDRiMjA0OTgyODU4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTggSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjcgKzMyLDUwIEBACiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlZSRGlzcGxheS5oIgogI2luY2x1ZGUgIlZSTWFu
YWdlci5oIgorI2luY2x1ZGUgIlZSUGxhdGZvcm1EaXNwbGF5LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBOYXZpZ2F0b3JXZWJWUjo6Z2V0VlJEaXNwbGF5cyhOYXZpZ2F0b3ImLCBE
b2N1bWVudCYgZG9jdW1lbnQsIEdldFZSRGlzcGxheXNQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQg
TmF2aWdhdG9yV2ViVlI6OmdldFZSRGlzcGxheXMoTmF2aWdhdG9yJiBuYXZpZ2F0b3IsIERvY3Vt
ZW50JiBkb2N1bWVudCwgR2V0VlJEaXNwbGF5c1Byb21pc2UmJiBwcm9taXNlKQogewogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJWUkVuYWJsZWQo
KSkgewogICAgICAgICBwcm9taXNlLnJlamVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIE5hdmlnYXRvcldlYlZSOjpmcm9tKCZuYXZpZ2F0b3IpLT5nZXRWUkRpc3BsYXlzKGRvY3Vt
ZW50LCBXVEZNb3ZlKHByb21pc2UpKTsKK30KIAotICAgIGRvY3VtZW50LnBvc3RUYXNrKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewordm9pZCBOYXZpZ2F0b3JXZWJWUjo6Z2V0VlJEaXNwbGF5cyhEb2N1bWVudCYg
ZG9jdW1lbnQsIEdldFZSRGlzcGxheXNQcm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBkb2N1bWVu
dC5wb3N0VGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxW
Uk1hbmFnZXI6OlZSRGlzcGxheXNWZWN0b3I+IHBsYXRmb3JtRGlzcGxheXMgPSBWUk1hbmFnZXI6
OnNpbmdsZXRvbigpLmdldFZSRGlzcGxheXMoKTsKICAgICAgICAgaWYgKCFwbGF0Zm9ybURpc3Bs
YXlzKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICAgICAgbV9kaXNw
bGF5cy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
VmVjdG9yPFJlZjxWUkRpc3BsYXk+PiBkaXNwbGF5czsKLSAgICAgICAgZm9yIChhdXRvJiBwbGF0
Zm9ybURpc3BsYXkgOiBwbGF0Zm9ybURpc3BsYXlzLnZhbHVlKCkpCi0gICAgICAgICAgICBkaXNw
bGF5cy5hcHBlbmQoVlJEaXNwbGF5OjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShwbGF0Zm9ybURp
c3BsYXkpKSk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShkaXNwbGF5cyk7CisgICAgICAgIFZl
Y3RvcjxSZWY8VlJEaXNwbGF5Pj4gb2xkRGlzcGxheXMgPSBXVEZNb3ZlKG1fZGlzcGxheXMpOwor
CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmVjdG9yIG9mIGRpc3BsYXlzLiBOb3RlIHRoYXQgYWx0
aG91Z2ggdGhpcyBpcyBPKG5eMikgdGhlIGFtb3VudCBvZiBleHBlY3RlZAorICAgICAgICAvLyBW
UkRpc3BsYXlzIGlzIHNvIHJlZHVjZWQgdGhhdCBpdCdsbCBydW4gZmFzdCBlbm91Z2guCisgICAg
ICAgIGZvciAoYXV0byYgcGxhdGZvcm1EaXNwbGF5IDogcGxhdGZvcm1EaXNwbGF5cy52YWx1ZSgp
KSB7CisgICAgICAgICAgICBib29sIG5ld0Rpc3BsYXkgPSB0cnVlOworICAgICAgICAgICAgZm9y
IChhdXRvJiBvbGREaXNwbGF5IDogb2xkRGlzcGxheXMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cGxhdGZvcm1EaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmRpc3BsYXlJZGVudGlmaWVyKCkgPT0g
b2xkRGlzcGxheS0+ZGlzcGxheUlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3RGlzcGxh
eSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBtX2Rpc3BsYXlzLmFwcGVuZChvbGREaXNw
bGF5LmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZXdEaXNwbGF5KSB7CisgICAg
ICAgICAgICAgICAgbV9kaXNwbGF5cy5hcHBlbmQoVlJEaXNwbGF5OjpjcmVhdGUoY29udGV4dCwg
V1RGTW92ZShwbGF0Zm9ybURpc3BsYXkpKSk7CisgICAgICAgICAgICAgICAgbV9kaXNwbGF5cy5s
YXN0KCktPnBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHByb21pc2UucmVzb2x2ZShXVEY6Om1hcChtX2Rpc3BsYXlzLCBbXShjb25z
dCBSZWY8VlJEaXNwbGF5PiYgZGlzcGxheSkgeworICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXku
Y29weVJlZigpOworICAgICAgICB9KSk7CiAgICAgfSk7CiB9CiAKQEAgLTYyLDQgKzg1LDIwIEBA
IGNvbnN0IFZlY3RvcjxSZWZQdHI8VlJEaXNwbGF5Pj4mIE5hdmlnYXRvcldlYlZSOjphY3RpdmVW
UkRpc3BsYXlzKE5hdmlnYXRvciYpCiAgICAgcmV0dXJuIG1vY2tWZWN0b3I7CiB9CiAKK2NvbnN0
IGNoYXIqIE5hdmlnYXRvcldlYlZSOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJO
YXZpZ2F0b3JXZWJWUiI7Cit9CisKK05hdmlnYXRvcldlYlZSKiBOYXZpZ2F0b3JXZWJWUjo6ZnJv
bShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKK3sKKyAgICBOYXZpZ2F0b3JXZWJWUiogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOworICAgIGlmICghc3VwcGxlbWVudCkg
eworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
cldlYlZSPigpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKKyAg
ICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdT
dXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L05hdmlnYXRvcldlYlZSLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRv
cldlYlZSLmgKaW5kZXggNDZlZjFkNTQ1MjNkYzY4YmE0NGFmMTljZjI3OWMzYjk3OGViZDllZS4u
YmUwNTliOGMzNmY3MTFiODViOTdhOGMyMWM2YmNmYTE4MmY0ODJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDEzICszNiwyMSBAQCBj
bGFzcyBOYXZpZ2F0b3I7CiBjbGFzcyBQYWdlOwogY2xhc3MgVlJEaXNwbGF5OwogCi1jbGFzcyBO
YXZpZ2F0b3JXZWJWUiBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKK2NsYXNzIE5h
dmlnYXRvcldlYlZSIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgR2V0VlJEaXNwbGF5c1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8
SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFZSRGlzcGxheT4+PjsKIAogICAgIHN0YXRpYyB2b2lk
IGdldFZSRGlzcGxheXMoTmF2aWdhdG9yJiwgRG9jdW1lbnQmLCBHZXRWUkRpc3BsYXlzUHJvbWlz
ZSYmKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFJlZlB0cjxWUkRpc3BsYXk+PiYgYWN0aXZl
VlJEaXNwbGF5cyhOYXZpZ2F0b3ImKTsKICAgICBzdGF0aWMgYm9vbCB2ckVuYWJsZWQoTmF2aWdh
dG9yJik7CisKKyAgICB2b2lkIGdldFZSRGlzcGxheXMoRG9jdW1lbnQmLCBHZXRWUkRpc3BsYXlz
UHJvbWlzZSYmKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTmF2aWdhdG9yV2ViVlIqIGZyb20o
TmF2aWdhdG9yKik7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisK
KyAgICBWZWN0b3I8UmVmPFZSRGlzcGxheT4+IG1fZGlzcGxheXM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZS
RGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAK
aW5kZXggYmQyNDNmZDVkOTQzY2M4ZDNjNmI5OTJmOTA2ZjU0NTAxY2MyNjA2Ny4uYWRiNzUxZDBj
MzljMGE1NmI1ZTRkYzFmNTQyMTBiZGFhNGVkZmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VidnIvVlJEaXNwbGF5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJET01F
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiVlJEaXNwbGF5RXZlbnQuaCIKICNpbmNsdWRlICJWUkV5ZVBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJWUkZyYW1lRGF0YS5oIgogI2luY2x1ZGUgIlZSTGF5ZXJJbml0LmgiCkBAIC00
NCw5ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFZSRGlzcGxheT4gVlJEaXNw
bGF5OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxWUlBs
YXRmb3JtRGlzcGxheT4mJiBwbGF0Zm9ybURpc3BsYXkpCiB7Ci0gICAgYXV0byBkaXNwbGF5ID0g
YWRvcHRSZWYoKm5ldyBWUkRpc3BsYXkoY29udGV4dCwgV1RGTW92ZShwbGF0Zm9ybURpc3BsYXkp
KSk7Ci0gICAgZGlzcGxheS0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGRpc3BsYXk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJEaXNwbGF5KGNvbnRleHQsIFdURk1vdmUocGxh
dGZvcm1EaXNwbGF5KSkpOwogfQogCiBWUkRpc3BsYXk6OlZSRGlzcGxheShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiYmIHBsYXRmb3Jt
RGlzcGxheSkKQEAgLTU5LDkgKzU5LDE1IEBAIFZSRGlzcGxheTo6VlJEaXNwbGF5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+CiAgICAg
bV9yaWdodEV5ZVBhcmFtZXRlcnMgPSBWUkV5ZVBhcmFtZXRlcnM6OmNyZWF0ZShkaXNwbGF5SW5m
by5leWVUcmFuc2xhdGlvbihWUlBsYXRmb3JtRGlzcGxheUluZm86OkV5ZVJpZ2h0KSwgZGlzcGxh
eUluZm8uZXllRmllbGRPZlZpZXcoVlJQbGF0Zm9ybURpc3BsYXlJbmZvOjpFeWVSaWdodCksIGRp
c3BsYXlJbmZvLnJlbmRlclNpemUoKSk7CiAgICAgbV9kaXNwbGF5SWQgPSBkaXNwbGF5SW5mby5k
aXNwbGF5SWRlbnRpZmllcigpOwogICAgIG1fZGlzcGxheU5hbWUgPSBkaXNwbGF5SW5mby5kaXNw
bGF5TmFtZSgpOworCisgICAgbV9kaXNwbGF5LT5zZXRDbGllbnQodGhpcyk7CisgICAgc3VzcGVu
ZElmTmVlZGVkKCk7CiB9CiAKLVZSRGlzcGxheTo6flZSRGlzcGxheSgpID0gZGVmYXVsdDsKK1ZS
RGlzcGxheTo6flZSRGlzcGxheSgpCit7CisgICAgbV9kaXNwbGF5LT5zZXRDbGllbnQobnVsbHB0
cik7Cit9CiAKIGJvb2wgVlJEaXNwbGF5Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB7CkBAIC0xOTgs
NiArMjA0LDI2IEBAIHZvaWQgVlJEaXNwbGF5OjpzdWJtaXRGcmFtZSgpCiB7CiB9CiAKK3ZvaWQg
VlJEaXNwbGF5OjpwbGF0Zm9ybURpc3BsYXlDb25uZWN0ZWQoKQoreworICAgIGRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFZSRGlzcGxheUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnZyZGlzcGxheWNvbm5lY3RFdmVudCwgbWFrZVJlZlB0cih0aGlzKSwgc3RkOjpudWxs
b3B0KSk7Cit9CisKK3ZvaWQgVlJEaXNwbGF5OjpwbGF0Zm9ybURpc3BsYXlEaXNjb25uZWN0ZWQo
KQoreworICAgIGRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFZSRGlzcGxh
eUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnZyZGlzcGxheWRpc2Nvbm5lY3RFdmVudCwgbWFr
ZVJlZlB0cih0aGlzKSwgc3RkOjpudWxsb3B0KSk7Cit9CisKK3ZvaWQgVlJEaXNwbGF5OjpwbGF0
Zm9ybURpc3BsYXlNb3VudGVkKCkKK3sKKyAgICBkb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGlz
cGF0Y2hFdmVudChWUkRpc3BsYXlFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52cmRpc3BsYXlh
Y3RpdmF0ZUV2ZW50LCBtYWtlUmVmUHRyKHRoaXMpLCBWUkRpc3BsYXlFdmVudFJlYXNvbjo6TW91
bnRlZCkpOworfQorCit2b2lkIFZSRGlzcGxheTo6cGxhdGZvcm1EaXNwbGF5VW5tb3VudGVkKCkK
K3sKKyAgICBkb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChWUkRpc3BsYXlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52cmRpc3BsYXlkZWFjdGl2YXRlRXZlbnQsIG1ha2VS
ZWZQdHIodGhpcyksIFZSRGlzcGxheUV2ZW50UmVhc29uOjpVbm1vdW50ZWQpKTsKK30KKwogYm9v
bCBWUkRpc3BsYXk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKaW5kZXggNGE5OWM5
NmE5Njc5MzM5ZTJiYjEyZGU2ZjZmNWE2YzI5NzY3N2Q2My4uMmY4ZWE4YzI2N2EwNmU3ZWU5Yzk5
ZGI3ZTRlY2NjNmQ1ZWE2MmM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkRpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlz
cGxheS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggSWdh
bGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CiAjaW5jbHVkZSAiVlJFeWUuaCIKICNpbmNsdWRlICJWUkxheWVySW5pdC5oIgorI2luY2x1ZGUg
IlZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBWUlBsYXRmb3Jt
RGlzcGxheTsKIGNsYXNzIFZSUG9zZTsKIGNsYXNzIFZSU3RhZ2VQYXJhbWV0ZXJzOwogCi1jbGFz
cyBWUkRpc3BsYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxWUkRpc3BsYXk+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBWUkRp
c3BsYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxWUkRpc3BsYXk+LCBwdWJsaWMgVlJQbGF0Zm9ybURp
c3BsYXlDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFZSRGlzcGxheT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiYmKTsK
IApAQCAtODQsNiArODUsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdWJtaXRGcmFtZSgpOwog
CisgICAgLy8gVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQKKyAgICB2b2lkIHBsYXRmb3JtRGlzcGxh
eUNvbm5lY3RlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1EaXNwbGF5RGlzY29ubmVj
dGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybURpc3BsYXlNb3VudGVkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwbGF0Zm9ybURpc3BsYXlVbm1vdW50ZWQoKSBvdmVycmlkZTsKKwogcHJp
dmF0ZToKICAgICBWUkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8VlJQ
bGF0Zm9ybURpc3BsYXk+JiYpOwogCkBAIC0xMDEsNiArMTA4LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc3RvcFByZXNlbnRpbmcoKTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0
dXJuIGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOyB9CisKICAg
ICBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiBtX2Rpc3BsYXk7CiAKICAgICBSZWZQdHI8VlJE
aXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAKaW5kZXggNDk5ZGM0ZmY5NDFiNjdhMzYy
YzNiZGRjZmMxMWJjMGJhZGU3MzFjMy4uNWFjZDY5OGViMzJkZGE4OWNiNWE3ZjNkYWJjODRjNmU0
NzE1NzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3Bs
YXlFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlF
dmVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxh
eUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUV2ZW50LmgK
aW5kZXggZDM2ZWExZmZiNmQ2YjBiOGRlMWQ1M2YyN2YzZGYwMjU5ZDk5NzRkNi4uOWUxOTc0MWEz
MTFkNzliODZhOTNkOTdjYjc0MWJjYzAzYTIxYzBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjg2MTM5M2I1OGJh
ZmQ5M2QwNjBjZjg3YzRkZWRiMGQ5ODdiMGMzMy4uODY1MDRmNzU2YjkwNGQzNzhkMmNmZGU3YWU1
YTI4MjI5NTQ1N2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4MDgsNiArMTgwOCw3IEBAIHBsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwCiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZ1JlZ2lzdHJ5LmNwcAogCiBwbGF0Zm9ybS92ci9WUk1hbmFnZXIuY3BwCitwbGF0Zm9y
bS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHAKIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3Jt
RGlzcGxheU9wZW5WUi5jcHAKIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUi5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGRkOTNlODc1OTEzY2E4NjFkNmRmZWUwYTNhOTExMjkxYzNiNDIxM2Qu
LjJkNjAyNTllYjk4ZjFlYWVhZDM5OWFmM2U5ZGNiZTg3NjUyMDRhNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MDEsNiAr
MjUwMSw3IEBACiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWlu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1
NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3
QTY4MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTcz
NEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNo
UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKKwkJ
OEU2MjBFODEyMEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1
RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZB
NTMgLyogR2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3
QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3
NDAxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0QxMkUwMzQ3ODAw
NjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9OwpAQCAtMTAyMDIsNiAr
MTAyMDMsOCBAQAogCQk4RTMzQ0Q5MzIwMUEyOUMxMDBFMzkwOTMgLyogR2FwTGVuZ3RoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdhcExlbmd0aC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThFNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0Zl
dGNoUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNG
ZXRjaFJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDkx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOEU2MjBFN0UyMEVFNUZFMjAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZSUGxhdGZvcm1EaXNwbGF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEU2MjBFODAyMEVFNUZGQzAwN0JDNUVG
IC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCThFQzZDOTYxMjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2FwTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01haW5UaHJlYWRF
eGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDQwLDcgKzI1MDQz
LDkgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUxODgyMzYyMjAzMUY1NUMwMEI0MkRGMyAvKiBW
Uk1hbmFnZXIuY3BwICovLAogCQkJCUUxODgyMzYzMjAzMUY1NUQwMEI0MkRGMyAvKiBWUk1hbmFn
ZXIuaCAqLywKKwkJCQk4RTYyMEU3RTIwRUU1RkUyMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3Bs
YXkuY3BwICovLAogCQkJCUUxODgyMzYwMjAzMUY1NUEwMEI0MkRGMyAvKiBWUlBsYXRmb3JtRGlz
cGxheS5oICovLAorCQkJCThFNjIwRTgwMjBFRTVGRkMwMDdCQzVFRiAvKiBWUlBsYXRmb3JtRGlz
cGxheUNsaWVudC5oICovLAogCQkJCUUxODgyMzYxMjAzMUY1NUIwMEI0MkRGMyAvKiBWUlBsYXRm
b3JtTWFuYWdlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSB2cjsKQEAgLTMwNzk3LDYgKzMwODAy
LDcgQEAKIAkJCQlFNDQ2MTNCNjBDRDYzNDRFMDBGQURBNzUgLyogVm9pZENhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTg4MjM2NDIwMzFGNTcxMDBCNDJERjMgLyogVlJNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTg4MjM2NTIwMzFGNTdGMDBCNDJERjMgLyogVlJQbGF0Zm9y
bURpc3BsYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCThFNjIwRTgxMjBFRTYwMjQwMDdCQzVFRiAv
KiBWUlBsYXRmb3JtRGlzcGxheUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4ODIzNjYy
MDMxRjU5NDAwQjQyREYzIC8qIFZSUGxhdGZvcm1NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCRTIwNTA3QTE4QTQ1ODZCMDA4MDY0N0UgLyogVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUk1hbmFnZXIuY3BwCmluZGV4IGY3YTY4NDZlZTZk
ZDAzOGQyNTBiMmM3ZTNmMmIyZmU2NzYxOWYxZGMuLmM5N2M1ZjQzMWJmNTRmNmQwZjQzODI5MWM5
NzNjZmY2MTU0OWU4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZS
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJNYW5hZ2VyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhLCBTLkwu
IEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSwg
Uy5MLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDcgKzUz
LDMzIEBAIHN0ZDo6b3B0aW9uYWw8VlJNYW5hZ2VyOjpWUkRpc3BsYXlzVmVjdG9yPiBWUk1hbmFn
ZXI6OmdldFZSRGlzcGxheXMoKQogICAgIGlmICghbV9wbGF0Zm9ybU1hbmFnZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU1hbmFnZXItPmdl
dFZSRGlzcGxheXMoKTsKKyAgICBhdXRvIGRpc3BsYXlzID0gbV9wbGF0Zm9ybU1hbmFnZXItPmdl
dFZSRGlzcGxheXMoKTsKKyAgICBWUkRpc3BsYXlzSGFzaE1hcCBuZXdEaXNwbGF5czsKKyAgICBm
b3IgKGF1dG8mIGRpc3BsYXkgOiBkaXNwbGF5cykgeworICAgICAgICBBU1NFUlQoZGlzcGxheSk7
CisgICAgICAgIG5ld0Rpc3BsYXlzLmFkZChkaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmRpc3Bs
YXlJZGVudGlmaWVyKCksIGRpc3BsYXkpOworCisgICAgICAgIFZSUGxhdGZvcm1EaXNwbGF5SW5m
byBpbmZvID0gZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKTsKKyAgICAgICAgYXV0byBpdGVyYXRv
ciA9IG1fZGlzcGxheXMuZmluZChpbmZvLmRpc3BsYXlJZGVudGlmaWVyKCkpOworICAgICAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9kaXNwbGF5cy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGRpc3BsYXktPnVwZGF0ZURpc3BsYXlJbmZvKCk7CisgICAgICAgIFZSUGxhdGZv
cm1EaXNwbGF5SW5mbyBuZXdJbmZvID0gZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKTsKKyAgICAg
ICAgaWYgKGluZm8uaXNDb25uZWN0ZWQoKSAhPSBuZXdJbmZvLmlzQ29ubmVjdGVkKCkpCisgICAg
ICAgICAgICBkaXNwbGF5LT5ub3RpZnlWUlBsYXRmb3JtRGlzcGxheUV2ZW50KG5ld0luZm8uaXND
b25uZWN0ZWQoKSA/IFZSUGxhdGZvcm1EaXNwbGF5OjpFdmVudDo6Q29ubmVjdGVkIDogVlJQbGF0
Zm9ybURpc3BsYXk6OkV2ZW50OjpEaXNjb25uZWN0ZWQpOworICAgICAgICBpZiAoaW5mby5pc01v
dW50ZWQoKSAhPSBuZXdJbmZvLmlzTW91bnRlZCgpKQorICAgICAgICAgICAgZGlzcGxheS0+bm90
aWZ5VlJQbGF0Zm9ybURpc3BsYXlFdmVudChuZXdJbmZvLmlzTW91bnRlZCgpID8gVlJQbGF0Zm9y
bURpc3BsYXk6OkV2ZW50OjpNb3VudGVkIDogVlJQbGF0Zm9ybURpc3BsYXk6OkV2ZW50OjpVbm1v
dW50ZWQpOworICAgIH0KKworICAgIGZvciAoYXV0byYgaXRlciA6IG1fZGlzcGxheXMpIHsKKyAg
ICAgICAgQVNTRVJUKGl0ZXIudmFsdWUpOworICAgICAgICBpZiAoIW5ld0Rpc3BsYXlzLmNvbnRh
aW5zKGl0ZXIua2V5KSkKKyAgICAgICAgICAgIGl0ZXIudmFsdWUtPm5vdGlmeVZSUGxhdGZvcm1E
aXNwbGF5RXZlbnQoVlJQbGF0Zm9ybURpc3BsYXk6OkV2ZW50OjpEaXNjb25uZWN0ZWQpOworICAg
IH0KKworICAgIG1fZGlzcGxheXMgPSBXVEZNb3ZlKG5ld0Rpc3BsYXlzKTsKKyAgICByZXR1cm4g
ZGlzcGxheXM7CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3ZyL1ZSTWFuYWdlci5oCmluZGV4IDA5NDJjN2NiNTVmMDU5ZTJkNzg2ZDIzMzYyNDA2MjFj
YWVhZTMzZGUuLmZiM2I3Y2QyZjhlZTEzYTY0NzU5ZGY2OTRjYWVkNWE1ZDRlOGVkOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTggSWdhbGlhLCBTLkwuIEFsbCByaWdodCByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00
Myw2ICs0NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVlJNYW5hZ2VyKCk7CiAKKyAgICB1
c2luZyBWUkRpc3BsYXlzSGFzaE1hcCA9IEhhc2hNYXA8dWludDMyX3QsIFdlYWtQdHI8VlJQbGF0
Zm9ybURpc3BsYXk+PjsKKyAgICBWUkRpc3BsYXlzSGFzaE1hcCBtX2Rpc3BsYXlzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlcj4gbV9wbGF0Zm9ybU1hbmFnZXI7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzMwYTczNGU5MmYwOTcwNDUyYzBiMGQxODEzOWY5MjEzZWY1MmNhYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNw
bGF5LmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxp
YSwgUy5MLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVlJQbGF0Zm9ybURpc3BsYXkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IFZSUGxhdGZvcm1EaXNwbGF5OjpzZXRDbGllbnQoVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQqIGNs
aWVudCkKK3sKKyAgICBBU1NFUlQoIWNsaWVudCB8fCAhbV9jbGllbnQpOworICAgIG1fY2xpZW50
ID0gY2xpZW50OworfQorCit2b2lkIFZSUGxhdGZvcm1EaXNwbGF5Ojpub3RpZnlWUlBsYXRmb3Jt
RGlzcGxheUV2ZW50KEV2ZW50IGV2ZW50KQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIHN3aXRjaCAoZXZlbnQpIHsKKyAgICBjYXNlIEV2ZW50OjpDb25uZWN0
ZWQ6CisgICAgICAgIG1fY2xpZW50LT5wbGF0Zm9ybURpc3BsYXlDb25uZWN0ZWQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBFdmVudDo6RGlzY29ubmVjdGVkOgorICAgICAgICBtX2NsaWVu
dC0+cGxhdGZvcm1EaXNwbGF5RGlzY29ubmVjdGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRXZlbnQ6Ok1vdW50ZWQ6CisgICAgICAgIG1fY2xpZW50LT5wbGF0Zm9ybURpc3BsYXlNb3Vu
dGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnQ6OlVubW91bnRlZDoKKyAgICAg
ICAgbV9jbGllbnQtPnBsYXRmb3JtRGlzcGxheVVubW91bnRlZCgpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIv
VlJQbGF0Zm9ybURpc3BsYXkuaAppbmRleCAxYTA4ZWIyOGZmMjRhMzVhMjE5MWVhZmI5MjliN2Ew
NDIzYjI3Y2FkLi4yMWZhM2UwZjAzODM2MTFjNjgwYmYwYzAzMTE3MzE4YmVjYjQzZjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmgKQEAgLTIy
LDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIlRyYW5z
Zm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCIK
IAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC0xNjEsNyArMTYyLDIyIEBAIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBWUlBsYXRmb3JtRGlzcGxheUluZm8gZ2V0RGlzcGxheUluZm8oKSA9IDA7CiAgICAgdmlydHVh
bCBWUlBsYXRmb3JtVHJhY2tpbmdJbmZvIGdldFRyYWNraW5nSW5mbygpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGlzcGxheUluZm8oKSA9IDA7CiAgICAgdmlydHVhbCB+VlJQbGF0Zm9y
bURpc3BsYXkoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldENsaWVudChWUlBsYXRmb3JtRGlz
cGxheUNsaWVudCopOworCisgICAgZW51bSBjbGFzcyBFdmVudCB7CisgICAgICAgIENvbm5lY3Rl
ZCwKKyAgICAgICAgRGlzY29ubmVjdGVkLAorICAgICAgICBNb3VudGVkLAorICAgICAgICBVbm1v
dW50ZWQsCisgICAgfTsKKworICAgIHZvaWQgbm90aWZ5VlJQbGF0Zm9ybURpc3BsYXlFdmVudChF
dmVudCk7CisKK3ByaXZhdGU6CisgICAgVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQqIG1fY2xpZW50
IHsgbnVsbHB0ciB9OwogfTsKIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheUNsaWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1YTE4OWRjODNlYTY4MzMwOGYzYThiMWQxMWY2MzhiN2M3YmYwMGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheUNs
aWVudC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlh
LCBTLkwuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5WUlBsYXRmb3JtRGlzcGxheUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtRGlzcGxheUNvbm5lY3RlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybURpc3BsYXlEaXNjb25uZWN0ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1E
aXNwbGF5TW91bnRlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybURpc3BsYXlVbm1v
dW50ZWQoKSB7IH0KK307CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5
T3BlblZSLmNwcAppbmRleCBkZDYyODhlMGVkYmU3YWM4NzEzOTY0ZDhjYTcyMjljMDhjYjcwZWJi
Li4xNTY1ODMwMjc2N2Q5YTExN2UwZTgyYjk2ODM1ZjlmZWJhNDRhN2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5jcHAKQEAgLTE1OCw2ICsxNTgsMzYgQEAgVlJQbGF0Zm9ybVRyYWNraW5nSW5m
byBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjo6Z2V0VHJhY2tpbmdJbmZvKCkKICAgICByZXR1cm4g
bV90cmFja2luZ0luZm87CiB9CiAKK3ZvaWQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI6OnVwZGF0
ZURpc3BsYXlJbmZvKCkKK3sKKyAgICBpZiAoIXZyOjpWUl9Jc0htZFByZXNlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdnI6OlZSRXZlbnRfdCBldmVudDsKKyAgICB3aGlsZSAobV9zeXN0
ZW0gJiYgbV9zeXN0ZW0tPlBvbGxOZXh0RXZlbnQoJmV2ZW50LCBzaXplb2YoZXZlbnQpKSkgewor
ICAgICAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSkgeworICAgICAgICBjYXNlIHZyOjpWUkV2
ZW50X1RyYWNrZWREZXZpY2VVc2VySW50ZXJhY3Rpb25TdGFydGVkOgorICAgICAgICBjYXNlIHZy
OjpWUkV2ZW50X1RyYWNrZWREZXZpY2VVc2VySW50ZXJhY3Rpb25FbmRlZDoKKyAgICAgICAgICAg
IGlmIChldmVudC50cmFja2VkRGV2aWNlSW5kZXggPT0gdnI6OmtfdW5UcmFja2VkRGV2aWNlSW5k
ZXhfSG1kKQorICAgICAgICAgICAgICAgIG1fZGlzcGxheUluZm8uc2V0SXNNb3VudGVkKGV2ZW50
LmV2ZW50VHlwZSA9PSB2cjo6VlJFdmVudF9UcmFja2VkRGV2aWNlVXNlckludGVyYWN0aW9uU3Rh
cnRlZCA/IHRydWUgOiBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSB2
cjo6RVZSRXZlbnRUeXBlOjpWUkV2ZW50X1RyYWNrZWREZXZpY2VBY3RpdmF0ZWQ6CisgICAgICAg
IGNhc2UgdnI6OkVWUkV2ZW50VHlwZTo6VlJFdmVudF9UcmFja2VkRGV2aWNlRGVhY3RpdmF0ZWQ6
CisgICAgICAgICAgICBpZiAoZXZlbnQudHJhY2tlZERldmljZUluZGV4ID09IHZyOjprX3VuVHJh
Y2tlZERldmljZUluZGV4X0htZCkKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlJbmZvLnNldElz
Q29ubmVjdGVkKGV2ZW50LmV2ZW50VHlwZSA9PSB2cjo6VlJFdmVudF9UcmFja2VkRGV2aWNlQWN0
aXZhdGVkID8gdHJ1ZSA6IGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IHZyOjpFVlJFdmVudFR5cGU6OlZSRXZlbnRfRHJpdmVyUmVxdWVzdGVkUXVpdDoKKyAgICAgICAg
Y2FzZSB2cjo6RVZSRXZlbnRUeXBlOjpWUkV2ZW50X1F1aXQ6CisgICAgICAgIGNhc2UgdnI6OkVW
UkV2ZW50VHlwZTo6VlJFdmVudF9Qcm9jZXNzUXVpdDoKKyAgICAgICAgY2FzZSB2cjo6RVZSRXZl
bnRUeXBlOjpWUkV2ZW50X1F1aXRBY2tub3dsZWRnZWQ6CisgICAgICAgIGNhc2UgdnI6OkVWUkV2
ZW50VHlwZTo6VlJFdmVudF9RdWl0QWJvcnRlZF9Vc2VyUHJvbXB0OgorICAgICAgICAgICAgLy8g
RklYTUU6IHNob3VsZCB3ZSBub3RpZnkgdGhlIHBsYXRmb3JtIG1hbmFnZXIgYWJvdXQgdGhpcyBh
bmQgY2FsbCBWUl9TaHV0ZG93bigpLgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBVU0UoT1BFTlZSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaAppbmRleCAzYWJlM2RhYzA3
OWUxZDkwY2FhMGE4NWUxNWIyZGQ2NWVjM2IzYTJiLi5kZDZhZTczNjA0Njc5ZjE4OGUwMWUxMTBl
NGZlYmU1OTNkNTM3ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhLCBTLkwuIEFsbCByaWdodCByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHQgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDYgKzM1LDcgQEAgcHVibGljOgogICAg
IH5WUlBsYXRmb3JtRGlzcGxheU9wZW5WUigpID0gZGVmYXVsdDsKICAgICBWUlBsYXRmb3JtRGlz
cGxheUluZm8gZ2V0RGlzcGxheUluZm8oKSBvdmVycmlkZSB7IHJldHVybiBtX2Rpc3BsYXlJbmZv
OyB9CiAgICAgVlJQbGF0Zm9ybVRyYWNraW5nSW5mbyBnZXRUcmFja2luZ0luZm8oKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlJbmZvKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgVlJQbGF0Zm9ybURpc3BsYXlJbmZvOjpGaWVsZE9mVmlldyBjb21wdXRlRmllbGRPZlZpZXco
dnI6OkhtZF9FeWUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>