<?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>115803</bug_id>
          
          <creation_ts>2013-05-08 07:33:51 -0700</creation_ts>
          <short_desc>[GTK] Accelerated compositing does not work in Wayland</short_desc>
          <delta_ts>2016-09-02 03:04:04 -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>WebKitGTK</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>133971</dependson>
    
    <dependson>134160</dependson>
    
    <dependson>136102</dependson>
    
    <dependson>136213</dependson>
    
    <dependson>136216</dependson>
    
    <dependson>136220</dependson>
    
    <dependson>142879</dependson>
          <blocked>81456</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Iago Toral">itoral</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>doctorjellyface</cc>
    
    <cc>emanuele.aina</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>lantw44</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mike</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pochu27</cc>
    
    <cc>steve</cc>
    
    <cc>tomeu</cc>
    
    <cc>unixman</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>886337</commentid>
    <comment_count>0</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2013-05-08 07:33:51 -0700</bug_when>
    <thetext>Current implementation is based on XComposite and XDamage, as seen here:
WebCore/platform/gtk/RedirectedXCompositeWindow.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929868</commentid>
    <comment_count>1</comment_count>
    <who name="Armin K.">krejzi</who>
    <bug_when>2013-09-16 12:28:23 -0700</bug_when>
    <thetext>Please disable accelerated compositing on wayland for WebKitGTK+ 2.2.0 if you can&apos;t get this done.

If built with both x11 and wayland backends, apps running on wayland compositor fail with traces to accelerated compositing functions. Disabling accelerated compositing makes apps run on wayland compositors just fine, but then X apps are left without accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929894</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-16 13:17:01 -0700</bug_when>
    <thetext>This should be covered by r155620, and should be available for testing in the 2.1.92 release (and future ones) that is scheduled for tomorrow.
http://trac.webkit.org/changeset/155620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971582</commentid>
    <comment_count>3</comment_count>
      <attachid>222095</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:14:45 -0800</bug_when>
    <thetext>Created attachment 222095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971583</commentid>
    <comment_count>4</comment_count>
      <attachid>222096</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:15:25 -0800</bug_when>
    <thetext>Created attachment 222096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971584</commentid>
    <comment_count>5</comment_count>
      <attachid>222097</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:15:53 -0800</bug_when>
    <thetext>Created attachment 222097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971585</commentid>
    <comment_count>6</comment_count>
      <attachid>222098</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:16:17 -0800</bug_when>
    <thetext>Created attachment 222098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971586</commentid>
    <comment_count>7</comment_count>
      <attachid>222099</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:16:45 -0800</bug_when>
    <thetext>Created attachment 222099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971587</commentid>
    <comment_count>8</comment_count>
      <attachid>222100</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:17:19 -0800</bug_when>
    <thetext>Created attachment 222100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971588</commentid>
    <comment_count>9</comment_count>
      <attachid>222101</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:17:43 -0800</bug_when>
    <thetext>Created attachment 222101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971589</commentid>
    <comment_count>10</comment_count>
      <attachid>222102</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:18:12 -0800</bug_when>
    <thetext>Created attachment 222102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971590</commentid>
    <comment_count>11</comment_count>
      <attachid>222103</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:18:34 -0800</bug_when>
    <thetext>Created attachment 222103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971591</commentid>
    <comment_count>12</comment_count>
      <attachid>222104</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:18:56 -0800</bug_when>
    <thetext>Created attachment 222104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971592</commentid>
    <comment_count>13</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-01-24 06:21:23 -0800</bug_when>
    <thetext>These patches provide an initial implementation to support Accelerated
Compositing under Wayland with WebKit2. This initial implementation
is mostly a prototype putting together the necessary pieces for this, but
further work is needed to make this ready for production environments.

The design is based on feedback from Wayland developers and it involves
having the UI Process implement a small nested Wayland compositor to
share a Wayland surface with the WebProcess. The implementation of the
nested compositor was based on the nested client from Weston.

These patches do not provide support for Accelerated Compositing under Wayland
with WebKit1.

Implementation details and known issues:

1. Patches apply clean on top of commit c69d3281e2f4dc6be7a42ce7ff3d8634a31f5313
from December 10, we need to rebase and test the patches against current webkit
and Wayland.

2. Since Wayland support requires EGL and there can be only one EGL target platform
configured (this is set at build time), in case that we build for both X11 and
Wayland at the same time we need to make sure that only the Wayland path goes
through EGL and have the X11 paths use GLX to create the GL context. If we are 
only building for X11, then we can have it go through the EGL path if that was
configured instead of GLX. This together with run-time detection of the
windowing system to select automatically between X11 and Wayland
paths -see point 7) below- makes code that creates the GL context a bit
complex at the moment because there are multiple options to consider.

3. Since Wayland requires EGL and GTK with Wayland support there are guards
for the Wayland code in the form #if USE(EGL) &amp;&amp; PLATFORM(WAYLAND) &amp;&amp; defined(GDK_WINDOWING_WAYLAND) most of the Wayland code paths. I think it would be best that PLATFORM(WAYLAND) is set only if we verify these 3 guards at configure time so we can reduce the guards to PLATFORM(WAYLAND) only or PLATFORM(WAYLAND) &amp;&amp; PLATFORM(GTK) depending on the case. Also, as per 2), if we are trying to build for both Wayland and X11 but we lack GLX, then maybe we should disable one of the targets, we could disable either of them, but I guess Wayland would be the right one to drop for now.

4. If testing AC under Wayland with a build configured for both X11 and
Wayland targets, --disable-glx must be used, otherwise there is a bug somwehere
that makes GTK spit out-of-memory errors when trying to paint the widget with the results of the composition and nothing is painted on the WebView.

5. After visiting a page that enables the AC path, then leaving to another page, and then going back to the first page again using the browsers&apos;s back button shows rendering artifacts (composited layers are black). This is fixed if the page is reloaded though.

6. This is only a prototype and it only works with one WebView widget. Multiple
tabs or windows are not expected to work. For this to work we will need a way
to associate a widget with the wayland surface where we are doing the composition for that widget. This is more difficult in Wayland than in X11 because in Wayland with the nested compositor the shared Wayland surface is created in the WebProcess (LayerTreeHostGtk) where we have no context of the widget (which lives in the UI Process) and the nested compositor (which lives in the UIProcess) does not know for which widget it is creating the surfaces
requested from the WebProcess (since the wayland protocol does not include this
info). We might need to add a new message between the two processes to fix
this limitation or maybe there is something more creative we can do about this.
In any case, it needs some thinking.

7. Implementation is intended to support run-time detection of the windowing
system (wayland or x11) and select appropriate code paths depending on the case
by checking the type of the GdkDisplay. This needs more testing, but it seemed
to work well for me in the following scenarios at least:
  - Build only for X11 then run under X11
  - Build for X11 and Wayland, then run under Wayland (*)
  - Build for X11 and Wayland, then run under X11

(*) But this was not a complete test because as per 4) it required to
build with --disable-glx.

8. All tests were done against Weston running inside an X session, so
there is the possibility that this needs additional fixes to work in a pure
Wayland setup where there is no X server running. I have not tested this.

9. I only used MiniBrowser in my tests so it would be nice to see if 
this also works with Epiphany/Web as it is or if that would need more work.

10. This does not address the creation of the offscreen context for WebGL
under Wayland, Zan was working on that and I think his fix for that should
just work fine with my patches.

Future Work:

There are a number of FIXMEs in the code for things that need more work, but I
think  addressing 6) and 4) is the top priority. Testing on a pure Wayland
setup and also testing with Epiphany/Web are important too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976294</commentid>
    <comment_count>14</comment_count>
      <attachid>223102</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-04 05:32:34 -0800</bug_when>
    <thetext>Created attachment 223102
Patch (multiple surfaces)

This patch adds initial support for multiple surfaces/widgets.

In order to map surfaces and widgets we implement a custom extension for the wayland protocol that allows to associate a surface with a widget-id. This widget-id is generated by the compositor itself when a WebView is created and is passed to the WebProcess using the same mechanisms we use in X11 to communicate the XWindowID. Then the WebProcess (LayerTreeHostGtk), can use this widget-id when creating the wayland surface to let the compositor know about the widget/surface matching.

We need to use wayland-scanner to autogenerate files required by the extension. This patch generates (and expects) the files in the Source tree instead of producing them under DerivedSources. For some reason I was not able to include the autogenerated header files if these were created under DerivedSources, so this probably needs some more work.

Since MiniBrowser does not let me create multiple tabs/windows I have not tested this properly yet, but I did check that reloading in MiniBrowser (which creates a new surface for the same widget) does work as expected: the new surface is created, it is assigned to the existing widget and the previous surface is destroyed.

The patch applies on top of the previous patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977789</commentid>
    <comment_count>15</comment_count>
      <attachid>223442</attachid>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-07 02:58:07 -0800</bug_when>
    <thetext>Created attachment 223442
Patch (multiple surfaces)

New version of the patch to support multiple surfaces. I have tested this with Epiphany as well as current wayland/weston and gtk+.

It mostly works, but there are bugs that need more investigation:

1) When having multiple windows/tabs, reloading one of them can cause another one (and only one) to produce rendering artifacts. Usually the same artifacts that I described above for the case when we go back with the browser to a page that activates AC.
2) When having multiple windows/tabs, closing one of them can cause another one (and only one) to produce render artifacts.

When one of the tabs/windows is affected by this bug, reloading the page fixes the problem.

Another thing I observed (unrelated to this patch) is that AC only seems to work with cairo glesv2, if I use the cairo gl backend instead I see out-of-memory errors every time we try to paint the web view widget (the same errors I got when running AC on Wayladn with --enable-glx set btw).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985480</commentid>
    <comment_count>16</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-27 23:47:26 -0800</bug_when>
    <thetext>Status update:

(In reply to comment #15)
&gt; Created an attachment (id=223442) [details]
&gt; Patch (multiple surfaces)
&gt; 
&gt; New version of the patch to support multiple surfaces. I have tested this with Epiphany as well as current wayland/weston and gtk+.
&gt; 
&gt; It mostly works, but there are bugs that need more investigation:
&gt; 
&gt; 1) When having multiple windows/tabs, reloading one of them can cause another one (and only one) to produce rendering artifacts. Usually the same artifacts that I described above for the case when we go back with the browser to a page that activates AC.
&gt; 2) When having multiple windows/tabs, closing one of them can cause another one (and only one) to produce render artifacts.

These two bugs had the same origin and was fixed by this:
https://bugs.webkit.org/show_bug.cgi?id=129244

&gt; When one of the tabs/windows is affected by this bug, reloading the page fixes the problem.
&gt; 
&gt; Another thing I observed (unrelated to this patch) is that AC only seems to work with cairo glesv2, if I use the cairo gl backend instead I see out-of-memory errors every time we try to paint the web view widget (the same errors I got when running AC on Wayladn with --enable-glx set btw).

I updated mesa/wayland to master and rebuilt everything from scratch and it all works fine now (both gl and glesv2, both with and without enable-glx), so that&apos;s good news :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985481</commentid>
    <comment_count>17</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-27 23:57:18 -0800</bug_when>
    <thetext>Status update:

(In reply to comment #13)
(...)
&gt; Implementation details and known issues:
(...)
&gt; 4. If testing AC under Wayland with a build configured for both X11 and
&gt; Wayland targets, --disable-glx must be used, otherwise there is a bug somwehere
&gt; that makes GTK spit out-of-memory errors when trying to paint the widget with the results of the composition and nothing is painted on the WebView.

This happens no more.

&gt; 5. After visiting a page that enables the AC path, then leaving to another page, and then going back to the first page again using the browsers&apos;s back button shows rendering artifacts (composited layers are black). This is fixed if the page is reloaded though.

This still happens. The problem is related to WebKit&apos;s page cache. Disabling the page cache fixes it. I think the problem is that when going back to the page it tries to re-use the tiles but the underlying texture objects have been destroyed. I came to this conclusion after observing that tiles were trying to use textures with a non-zero ID (m_id in BitmapTextureGL) that had been destroyed.

This needs more investigation.

&gt; 6. This is only a prototype and it only works with one WebView widget. Multiple
&gt; tabs or windows are not expected to work. For this to work we will need a way
&gt; to associate a widget with the wayland surface where we are doing the composition for that widget. This is more difficult in Wayland than in X11 because in Wayland with the nested compositor the shared Wayland surface is created in the WebProcess (LayerTreeHostGtk) where we have no context of the widget (which lives in the UI Process) and the nested compositor (which lives in the UIProcess) does not know for which widget it is creating the surfaces
&gt; requested from the WebProcess (since the wayland protocol does not include this
&gt; info). We might need to add a new message between the two processes to fix
&gt; this limitation or maybe there is something more creative we can do about this.
&gt; In any case, it needs some thinking.

This has already been addressed with the multiple surfaces patch attached to this bug.

&gt; 7. Implementation is intended to support run-time detection of the windowing
&gt; system (wayland or x11) and select appropriate code paths depending on the case
&gt; by checking the type of the GdkDisplay. This needs more testing, but it seemed
&gt; to work well for me in the following scenarios at least:
&gt;   - Build only for X11 then run under X11
&gt;   - Build for X11 and Wayland, then run under Wayland (*)
&gt;   - Build for X11 and Wayland, then run under X11
&gt; 
&gt; (*) But this was not a complete test because as per 4) it required to
&gt; build with --disable-glx.

I think all the cases are working fine now.

&gt; 8. All tests were done against Weston running inside an X session, so
&gt; there is the possibility that this needs additional fixes to work in a pure
&gt; Wayland setup where there is no X server running. I have not tested this.
&gt; 
&gt; 9. I only used MiniBrowser in my tests so it would be nice to see if 
&gt; this also works with Epiphany/Web as it is or if that would need more work.

I tested with Epiphany too since I needed it for the multiple surfaces patch and it works well.

&gt; 10. This does not address the creation of the offscreen context for WebGL
&gt; under Wayland, Zan was working on that and I think his fix for that should
&gt; just work fine with my patches.

Since this will add support for the sharing context in Wayland I think it might actually solve other problems too. At least I know that bug #129244 should be fixed by this too and I wonder if the page cache issue I mention above is happening because of this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985482</commentid>
    <comment_count>18</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-28 00:01:00 -0800</bug_when>
    <thetext>
(In reply to comment #16)
&gt; Status update:
&gt; 
&gt; (In reply to comment #15)
&gt; &gt; Created an attachment (id=223442) [details] [details]
&gt; &gt; Patch (multiple surfaces)
&gt; &gt; 
&gt; &gt; New version of the patch to support multiple surfaces. I have tested this with Epiphany as well as current wayland/weston and gtk+.
&gt; &gt; 
&gt; &gt; It mostly works, but there are bugs that need more investigation:
&gt; &gt; 
&gt; &gt; 1) When having multiple windows/tabs, reloading one of them can cause another one (and only one) to produce rendering artifacts. Usually the same artifacts that I described above for the case when we go back with the browser to a page that activates AC.
&gt; &gt; 2) When having multiple windows/tabs, closing one of them can cause another one (and only one) to produce render artifacts.
&gt; 
&gt; These two bugs had the same origin and was fixed by this:
&gt; https://bugs.webkit.org/show_bug.cgi?id=129244

Well, that&apos;s not 100% accurate. We also need this fixed, but the problem has already been detected and a patch should land soon enough:
https://bugs.webkit.org/show_bug.cgi?id=129419

Also, merging support for the sharing contextin Wayland  should fix the problem too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985496</commentid>
    <comment_count>19</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-28 00:55:47 -0800</bug_when>
    <thetext>(In reply to comment #17)
(...)
&gt; &gt; 5. After visiting a page that enables the AC path, then leaving to another page, and then going back to the first page again using the browsers&apos;s back button shows rendering artifacts (composited layers are black). This is fixed if the page is reloaded though.
&gt; 
&gt; This still happens. The problem is related to WebKit&apos;s page cache. Disabling the page cache fixes it. I think the problem is that when going back to the page it tries to re-use the tiles but the underlying texture objects have been destroyed. I came to this conclusion after observing that tiles were trying to use textures with a non-zero ID (m_id in BitmapTextureGL) that had been destroyed.
&gt; 
&gt; This needs more investigation.

Indeed, the problem is that GL textures are destroyed when we leave the page, so when we try to reuse the tiles later on it fails. The reason why this works in X11 is the fact that we have a sharing context (again), since that prevents the textures from being destroyed in the end (since they are shared with a context that is not destroyed). Adding a sharing context for Wayland fixes the problem, even though I think this is kind of hiding a real bug that already existed before for X11.

I&apos;ll file a separate bug for this so we can discuss if want to do something about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985501</commentid>
    <comment_count>20</comment_count>
    <who name="Iago Toral">itoral</who>
    <bug_when>2014-02-28 01:09:19 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; I&apos;ll file a separate bug for this so we can discuss if want to do something about this.
https://bugs.webkit.org/show_bug.cgi?id=129474</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100352</commentid>
    <comment_count>21</comment_count>
    <who name="Steven Newbury">steve</who>
    <bug_when>2015-06-08 06:56:32 -0700</bug_when>
    <thetext>Any update on this?  The latest release of webkit-gtk (2.9.2) still doesn&apos;t build with egl/gles2/wayland enabled.  There is partial support in place, but lots of missing pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100475</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-06-08 15:27:07 -0700</bug_when>
    <thetext>*** Bug 144544 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105372</commentid>
    <comment_count>23</comment_count>
    <who name="nick">unixman</who>
    <bug_when>2015-06-29 04:50:30 -0700</bug_when>
    <thetext>it still do not render sites like vimeo, youtube.

i am able to play youtube videos but only sound, video part not seen.

i attacked a log after playing finished.

gtk-3.16.4   webkit-2.8.3  epiphany-3.16.1 mesa-10-6.0  weston-1.8.0

wayland-1.8.1

everythings stock arch-linux with latest upgrade.

HW: intel ivybridge (HD 4XXX)

weston is running on pure drm-backend even i deleted xwayland.so manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105373</commentid>
    <comment_count>24</comment_count>
      <attachid>255744</attachid>
    <who name="nick">unixman</who>
    <bug_when>2015-06-29 04:52:08 -0700</bug_when>
    <thetext>Created attachment 255744
video playback ended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176973</commentid>
    <comment_count>25</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-03-22 07:52:40 -0700</bug_when>
    <thetext>It seems I&apos;ll be able to work on this! \o/

Just a quick recap of the current status:
 * part of attachment #222095 has been merged as bug #136213, introducing WaylandEventSource
 * attachment #222096 has been merged as bug #136220, introducing WaylandSurface and bug #136216, adding WaylandDisplay (now PlatformDisplayWayland since bug #144517)
 * attachment #222097 is rather obsolete as it still targets the old autotools-based build system, and the merged patches already add the relevant files to cmake
 * the custom Wayland protocol extension in attachment #223442 has already been merged as bug #136102

My rough plan is to follow what has been discussed on the mailing list: https://lists.webkit.org/pipermail/webkit-gtk/2016-February/002617.html

My rough plan is as follows:

* rebase the nested WaylandCompositor on top of master to export a single surface, still leaving compositing in the WebProcess
* replace RedirectedXCompositeWindow with the nested WaylandCompositor even under X11
* switch to GtkGLArea to paint the pre-composited surface
* export the layer buffers as Wayland surfaces from the WebProcess to the UIProcess
* move the threaded compositor from the WebProcess to the UIProcess, painting the Wayland surfaces on the GtkGLArea context


I will also investigate the WebKit4Wayland port, even if it uses a different approach to expose buffers across the process boundary I guess there&apos;s plenty of useful stuff there, any suggestion from Žan about what could be reused would be greatly appreciated.

If anyone wants to provide help, advice or any other kind of input it would be very much welcome! :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176976</commentid>
    <comment_count>26</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2016-03-22 08:12:08 -0700</bug_when>
    <thetext>(In reply to comment #25)

Thanks for picking this up! A couple notes:

&gt; My rough plan is to follow what has been discussed on the mailing list:
&gt; https://lists.webkit.org/pipermail/webkit-gtk/2016-February/002617.html
&gt; 
&gt; My rough plan is as follows:
&gt; 
&gt; * rebase the nested WaylandCompositor on top of master to export a single
&gt; surface, still leaving compositing in the WebProcess
&gt; * replace RedirectedXCompositeWindow with the nested WaylandCompositor even
&gt; under X11

I&apos;m not sure we want to do this. We would lose support for cards that don&apos;t yet have full Wayland support and make Wayland a new dependency. Better to add a new implementation of RedirectedXComposite window and give it a new name.

&gt; * switch to GtkGLArea to paint the pre-composited surface

Be sure not to raise our GTK+ dependency when you do this. You might need to have a fallback that follows the current path.

&gt; * export the layer buffers as Wayland surfaces from the WebProcess to the
&gt; UIProcess
&gt; * move the threaded compositor from the WebProcess to the UIProcess,
&gt; painting the Wayland surfaces on the GtkGLArea context

Please coordinate with Gwang, who is working on preparing Coordinated Graphics for WebKitGTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177023</commentid>
    <comment_count>27</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-03-22 10:23:36 -0700</bug_when>
    <thetext>(In reply to comment #26)

&gt; &gt; * replace RedirectedXCompositeWindow with the nested WaylandCompositor even
&gt; &gt; under X11
&gt; 
&gt; I&apos;m not sure we want to do this. We would lose support for cards that don&apos;t
&gt; yet have full Wayland support and make Wayland a new dependency. Better to
&gt; add a new implementation of RedirectedXComposite window and give it a new
&gt; name.

Without Wayland we don&apos;t have any way to efficiently share buffers across the process boundary, so as far as I can tell there&apos;s no chance to move compositing in the UIProcess with such setup.

We could rely on wl_shm which does not require driver support, but it may be slower than the current GLX + offscreen XComposite window + XRender path.

&gt; &gt; * switch to GtkGLArea to paint the pre-composited surface
&gt; 
&gt; Be sure not to raise our GTK+ dependency when you do this. You might need to
&gt; have a fallback that follows the current path.

Ack. Under Wayland we already require GTK+ 3.12: would be fair to bump only that to 3.16 for GtkGLArea?

Otherwise we either need to basically reimplement GtkGLArea or keep compositing in the WebProcess, which in turn would mean that we would end up with three different compositing mechanism (wayland/uiprocess, wayland/webprocess, redirectedxcompositewindow/webprocess).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177030</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-03-22 10:29:51 -0700</bug_when>
    <thetext>\o/

I presume you&apos;ll be cleaning up the half-finished work (e.g. the unused Wayland protocol)?

(In reply to comment #27)
&gt; Ack. Under Wayland we already require GTK+ 3.12: would be fair to bump only
&gt; that to 3.16 for GtkGLArea?

Yes, I think you can safely bump deps as needed in the Wayland case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177032</commentid>
    <comment_count>29</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-03-22 10:35:08 -0700</bug_when>
    <thetext>Yup, I&apos;m currently basing my work on Iago&apos;s compositor which uses the currently unused Wayland stuff (the protocol extension and WaylandEventSource). :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177050</commentid>
    <comment_count>30</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2016-03-22 11:06:28 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; 
&gt; &gt; &gt; * replace RedirectedXCompositeWindow with the nested WaylandCompositor even
&gt; &gt; &gt; under X11
&gt; &gt; 
&gt; &gt; I&apos;m not sure we want to do this. We would lose support for cards that don&apos;t
&gt; &gt; yet have full Wayland support and make Wayland a new dependency. Better to
&gt; &gt; add a new implementation of RedirectedXComposite window and give it a new
&gt; &gt; name.
&gt; 
&gt; Without Wayland we don&apos;t have any way to efficiently share buffers across
&gt; the process boundary, so as far as I can tell there&apos;s no chance to move
&gt; compositing in the UIProcess with such setup.
&gt; 
&gt; We could rely on wl_shm which does not require driver support, but it may be
&gt; slower than the current GLX + offscreen XComposite window + XRender path.

I&apos;m not sure I understand what you mean. Obviously for Wayland we wouldn&apos;t use X11 redirected windows, but only for X11. In the Wayland case &quot;RedirectedXComposite&quot; window would be using a nested compositor. In any case, you should study GLXSurface.cpp, which I think is what CoordinatedGraphics uses for its UIProcess compositor support. I&apos;m just saying that we shouldn&apos;t be using Wayland shm when running under X11, since that would lead to unacceptable performance regressions. In general, I think that when running under X11 we need to be using the X11 API to share surfaces.
&gt; 
&gt; &gt; &gt; * switch to GtkGLArea to paint the pre-composited surface
&gt; &gt; 
&gt; &gt; Be sure not to raise our GTK+ dependency when you do this. You might need to
&gt; &gt; have a fallback that follows the current path.
&gt; 
&gt; Ack. Under Wayland we already require GTK+ 3.12: would be fair to bump only
&gt; that to 3.16 for GtkGLArea?

I think that&apos;s fine. Ideally, you should do your work in a way that GtkGLArea is used when it is supported, but otherwise we should fall back to an approach that doesn&apos;t use it. One way to do this would be to embed a GtkGLArea into the WebView widget and only use it when compiled against a new enough version of GTK.

Maybe we can talk via IRC to work out the details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183195</commentid>
    <comment_count>31</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-04-12 13:21:08 -0700</bug_when>
    <thetext>I now have a *very* work-in-progress branch at https://github.com/em-/webkit/commits/wayland-ac.

At the moment it works more or less like this: WebProcess creates a single wl_surface per widget, paints on it using GL, commits the wl_surface to the nested compositor, the UIProcess gets the committed surface, paints its contents using glEGLImageTargetTexture2DOES() to a GL fbo, copies the fbo contents using glReadPixels() to plain cairo image surface , paints the cairo image surface on GtkWdget::draw().

Not very efficient, but it seems to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189389</commentid>
    <comment_count>32</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-05-02 07:32:27 -0700</bug_when>
    <thetext>I&apos;ve got rid of the glReadPixels() call by relying on GtkGLArea. This needs the GLESv2 support that landed very recently in master and has been released in 3.21.1.

For the moment it needs `export GDK_GL=gles` as I wanted to avoid the build-time dependency on fresh GTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220808</commentid>
    <comment_count>33</comment_count>
      <attachid>286288</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:28:30 -0700</bug_when>
    <thetext>Created attachment 286288
New complete patch

This is a new attempt to finally fix this, hopefully in time for 2.14. This should obsolete all patches here and all other bugs blocking this one. It&apos;s a single big patch, but not that big, I want to avoid landing partial patches again that ended up leaving confusing dead code for long time. It also makes it easier to try it out. It&apos;s an initial implementation, there are many things that can be improved, but it works well enough to be used as a base implementation. It&apos;s based on all other patches proposed, doing some more refactorings and fixing several issues I found. For now it uses glReadPixels to render the texture into the web view, I have only tested it in my laptop with an intel driver and the performance is as good as the X11 backend in the tests I&apos;ve done. It would be useful if someone could confirm whether this works with other drivers too. In the future, the glReadPixels approach should be the fallback when no other options are available, I tried to use gdk_cairo_draw_from_gl() but the web view contents are rendered upside down, I guess we need to query the EGL_WAYLAND_Y_INVERTED_WL and flip the Y-axis somehow or something like that, I don&apos;t know. We could also try to use cairo-gl if available when the GTK+ version is not recent enough to use gdk_cairo_draw_from_gl(). But as I said the glReadPixels fallback works good enough, so it shouldn&apos;t be a blocker for the initial implementation, unless performance is quite bad with other drivers. Things are a lot worse regarding window resize, that is very very slow, we need to figure out why and try to fix it, not sure if we can consider it a blocker though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220810</commentid>
    <comment_count>34</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:31:37 -0700</bug_when>
    <thetext>*** Bug 136897 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220812</commentid>
    <comment_count>35</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:32:06 -0700</bug_when>
    <thetext>*** Bug 136832 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220815</commentid>
    <comment_count>36</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:34:29 -0700</bug_when>
    <thetext>*** Bug 118944 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220817</commentid>
    <comment_count>37</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:35:39 -0700</bug_when>
    <thetext>*** Bug 136831 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220819</commentid>
    <comment_count>38</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:37:13 -0700</bug_when>
    <thetext>*** Bug 136833 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220823</commentid>
    <comment_count>39</comment_count>
      <attachid>286289</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:55:31 -0700</bug_when>
    <thetext>Created attachment 286289
Try to fix builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220829</commentid>
    <comment_count>40</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-17 01:16:58 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Things are a lot worse
&gt; regarding window resize, that is very very slow, we need to figure out why
&gt; and try to fix it, not sure if we can consider it a blocker though.

Zan, if you could find some time to look into this, it would be much appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220830</commentid>
    <comment_count>41</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-08-17 01:17:54 -0700</bug_when>
    <thetext>Ouch, sorry for the long silence, as usual. :(

Carlos, have you had the chance to look at my branch? It already avoids glReadPixels() and performance have been quite good even on ARM hardware.

It still needs some cleanup I finally got some allocated time to do in the next couple of weeks, but I&apos;ll check Carlos patch first and report here.

Sorry for the duplicated work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220831</commentid>
    <comment_count>42</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 01:26:19 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Ouch, sorry for the long silence, as usual. :(

No problem.

&gt; Carlos, have you had the chance to look at my branch? It already avoids
&gt; glReadPixels() and performance have been quite good even on ARM hardware.

Indeed, I used all previous work for this. Your branch avoids glReadPixels by using gdk_cairo_draw_from_egl_image() which I have no idea where it comes from :-)

&gt; It still needs some cleanup I finally got some allocated time to do in the
&gt; next couple of weeks, but I&apos;ll check Carlos patch first and report here.

Cool, thanks!

&gt; Sorry for the duplicated work!

No problem, hopefully we can get something finally working for 2.14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220832</commentid>
    <comment_count>43</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-08-17 01:56:04 -0700</bug_when>
    <thetext>&gt; Indeed, I used all previous work for this. Your branch avoids glReadPixels
&gt; by using gdk_cairo_draw_from_egl_image() which I have no idea where it comes
&gt; from :-)

I just submitted it to GTK+ bugtracker[1] but I should have pointed you to the branch using GtkGLArea[2] which is slightly less efficient but more flexible, specially if we want to move compositing in the UIProcess sooner or later.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=769739
[2] https://github.com/em-/webkit/tree/wayland-ac-glarea

&gt; No problem, hopefully we can get something finally working for 2.14.

Yup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220834</commentid>
    <comment_count>44</comment_count>
      <attachid>286289</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-17 03:05:36 -0700</bug_when>
    <thetext>Comment on attachment 286289
Try to fix builds

Attachment 286289 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/1886063

New failing tests:
fast/scrolling/ios/scrollTo-at-page-load.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220835</commentid>
    <comment_count>45</comment_count>
      <attachid>286292</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-17 03:05:42 -0700</bug_when>
    <thetext>Created attachment 286292
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews122  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220839</commentid>
    <comment_count>46</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 03:30:17 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; &gt; Indeed, I used all previous work for this. Your branch avoids glReadPixels
&gt; &gt; by using gdk_cairo_draw_from_egl_image() which I have no idea where it comes
&gt; &gt; from :-)
&gt; 
&gt; I just submitted it to GTK+ bugtracker[1] but I should have pointed you to
&gt; the branch using GtkGLArea[2] which is slightly less efficient but more
&gt; flexible, specially if we want to move compositing in the UIProcess sooner
&gt; or later.

Let&apos;s go step by step, we have just switched to use the threaded compositor and compositing will happen in the web process for now. The goal now is to make wayland also take advantage of the threaded compositor, we&apos;ll see if and when we move the compositing to the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220840</commentid>
    <comment_count>47</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 03:30:53 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; Comment on attachment 286289 [details]
&gt; Try to fix builds
&gt; 
&gt; Attachment 286289 [details] did not pass ios-sim-ews (ios-simulator-wk2):
&gt; Output: http://webkit-queues.webkit.org/results/1886063
&gt; 
&gt; New failing tests:
&gt; fast/scrolling/ios/scrollTo-at-page-load.html

I&apos;m pretty sure this is not caused by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220842</commentid>
    <comment_count>48</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-08-17 03:39:59 -0700</bug_when>
    <thetext>&gt; Let&apos;s go step by step, we have just switched to use the threaded compositor
&gt; and compositing will happen in the web process for now. The goal now is to
&gt; make wayland also take advantage of the threaded compositor, we&apos;ll see if
&gt; and when we move the compositing to the UI process.

Definitely, and I&apos;ve not even started to think about compositing in UIProcess. 

I mentioned it because the _draw_from_egl() thingy would not be useful in that case as it assumes that the page is a single big EGLImage, while we&apos;d need to switch to GtkGLArea (or something like that) for compositing in UIProcess because we would end up with several EGLImages for each page.

Please consider _draw_from_egl() as a sort of premature optimization that can be safely ignored and give a look at the wayland-ac-glarea branch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220844</commentid>
    <comment_count>49</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 04:10:54 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; &gt; Let&apos;s go step by step, we have just switched to use the threaded compositor
&gt; &gt; and compositing will happen in the web process for now. The goal now is to
&gt; &gt; make wayland also take advantage of the threaded compositor, we&apos;ll see if
&gt; &gt; and when we move the compositing to the UI process.
&gt; 
&gt; Definitely, and I&apos;ve not even started to think about compositing in
&gt; UIProcess. 
&gt; 
&gt; I mentioned it because the _draw_from_egl() thingy would not be useful in
&gt; that case as it assumes that the page is a single big EGLImage, while we&apos;d
&gt; need to switch to GtkGLArea (or something like that) for compositing in
&gt; UIProcess because we would end up with several EGLImages for each page.
&gt; 
&gt; Please consider _draw_from_egl() as a sort of premature optimization that
&gt; can be safely ignored and give a look at the wayland-ac-glarea branch. :)

Sure, I&apos;ll take a look. If the wayland approach ends up being more efficient than the redirected XComposite window, we could use it for X11 too if compiled with wayland support. The major problem right now is the poor performance when resizing the window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220891</commentid>
    <comment_count>50</comment_count>
      <attachid>286289</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-08-17 10:53:27 -0700</bug_when>
    <thetext>Comment on attachment 286289
Try to fix builds

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

It seems eglCreateImage() and eglDestroyImage() are only available on EGL 1.5. Which is relatively new. It gives me linking errors with clang, builds fine with GCC. It ends crashing however for me, but it could because i&apos;m running weston over X11 rather than directly, or it could be related with my not very updated graphics drivers.
I wonder if instead of calling this two functions directly, it would be an idea to use eglCreateImageKHR/eglDestroyImageKHR via eglGetProcAddress() and abort at runtime in WaylandCompositor::initializeEGL() if they are not defined?

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:114
&gt; +EGLImageKHR WaylandCompositor::Buffer::createImage() const
&gt; +{
&gt; +    return static_cast&lt;EGLImageKHR*&gt;(eglCreateImage(PlatformDisplay::sharedDisplay().eglDisplay(), EGL_NO_CONTEXT, EGL_WAYLAND_BUFFER_WL, m_resource, nullptr));

eglCreateImage()

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:206
&gt; +bool WaylandCompositor::Surface::commit()
&gt; +{
&gt; +    EGLDisplay eglDisplay = PlatformDisplay::sharedDisplay().eglDisplay();
&gt; +    if (m_image != EGL_NO_IMAGE_KHR)
&gt; +        eglDestroyImage(eglDisplay, m_image);

eglDestroyImage()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220905</commentid>
    <comment_count>51</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2016-08-17 11:32:34 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; Comment on attachment 286289 [details]
&gt; Try to fix builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286289&amp;action=review
&gt; 
&gt; It seems eglCreateImage() and eglDestroyImage() are only available on EGL
&gt; 1.5. Which is relatively new. It gives me linking errors with clang, builds
&gt; fine with GCC. It ends crashing however for me, but it could because i&apos;m
&gt; running weston over X11 rather than directly, or it could be related with my
&gt; not very updated graphics drivers.
&gt; I wonder if instead of calling this two functions directly, it would be an
&gt; idea to use eglCreateImageKHR/eglDestroyImageKHR via eglGetProcAddress() and
&gt; abort at runtime in WaylandCompositor::initializeEGL() if they are not
&gt; defined?


The typical approach in OpenGL is to see that they are defined and to check that the extension is support via the OpenGL APIs. If either of those fail you should abort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221069</commentid>
    <comment_count>52</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-18 00:58:12 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; Comment on attachment 286289 [details]
&gt; Try to fix builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286289&amp;action=review
&gt; 
&gt; It seems eglCreateImage() and eglDestroyImage() are only available on EGL
&gt; 1.5. Which is relatively new. It gives me linking errors with clang, builds
&gt; fine with GCC.

Ah, right, I forgot about that. Zan&apos;s patch in bug #136897 got eglCreateImage/destroyImage via eglGetProcAddress(&quot;eglCreateImageKHR&quot;), but I got compile errors due to redefined stuff, and I removed that with the idea of checking it again once I had everything working, but I forgot about it in the end.

&gt; It ends crashing however for me,

What the patch does is that if anything required is not available, the nested compositor stops and AC is disabled. In this case we are not doing it because I forgot about eglCreateImage :-P

&gt; but it could because i&apos;m
&gt; running weston over X11 rather than directly,

No, I&apos;ve tried both with weston on X11, and with a real wayland session, but most of the time I worked with weston, so that shouldn&apos;t be a problem.

&gt; or it could be related with my
&gt; not very updated graphics drivers.

More likely.

&gt; I wonder if instead of calling this two functions directly, it would be an
&gt; idea to use eglCreateImageKHR/eglDestroyImageKHR via eglGetProcAddress() and
&gt; abort at runtime in WaylandCompositor::initializeEGL() if they are not
&gt; defined?

Exactly, yes, but instead of aborting, we just stop the nested compositor, and AC is disabled because WaylandCompositor::singleton().isRunning() will return false.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:114
&gt; &gt; +EGLImageKHR WaylandCompositor::Buffer::createImage() const
&gt; &gt; +{
&gt; &gt; +    return static_cast&lt;EGLImageKHR*&gt;(eglCreateImage(PlatformDisplay::sharedDisplay().eglDisplay(), EGL_NO_CONTEXT, EGL_WAYLAND_BUFFER_WL, m_resource, nullptr));
&gt; 
&gt; eglCreateImage()

what?

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:206
&gt; &gt; +bool WaylandCompositor::Surface::commit()
&gt; &gt; +{
&gt; &gt; +    EGLDisplay eglDisplay = PlatformDisplay::sharedDisplay().eglDisplay();
&gt; &gt; +    if (m_image != EGL_NO_IMAGE_KHR)
&gt; &gt; +        eglDestroyImage(eglDisplay, m_image);
&gt; 
&gt; eglDestroyImage()

what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221829</commentid>
    <comment_count>53</comment_count>
      <attachid>286588</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-22 02:59:57 -0700</bug_when>
    <thetext>Created attachment 286588
Updated patch

Use eglGetProcAddress to get eglCreate/DestroyImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221830</commentid>
    <comment_count>54</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-22 04:31:08 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #48)
&gt; &gt; &gt; Let&apos;s go step by step, we have just switched to use the threaded compositor
&gt; &gt; &gt; and compositing will happen in the web process for now. The goal now is to
&gt; &gt; &gt; make wayland also take advantage of the threaded compositor, we&apos;ll see if
&gt; &gt; &gt; and when we move the compositing to the UI process.
&gt; &gt; 
&gt; &gt; Definitely, and I&apos;ve not even started to think about compositing in
&gt; &gt; UIProcess. 
&gt; &gt; 
&gt; &gt; I mentioned it because the _draw_from_egl() thingy would not be useful in
&gt; &gt; that case as it assumes that the page is a single big EGLImage, while we&apos;d
&gt; &gt; need to switch to GtkGLArea (or something like that) for compositing in
&gt; &gt; UIProcess because we would end up with several EGLImages for each page.
&gt; &gt; 
&gt; &gt; Please consider _draw_from_egl() as a sort of premature optimization that
&gt; &gt; can be safely ignored and give a look at the wayland-ac-glarea branch. :)
&gt; 
&gt; Sure, I&apos;ll take a look. If the wayland approach ends up being more efficient
&gt; than the redirected XComposite window, we could use it for X11 too if
&gt; compiled with wayland support. The major problem right now is the poor
&gt; performance when resizing the window.

I&apos;ve taken a look at the new branch. I don&apos;t know much about OpenGL, but it seems that you are using a shader program to flip the Y axis. I wonder if we really need to use a GtkGLArea for that, wouldn&apos;t it be possible to use a shader program with the offscreen context to flip the texture and then simply call gdk_cairo_draw_from_gl? I also wonder if we could simplify the shader program creation by using TextureMapperShaderProgram.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222633</commentid>
    <comment_count>55</comment_count>
      <attachid>286848</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-24 04:24:36 -0700</bug_when>
    <thetext>Created attachment 286848
Another update

Add a way to check the EGL version and only try to get proc address of eglCreateImage/DestroyImage if EGL version is at least 1.5 or if EGL_KHR_image_base extension is present. This way we also return early if there&apos;s a dummy implementation of eglCreateImage/DestroyImage like mesa does for the software rasterizer, because in that case nothing will work in AC mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223029</commentid>
    <comment_count>56</comment_count>
      <attachid>286959</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-25 03:35:42 -0700</bug_when>
    <thetext>Created attachment 286959
Fix poor performance when resizing the window

I finally figured out why it was so slow when resizing the window. The main problem is that the resize operation is expected to be synchronous, and it needs to be synchronous in X11, because every resize creates a new pixmap that the UI process need to use for rendering. So, when a web view is resized, the drawing area notfies the web process and waits synchronously until the web process has processed the resize to update the pixmap and continue rendering. In a multitab app this happens after a window resize for every tab open. In the case of wayland, any SwapBuffer operation that happens during the resize while the UI process is waiting for the response is not actually processed, because the nested compositor runs in the UI process that is blocked. That wait is using a timeout of 0.5 seconds, which means that when all the waits finish because of the timeout, the nested compositor processes all pending buffer updates and continues rendering. In practice this meant that every window resize was blocking the Ui process for 0.5 secs * number of tabs open. In the case of wayland, we don&apos;t really need to wait until the web process responds to continue rendering, because we always have valid buffers until a new one is committed, and that happens automatically during the resize, even before the web process responds, on the first SwapBuffers operation after the resize. Another problem was that sometimes the SwapBuffers operation blocked for a while because of frame throttling, which also causes the UI process to block on the nested compositor. There&apos;s no reason to do any frame sync in the web process when not rendering to the actual screen, because it will happen later anyway, the UI process schedules a redraw after every update, and the parent compositor will take care of syncing to vblank. So, I&apos;ve also added GLContext::swapInterval() to disable frame sync when rendering offscreen from the web process. With both changes (disable frame sync and not blocking the UI process while waiting for a resize reply) the resize performance is quite good, even better than the X11 one, so we should really consider switching to use the nested wayland compositor on X11 too at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223082</commentid>
    <comment_count>57</comment_count>
      <attachid>286959</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-08-25 09:37:19 -0700</bug_when>
    <thetext>Comment on attachment 286959
Fix poor performance when resizing the window

I have tested this. Now it don&apos;t segfaults for me when weston don&apos;t has proper EGL support (like when running weston over x11 with the mesa software render or with the nvidia propietary drivers). Instead it says that it could not create the nested compositor and launches the minibrowser without AC. Which is good enough given the constrains.

Please consider this patch that allows it to build with wayland 1.6:

diff --git a/Source/WebCore/platform/graphics/wayland/WlUniquePtr.h b/Source/WebCore/platform/graphics/wayland/WlUniquePtr.h
index 6ec3005..3943d7a 100644
--- a/Source/WebCore/platform/graphics/wayland/WlUniquePtr.h
+++ b/Source/WebCore/platform/graphics/wayland/WlUniquePtr.h
@@ -27,7 +27,7 @@
 
 #if PLATFORM(WAYLAND)
 #include &lt;wayland-client-protocol.h&gt;
-#include &lt;wayland-server-core.h&gt;
+#include &lt;wayland-server.h&gt;
 
 namespace WebCore {
 
diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h b/Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h
index aec581f..d250056 100644
--- a/Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h
+++ b/Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h
@@ -30,7 +30,7 @@
 #include &quot;AcceleratedSurface.h&quot;
 #include &quot;WebPage.h&quot;
 #include &lt;WebCore/WlUniquePtr.h&gt;
-#include &lt;wayland-egl-core.h&gt;
+#include &lt;wayland-egl.h&gt;
 
 namespace WebKit {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223114</commentid>
    <comment_count>58</comment_count>
      <attachid>286959</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-25 10:17:53 -0700</bug_when>
    <thetext>Comment on attachment 286959
Fix poor performance when resizing the window

Attachment 286959 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/1940715

New failing tests:
fast/viewport/ios/width-is-device-width-overflowing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223419</commentid>
    <comment_count>59</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-25 23:32:49 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; Comment on attachment 286959 [details]
&gt; Fix poor performance when resizing the window
&gt; 
&gt; I have tested this. Now it don&apos;t segfaults for me when weston don&apos;t has
&gt; proper EGL support (like when running weston over x11 with the mesa software
&gt; render or with the nvidia propietary drivers). Instead it says that it could
&gt; not create the nested compositor and launches the minibrowser without AC.
&gt; Which is good enough given the constrains.

Yes, we can&apos;t do more, if we don&apos;t have whatever is required to run AC, we can only disable it.

&gt; Please consider this patch that allows it to build with wayland 1.6:

Sure, I&apos;ll update the patch, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223450</commentid>
    <comment_count>60</comment_count>
      <attachid>287085</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-26 02:14:46 -0700</bug_when>
    <thetext>Created attachment 287085
Updated patch to fix the build with wayland 1.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223489</commentid>
    <comment_count>61</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2016-08-26 05:16:32 -0700</bug_when>
    <thetext>Tested the patch on a Radeon HD 6000 series, using Mesa drivers (Ubuntu 16.04):
* Mesa 11.2, DRM 2.43.0, LLVM 3.8.0
* Weston/Wayland 1.9.0

The window resizing performance problem is not happening with the patch, both running Weston on top of X and on VT.

I tested with jellyfish webgl demo and poster circle, and things look ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224082</commentid>
    <comment_count>62</comment_count>
      <attachid>286959</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-28 12:55:04 -0700</bug_when>
    <thetext>Comment on attachment 286959
Fix poor performance when resizing the window

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

Thanks for working on this.

&gt; Source/WebCore/platform/graphics/GLContext.cpp:126
&gt;  #if PLATFORM(WAYLAND) &amp;&amp; USE(EGL)

I know you didn&apos;t touch this line, but is it really possible to have PLATFORM(WAYLAND) without USE(EGL)?

&gt; Source/WebCore/platform/graphics/GLContext.cpp:169
&gt; +#if PLATFORM(WAYLAND)
&gt; +    if (display.type() == PlatformDisplay::Type::Wayland) {
&gt; +        if (auto eglContext = GLContextEGL::createSharingContext(display))
&gt; +            return WTFMove(eglContext);
&gt; +        return nullptr;
&gt; +    }
&gt; +#endif

It&apos;s not the simplest way to write this code. You can delete this entire block, if...

&gt; Source/WebCore/platform/graphics/GLContext.cpp:171
&gt; +    if (auto glxContext = GLContextGLX::createSharingContext(display))

...if you simply add a check here for display.type() == PlatformDisplay::Type::X11, and...

&gt; Source/WebCore/platform/graphics/GLContext.cpp:174
&gt; +#if USE(EGL)

...and if you change this to #if USE(EGL) || PLATFORM(WAYLAND).

&gt; Source/WebCore/platform/graphics/GLContext.h:45
&gt; +    WTF_MAKE_NONCOPYABLE(GLContext); WTF_MAKE_FAST_ALLOCATED;

I would check with Geoff or Zan before making everything fast allocated. I suspect it&apos;s only supposed to be used for types that are frequently-allocated.

&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:113
&gt; +    return s_sharedDisplayForCompositing ? *s_sharedDisplayForCompositing : sharedDisplay();

Why is it right to return sharedDisplay() here if setSharedDisplayForCompositing has never been called?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:95
&gt; +    case GLContextEGL::Surfaceless:

Would it be wise to use a default case with ASSERT_NOT_REACHED() here? It&apos;s a bit concerning to see a case added to the switch as if it had been forgotten....

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:142
&gt; -    return std::make_unique&lt;GLContextEGL&gt;(context, surface, PbufferSurface);
&gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, PbufferSurface));

Can&apos;t you use std::make_unique here?

Is there a visibility issue?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:152
&gt; +    if (!strstr(extensions, &quot;EGL_KHR_surfaceless_context&quot;) &amp;&amp; !strstr(extensions, &quot;EGL_KHR_surfaceless_opengl&quot;))

It&apos;s OK to proceed if one or the other extension is present? They are not both necessary?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:163
&gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, EGL_NO_SURFACE, Surfaceless));

Ditto (std::make_unique?)

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:197
&gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(pixmap)));

Ditto

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:227
&gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(wlSurface), window));

Ditto (std::make_unique?)

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:277
&gt; +#if PLATFORM(X11)
&gt; +    if (!context) {
&gt; +        if (platformDisplay.type() == PlatformDisplay::Type::X11)
&gt; +            context = createPixmapContext(platformDisplay);
&gt; +#endif
&gt; +#if PLATFORM(WAYLAND)
&gt; +        if (platformDisplay.type() == PlatformDisplay::Type::Wayland)
&gt; +            context = createWaylandContext(platformDisplay);
&gt;  #endif
&gt; +    }

Looks like you have the PLATFORM(X11) guard misplaced here. They&apos;ll be a stray } if !PLATFORM(X11). And it&apos;d be really confusing to have the PLATFORM(WAYLAND) case nested inside a runtime conditional that might not be compiled.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:47
&gt; +    bool makeContextCurrent() override;
&gt; +    void swapBuffers() override;

I do prefer to use override here, but the new style seems to be to use final in an final class....

(override seems better to me since its meaning is very clear.)

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:36
&gt; +typedef int (*PFNGLXSWAPINTERVALSGIPROC) (int);

Impressive.

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:73
&gt; +    return std::unique_ptr&lt;GLContextGLX&gt;(new GLContextGLX(platformDisplay, WTFMove(context), window));

std::make_unique?

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:105
&gt; +    return std::unique_ptr&lt;GLContextGLX&gt;(new GLContextGLX(platformDisplay, WTFMove(context), WTFMove(pbuffer)));

std::make_unique?

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:136
&gt; +    return std::unique_ptr&lt;GLContextGLX&gt;(new GLContextGLX(platformDisplay, WTFMove(context), WTFMove(pixmap), WTFMove(glxPixmap)));

std::make_unique?

&gt; Source/WebCore/platform/graphics/wayland/WlUniquePtr.h:26
&gt; +#pragma once

Which reminds me, we&apos;re supposed to change the files that we edit to use #pragma once.

&gt; Source/WebCore/platform/graphics/wayland/WlUniquePtr.h:55
&gt; +            if (ptr) \

Let me be really really clear about this. It is guaranteed by the C++ standard that this deleter function will never be called if ptr is null. You don&apos;t need the check here.

&gt; Source/WebKit2/ChangeLog:37
&gt; +        feature requirted by X11 or Wayland implementations are not available.

required

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:45
&gt; +Ref&lt;ThreadedCompositor&gt; ThreadedCompositor::create(Client* client, uint64_t nativeSurfaceHandle, ShouldDoFrameSync doFrameSync)

Thank you for not using a bool here!

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:216
&gt; +    // the viewport parameters incorrect, means that the content will be misplaced. Thus

No comma

&gt; Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:50
&gt; +    return std::unique_ptr&lt;AcceleratedBackingStoreWayland&gt;(new AcceleratedBackingStoreWayland(webPage));

I guess you know by now what I&apos;m going to ask here!

&gt; Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:108
&gt; +    return std::unique_ptr&lt;AcceleratedBackingStoreX11&gt;(new AcceleratedBackingStoreX11(webPage));

.

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:80
&gt; +static PFNEGLBINDWAYLANDDISPLAYWL eglBindWaylandDisplay;
&gt; +static PFNEGLUNBINDWAYLANDDISPLAYWL eglUnbindWaylandDisplay;
&gt; +static PFNEGLQUERYWAYLANDBUFFERWL eglQueryWaylandBuffer;
&gt; +static PFNEGLCREATEIMAGEKHRPROC eglCreateImage;
&gt; +static PFNEGLDESTROYIMAGEKHRPROC eglDestroyImage;
&gt; +static PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eglImageTargetTexture2D;

I&apos;m afraid I have just lost some of my faith in humanity.

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:116
&gt; +    WaylandCompositor::Buffer* buffer;
&gt; +    buffer = wl_container_of(listener, buffer, m_destroyListener);
&gt; +    delete buffer;

The assignment is unnecessary:

delete wl_container_of(listener, buffer, m_destroyListener);

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:305
&gt; +                    auto* surface = static_cast&lt;WaylandCompositor::Surface*&gt;(wl_resource_get_user_data(resource));
&gt; +                    delete surface;

Again, you can get rid of this assignment and do the deletion in one line

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:384
&gt; +    [](GSource *source, int *timeout) -&gt; gboolean {

Do you really have to use the trailing return type for this to compile?

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:392
&gt; +    [](GSource* source, GSourceFunc callback, gpointer userData) -&gt; gboolean {

Ditto

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:406
&gt; +    nullptr, // finalize
&gt; +    nullptr, // closure_callback
&gt; +    nullptr, // closure_marshall

So here you use nullptrs for callbacks you don&apos;t want to implement. But up above in this file you have lots of empty lambda functions. Be consistent with one style or the other.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurface.h:42
&gt; +    virtual uint64_t window() const { ASSERT_NOT_REACHED(); return 0; }
&gt; +    virtual uint64_t surfaceID() const { ASSERT_NOT_REACHED(); return 0; };

These should be pure virtual.

If that&apos;s not possible for some reason, I&apos;d like to know why.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:90
&gt; +    return waylandCompositorDisplay() ? std::unique_ptr&lt;AcceleratedSurfaceWayland&gt;(new AcceleratedSurfaceWayland(webPage)) : nullptr;

.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:46
&gt; +    return std::unique_ptr&lt;AcceleratedSurfaceX11&gt;(new AcceleratedSurfaceX11(webPage));

.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224123</commentid>
    <comment_count>63</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-08-29 00:15:42 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; &gt; Source/WebCore/platform/graphics/GLContext.h:45
&gt; &gt; +    WTF_MAKE_NONCOPYABLE(GLContext); WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; I would check with Geoff or Zan before making everything fast allocated. I
&gt; suspect it&apos;s only supposed to be used for types that are
&gt; frequently-allocated.
&gt; 

It shouldn&apos;t hurt. The downside is there&apos;s some extra code generated for the class-specific allocation/deallocation operators, the upside is you don&apos;t use the system allocator. The size of the allocation is also relevant, the larger the structure the heavier the effect on the system allocator. GLContext and the derived classes shouldn&apos;t be too large though.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:406
&gt; &gt; +    nullptr, // finalize
&gt; &gt; +    nullptr, // closure_callback
&gt; &gt; +    nullptr, // closure_marshall
&gt; 
&gt; So here you use nullptrs for callbacks you don&apos;t want to implement. But up
&gt; above in this file you have lots of empty lambda functions. Be consistent
&gt; with one style or the other.
&gt; 

Depends on the API. GSourceFuncs allows for entries to be null, Wayland callback structures might not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224135</commentid>
    <comment_count>64</comment_count>
      <attachid>287085</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-08-29 00:48:48 -0700</bug_when>
    <thetext>Comment on attachment 287085
Updated patch to fix the build with wayland 1.6

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

&gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:42
&gt; +    [](void* data, struct wl_registry*, uint32_t name, const char* interface, uint32_t) {
&gt; +        static_cast&lt;PlatformDisplayWayland*&gt;(data)-&gt;registryGlobal(interface, name);
&gt; +    },

IMO the curly braces placement should mirror the free-floating function definitions, so the braces would be in their own lines ...

&gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:46
&gt; +    [](void*, struct wl_registry*, uint32_t)
&gt; +    {
&gt; +    }

... except in such cases, where the braces should be placed on the same line as the parameter list, with a space in between:

  [](void*, struct wl_registry*, uint32_t) { }

&gt; Source/WebCore/platform/graphics/wayland/WlUniquePtr.h:37
&gt; +template&lt;typename T&gt;
&gt; +struct WlPtrDeleter {
&gt; +    void operator()(T* ptr) const { ASSERT_NOT_REACHED(); }
&gt; +};

Tested it out on a simplified test case, and apparently deleting this operator would throw a compile-time error if T didn&apos;t have the related WlPtrDeleter specialization available. That&apos;s probably preferable to catching missing specializations in a debug build.

&gt; Source/WebKit2/UIProcess/gtk/AcceleratedBackingStore.cpp:65
&gt; +AcceleratedBackingStore::~AcceleratedBackingStore()
&gt; +{
&gt; +}

= default;

&gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:247
&gt; +    [](struct wl_client*, struct wl_resource* resource) {
&gt; +        wl_resource_destroy(resource);
&gt; +    },

Ditto re: style.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurface.cpp:65
&gt; +AcceleratedSurface::~AcceleratedSurface()
&gt; +{
&gt; +}

= default;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224138</commentid>
    <comment_count>65</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-29 01:13:44 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; Comment on attachment 286959 [details]
&gt; Fix poor performance when resizing the window
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286959&amp;action=review
&gt; 
&gt; Thanks for working on this.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GLContext.cpp:126
&gt; &gt;  #if PLATFORM(WAYLAND) &amp;&amp; USE(EGL)
&gt; 
&gt; I know you didn&apos;t touch this line, but is it really possible to have
&gt; PLATFORM(WAYLAND) without USE(EGL)?

Indeed, I changed that in the patch too, the configure fails if wayland target is enabled but EGL disabled.

&gt; &gt; Source/WebCore/platform/graphics/GLContext.cpp:169
&gt; &gt; +#if PLATFORM(WAYLAND)
&gt; &gt; +    if (display.type() == PlatformDisplay::Type::Wayland) {
&gt; &gt; +        if (auto eglContext = GLContextEGL::createSharingContext(display))
&gt; &gt; +            return WTFMove(eglContext);
&gt; &gt; +        return nullptr;
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; It&apos;s not the simplest way to write this code. You can delete this entire
&gt; block, if...
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GLContext.cpp:171
&gt; &gt; +    if (auto glxContext = GLContextGLX::createSharingContext(display))
&gt; 
&gt; ...if you simply add a check here for display.type() ==
&gt; PlatformDisplay::Type::X11, and...
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GLContext.cpp:174
&gt; &gt; +#if USE(EGL)
&gt; 
&gt; ...and if you change this to #if USE(EGL) || PLATFORM(WAYLAND).

I see, it makes sense, yes.

&gt; &gt; Source/WebCore/platform/graphics/GLContext.h:45
&gt; &gt; +    WTF_MAKE_NONCOPYABLE(GLContext); WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; I would check with Geoff or Zan before making everything fast allocated. I
&gt; suspect it&apos;s only supposed to be used for types that are
&gt; frequently-allocated.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:113
&gt; &gt; +    return s_sharedDisplayForCompositing ? *s_sharedDisplayForCompositing : sharedDisplay();
&gt; 
&gt; Why is it right to return sharedDisplay() here if
&gt; setSharedDisplayForCompositing has never been called?

Because if not explicitly set, the shared display is the one to be used for compositing too. That allows us to return a reference to avoid a null check and also to use the same code even for ports or systems (X11) that don&apos;t use a different display for compositing.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:95
&gt; &gt; +    case GLContextEGL::Surfaceless:
&gt; 
&gt; Would it be wise to use a default case with ASSERT_NOT_REACHED() here? It&apos;s
&gt; a bit concerning to see a case added to the switch as if it had been
&gt; forgotten....

This case is new in this patch.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:142
&gt; &gt; -    return std::make_unique&lt;GLContextEGL&gt;(context, surface, PbufferSurface);
&gt; &gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, PbufferSurface));
&gt; 
&gt; Can&apos;t you use std::make_unique here?
&gt; 
&gt; Is there a visibility issue?

GLContext has factory methods, creating instances without using the factory methods could be very problematic, so I prefer to make the constructors all private.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:152
&gt; &gt; +    if (!strstr(extensions, &quot;EGL_KHR_surfaceless_context&quot;) &amp;&amp; !strstr(extensions, &quot;EGL_KHR_surfaceless_opengl&quot;))
&gt; 
&gt; It&apos;s OK to proceed if one or the other extension is present? They are not
&gt; both necessary?

There&apos;s &amp;&amp; so it will only proceed if both are present. Note this is not strcmp that returns 0 in case of success, it&apos;s strstr that returns nullptr in case of failure.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:163
&gt; &gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, EGL_NO_SURFACE, Surfaceless));
&gt; 
&gt; Ditto (std::make_unique?)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:197
&gt; &gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(pixmap)));
&gt; 
&gt; Ditto
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:227
&gt; &gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(wlSurface), window));
&gt; 
&gt; Ditto (std::make_unique?)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:277
&gt; &gt; +#if PLATFORM(X11)
&gt; &gt; +    if (!context) {
&gt; &gt; +        if (platformDisplay.type() == PlatformDisplay::Type::X11)
&gt; &gt; +            context = createPixmapContext(platformDisplay);
&gt; &gt; +#endif
&gt; &gt; +#if PLATFORM(WAYLAND)
&gt; &gt; +        if (platformDisplay.type() == PlatformDisplay::Type::Wayland)
&gt; &gt; +            context = createWaylandContext(platformDisplay);
&gt; &gt;  #endif
&gt; &gt; +    }
&gt; 
&gt; Looks like you have the PLATFORM(X11) guard misplaced here. They&apos;ll be a
&gt; stray } if !PLATFORM(X11). And it&apos;d be really confusing to have the
&gt; PLATFORM(WAYLAND) case nested inside a runtime conditional that might not be
&gt; compiled.

Good catch!

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:47
&gt; &gt; +    bool makeContextCurrent() override;
&gt; &gt; +    void swapBuffers() override;
&gt; 
&gt; I do prefer to use override here, but the new style seems to be to use final
&gt; in an final class....

Unless the class is already marked as final which is the case here.

&gt; (override seems better to me since its meaning is very clear.)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:36
&gt; &gt; +typedef int (*PFNGLXSWAPINTERVALSGIPROC) (int);
&gt; 
&gt; Impressive.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:73
&gt; &gt; +    return std::unique_ptr&lt;GLContextGLX&gt;(new GLContextGLX(platformDisplay, WTFMove(context), window));
&gt; 
&gt; std::make_unique?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:105
&gt; &gt; +    return std::unique_ptr&lt;GLContextGLX&gt;(new GLContextGLX(platformDisplay, WTFMove(context), WTFMove(pbuffer)));
&gt; 
&gt; std::make_unique?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:136
&gt; &gt; +    return std::unique_ptr&lt;GLContextGLX&gt;(new GLContextGLX(platformDisplay, WTFMove(context), WTFMove(pixmap), WTFMove(glxPixmap)));
&gt; 
&gt; std::make_unique?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/wayland/WlUniquePtr.h:26
&gt; &gt; +#pragma once
&gt; 
&gt; Which reminds me, we&apos;re supposed to change the files that we edit to use
&gt; #pragma once.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/wayland/WlUniquePtr.h:55
&gt; &gt; +            if (ptr) \
&gt; 
&gt; Let me be really really clear about this. It is guaranteed by the C++
&gt; standard that this deleter function will never be called if ptr is null. You
&gt; don&apos;t need the check here.

Good point, I&apos;m pretty sure we have more places to fix this.

&gt; &gt; Source/WebKit2/ChangeLog:37
&gt; &gt; +        feature requirted by X11 or Wayland implementations are not available.
&gt; 
&gt; required
&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:45
&gt; &gt; +Ref&lt;ThreadedCompositor&gt; ThreadedCompositor::create(Client* client, uint64_t nativeSurfaceHandle, ShouldDoFrameSync doFrameSync)
&gt; 
&gt; Thank you for not using a bool here!
&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:216
&gt; &gt; +    // the viewport parameters incorrect, means that the content will be misplaced. Thus
&gt; 
&gt; No comma
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:50
&gt; &gt; +    return std::unique_ptr&lt;AcceleratedBackingStoreWayland&gt;(new AcceleratedBackingStoreWayland(webPage));
&gt; 
&gt; I guess you know by now what I&apos;m going to ask here!
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:108
&gt; &gt; +    return std::unique_ptr&lt;AcceleratedBackingStoreX11&gt;(new AcceleratedBackingStoreX11(webPage));
&gt; 
&gt; .
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:80
&gt; &gt; +static PFNEGLBINDWAYLANDDISPLAYWL eglBindWaylandDisplay;
&gt; &gt; +static PFNEGLUNBINDWAYLANDDISPLAYWL eglUnbindWaylandDisplay;
&gt; &gt; +static PFNEGLQUERYWAYLANDBUFFERWL eglQueryWaylandBuffer;
&gt; &gt; +static PFNEGLCREATEIMAGEKHRPROC eglCreateImage;
&gt; &gt; +static PFNEGLDESTROYIMAGEKHRPROC eglDestroyImage;
&gt; &gt; +static PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eglImageTargetTexture2D;
&gt; 
&gt; I&apos;m afraid I have just lost some of my faith in humanity.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:116
&gt; &gt; +    WaylandCompositor::Buffer* buffer;
&gt; &gt; +    buffer = wl_container_of(listener, buffer, m_destroyListener);
&gt; &gt; +    delete buffer;
&gt; 
&gt; The assignment is unnecessary:
&gt; 
&gt; delete wl_container_of(listener, buffer, m_destroyListener);

I&apos;m not sure. Note that wl_container_of is a macro, not a function, I&apos;ll try, but I wanted to be use that delete was called with a WaylandCompositor::Buffer*.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:305
&gt; &gt; +                    auto* surface = static_cast&lt;WaylandCompositor::Surface*&gt;(wl_resource_get_user_data(resource));
&gt; &gt; +                    delete surface;
&gt; 
&gt; Again, you can get rid of this assignment and do the deletion in one line

I&apos;ll check if that&apos;s actually possible.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:384
&gt; &gt; +    [](GSource *source, int *timeout) -&gt; gboolean {
&gt; 
&gt; Do you really have to use the trailing return type for this to compile?

Not to compile, I think, but since we return a number I prefer to tell the compiler this is supposed to return a gboolean instead of assuming it will guess right.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:392
&gt; &gt; +    [](GSource* source, GSourceFunc callback, gpointer userData) -&gt; gboolean {
&gt; 
&gt; Ditto
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:406
&gt; &gt; +    nullptr, // finalize
&gt; &gt; +    nullptr, // closure_callback
&gt; &gt; +    nullptr, // closure_marshall
&gt; 
&gt; So here you use nullptrs for callbacks you don&apos;t want to implement. But up
&gt; above in this file you have lots of empty lambda functions. Be consistent
&gt; with one style or the other.

I know I can do this for GSourceFuncs, but I have no idea about wayland, so I left what the existing code was doing.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurface.h:42
&gt; &gt; +    virtual uint64_t window() const { ASSERT_NOT_REACHED(); return 0; }
&gt; &gt; +    virtual uint64_t surfaceID() const { ASSERT_NOT_REACHED(); return 0; };
&gt; 
&gt; These should be pure virtual.
&gt; 
&gt; If that&apos;s not possible for some reason, I&apos;d like to know why.

You can build without wayland support and with X11 but without redirected window support. In that case we wouldn&apos;t have an implementation of this class, and it won&apos;t build if those methods are pure virtual. However, we need to ensure that the factory method doesn&apos;t create an instance in that case.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:90
&gt; &gt; +    return waylandCompositorDisplay() ? std::unique_ptr&lt;AcceleratedSurfaceWayland&gt;(new AcceleratedSurfaceWayland(webPage)) : nullptr;
&gt; 
&gt; .
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:46
&gt; &gt; +    return std::unique_ptr&lt;AcceleratedSurfaceX11&gt;(new AcceleratedSurfaceX11(webPage));
&gt; 
&gt; .

Same reasoning, we have factory methods, not just create methods that call make_unique, I don&apos;t want to allow creating instances using the public constructors, the factory methods should always be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224139</commentid>
    <comment_count>66</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-29 01:16:08 -0700</bug_when>
    <thetext>(In reply to comment #64)
&gt; Comment on attachment 287085 [details]
&gt; Updated patch to fix the build with wayland 1.6
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=287085&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:42
&gt; &gt; +    [](void* data, struct wl_registry*, uint32_t name, const char* interface, uint32_t) {
&gt; &gt; +        static_cast&lt;PlatformDisplayWayland*&gt;(data)-&gt;registryGlobal(interface, name);
&gt; &gt; +    },
&gt; 
&gt; IMO the curly braces placement should mirror the free-floating function
&gt; definitions, so the braces would be in their own lines ...

I doubted what to do, and checked other similar cases. But I don&apos;t have a preference, so I&apos;ll just change it.

&gt; &gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:46
&gt; &gt; +    [](void*, struct wl_registry*, uint32_t)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; ... except in such cases, where the braces should be placed on the same line
&gt; as the parameter list, with a space in between:
&gt; 
&gt;   [](void*, struct wl_registry*, uint32_t) { }

Ok, same here.

&gt; &gt; Source/WebCore/platform/graphics/wayland/WlUniquePtr.h:37
&gt; &gt; +template&lt;typename T&gt;
&gt; &gt; +struct WlPtrDeleter {
&gt; &gt; +    void operator()(T* ptr) const { ASSERT_NOT_REACHED(); }
&gt; &gt; +};
&gt; 
&gt; Tested it out on a simplified test case, and apparently deleting this
&gt; operator would throw a compile-time error if T didn&apos;t have the related
&gt; WlPtrDeleter specialization available. That&apos;s probably preferable to
&gt; catching missing specializations in a debug build.

Ah, yes compile error is much better than runtime one. Thanks for checking this.

&gt; &gt; Source/WebKit2/UIProcess/gtk/AcceleratedBackingStore.cpp:65
&gt; &gt; +AcceleratedBackingStore::~AcceleratedBackingStore()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; = default;

Ok.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp:247
&gt; &gt; +    [](struct wl_client*, struct wl_resource* resource) {
&gt; &gt; +        wl_resource_destroy(resource);
&gt; &gt; +    },
&gt; 
&gt; Ditto re: style.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurface.cpp:65
&gt; &gt; +AcceleratedSurface::~AcceleratedSurface()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; = default;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224148</commentid>
    <comment_count>67</comment_count>
      <attachid>287260</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-29 02:22:45 -0700</bug_when>
    <thetext>Created attachment 287260
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224149</commentid>
    <comment_count>68</comment_count>
      <attachid>287261</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-29 02:26:32 -0700</bug_when>
    <thetext>Created attachment 287261
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224152</commentid>
    <comment_count>69</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-29 02:35:55 -0700</bug_when>
    <thetext>Committed r205116: &lt;http://trac.webkit.org/changeset/205116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224160</commentid>
    <comment_count>70</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-29 05:41:17 -0700</bug_when>
    <thetext>&gt; Note this is not
&gt; strcmp that returns 0 in case of success, it&apos;s strstr that returns nullptr
&gt; in case of failure.

This is correct...

(In reply to comment #65)
&gt; &gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:152
&gt; &gt; &gt; +    if (!strstr(extensions, &quot;EGL_KHR_surfaceless_context&quot;) &amp;&amp; !strstr(extensions, &quot;EGL_KHR_surfaceless_opengl&quot;))
&gt; &gt; 
&gt; &gt; It&apos;s OK to proceed if one or the other extension is present? They are not
&gt; &gt; both necessary?
&gt; 
&gt; There&apos;s &amp;&amp; so it will only proceed if both are present.

...but this is not correct. You want to use || there. You&apos;re bailing out only if both fail, but you want to bail when either one fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224162</commentid>
    <comment_count>71</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-29 05:52:54 -0700</bug_when>
    <thetext>(In reply to comment #70)
&gt; &gt; Note this is not
&gt; &gt; strcmp that returns 0 in case of success, it&apos;s strstr that returns nullptr
&gt; &gt; in case of failure.
&gt; 
&gt; This is correct...
&gt; 
&gt; (In reply to comment #65)
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:152
&gt; &gt; &gt; &gt; +    if (!strstr(extensions, &quot;EGL_KHR_surfaceless_context&quot;) &amp;&amp; !strstr(extensions, &quot;EGL_KHR_surfaceless_opengl&quot;))
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s OK to proceed if one or the other extension is present? They are not
&gt; &gt; &gt; both necessary?
&gt; &gt; 
&gt; &gt; There&apos;s &amp;&amp; so it will only proceed if both are present.
&gt; 
&gt; ...but this is not correct. You want to use || there. You&apos;re bailing out
&gt; only if both fail, but you want to bail when either one fails.

Sorry, I misunderstood your question. They are not two extensions, they are the same thing, but the name changed, so we proceed if the old or new name are present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224167</commentid>
    <comment_count>72</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-08-29 08:15:54 -0700</bug_when>
    <thetext>Thank you so much for driving this to completion!

I will just note here the issues I found back when trying to avoid having compositing go through the nested compositor and GDK/GTK+ access the upstream compositor directly from WebProcesses, as the committed code does.

I&apos;m not sure they are worth opening a new bug, but I will do that if there&apos;s interest.

The first issue is that when opening a Wayland connection GDK checks that the xdg-shell protocol is available and returns no display if it is not the case:

https://git.gnome.org/browse/gtk+/tree/gdk/wayland/gdkdisplay-wayland.c?id=055ce9f09#n540

Ideally we don&apos;t need GDK to talk with the compositor at all: WebProcesses use GTK+ only for theming, and the few settings needed for that are conveyed through GSettings and not through Wayland in any case.

However the GDK display is created during gtk_init(), which calls exit(1) if unable to open the display. Calling gtk_init_check() avoids the exit(1) but the whole point of the _init stuff is about connecting to the display system.

I tried to skip the gtk_init() call in the WebProcess and (ignoring the fact that WebKit failed to detect it was running under Wayland as it would likely be an easy to fix issue) the theming infrastructure failed because gtk_settings_get_default() doesn&apos;t work without an initialized display, and thus connecting to the notify::gtk-theme-name and notify::gtk-color-scheme signals fails.

As anticipated, under Wayland those signals are not conveyed by the display system but through GSettings (ie. dconf/D-Bus): however the setup for that is done in _gdk_wayland_screen_new() while opening the display in _gdk_wayland_display_open().

To make everything run we could implement an xdg-shell stub in the nested compositor that really does nothing but makes GDK happy, and with little effort it would be possible to make GDK go through the nested compositor with no changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225747</commentid>
    <comment_count>73</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-09-02 03:04:04 -0700</bug_when>
    <thetext>Followup in bug #161530 to get rid of glReadPixels().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222095</attachid>
            <date>2014-01-24 06:14:45 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-WAYLAND-Adds-nested-wayland-compositor-implementatio.patch</filename>
            <type>text/plain</type>
            <size>32773</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSA3OTRjNmM5MmFlZjIwZjUyZjJkZWIxM2ZiMzMwODA5N2MyNGEyNGRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDIyIEphbiAyMDE0IDEyOjQ2OjA2ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
MS8xMF0gW1dBWUxBTkRdIEFkZHMgbmVzdGVkIHdheWxhbmQgY29tcG9zaXRvciBpbXBsZW1lbnRh
dGlvbgogaW4gdGhlIFVJIFByb2Nlc3MKCi0tLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmNwcCAgfCA1MjkgKysrKysrKysrKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaCAgICB8IDEzNyArKysr
KysKIC4uLi9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZS5jcHAgICAgIHwg
MTA5ICsrKysrCiAuLi4vcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuaCAg
ICAgICB8ICA1NyArKysKIDQgZmlsZXMgY2hhbmdlZCwgODMyIGluc2VydGlvbnMoKykKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZS5o
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNjZGM1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5j
cHAKQEAgLTAsMCArMSw1MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMu
TC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9S
TShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQo
R1RLX0FQSV9WRVJTSU9OXzIpCisKKyNpbmNsdWRlICJXYXlsYW5kRGlzcGxheUV2ZW50U291cmNl
LmgiCisKKyNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIFdheWxhbmQgRUdMIGZ1bmN0aW9ucworI2lmICFkZWZpbmVkKFBGTkVHTEJJTkRXQVlM
QU5ERElTUExBWVdMKQordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMQklO
RFdBWUxBTkRESVNQTEFZV0wpKEVHTERpc3BsYXksIHN0cnVjdCB3bF9kaXNwbGF5Kik7CisjZW5k
aWYKKworI2lmICFkZWZpbmVkKFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpCit0eXBlZGVm
IEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xVTkJJTkRXQVlMQU5ERElTUExBWVdMKShF
R0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfZGlzcGxheSopOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQ
Rk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5U
UllQIFBGTkVHTFFVRVJZV0FZTEFOREJVRkZFUldMKShFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfcmVz
b3VyY2UqLCBFR0xpbnQsIEVHTGludCopOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFR0xfV0FZ
TEFORF9CVUZGRVJfV0wpCisjZGVmaW5lCUVHTF9XQVlMQU5EX0JVRkZFUl9XTCAweDMxRDUKKyNl
bmRpZgorCitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MgZWdsSW1h
Z2VUYXJnZXRUZXh0dXJlMmQgPSAwOworc3RhdGljIFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQyAg
ICAgICAgICAgIGVnbENyZWF0ZUltYWdlICAgICAgICAgID0gMDsKK3N0YXRpYyBQRk5FR0xERVNU
Uk9ZSU1BR0VLSFJQUk9DICAgICAgICAgICBlZ2xEZXN0cm95SW1hZ2UgICAgICAgICA9IDA7Citz
dGF0aWMgUEZORUdMQklORFdBWUxBTkRESVNQTEFZV0wgICAgICAgICAgZWdsQmluZERpc3BsYXkg
ICAgICAgICAgPSAwOworc3RhdGljIFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wgICAgICAg
IGVnbFVuYmluZERpc3BsYXkgICAgICAgID0gMDsKK3N0YXRpYyBQRk5FR0xRVUVSWVdBWUxBTkRC
VUZGRVJXTCAgICAgICAgICBlZ2xRdWVyeUJ1ZmZlciAgICAgICAgICA9IDA7CisKKyNpZiBVU0Uo
T1BFTkdMX0VTXzIpCitzdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0VT
X0FQSTsKKyNlbHNlCitzdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0FQ
STsKKyNlbmRpZgorCitib29sIFdheWxhbmRDb21wb3NpdG9yOjpzdXBwb3J0c1JlcXVpcmVkRXh0
ZW5zaW9ucyhFR0xEaXNwbGF5IGVnbERpc3BsYXkpCit7CisgICAgLy8gTWFrZSBzdXJlIHdlIGhh
dmUgdGhlIHJlcXVpcmVkIFdheWxhbmQgRUdMIGV4dGVuc2lvbgorICAgIGNvbnN0IGNoYXIqIGV4
dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhlZ2xEaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7Cisg
ICAgaWYgKCFzdHJzdHIoZXh0ZW5zaW9ucywgIkVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSIp
KSB7CisgICAgICAgIGdfd2FybmluZygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciByZXF1aXJl
cyBFR0xfV0xfYmluZF93YXlsYW5kX2Rpc3BsYXkgZXh0ZW5zaW9uLlxuIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBNYXAgcmVxdWlyZWQgRUdMIGZ1bmN0aW9ucwor
ICAgIGVnbEJpbmREaXNwbGF5ID0gKFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKSBlZ2xHZXRQ
cm9jQWRkcmVzcygiZWdsQmluZFdheWxhbmREaXNwbGF5V0wiKTsKKyAgICBlZ2xVbmJpbmREaXNw
bGF5ID0gKFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpIGVnbEdldFByb2NBZGRyZXNzKCJl
Z2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMIik7CisgICAgaWYgKCFlZ2xCaW5kRGlzcGxheSB8fCAh
ZWdsVW5iaW5kRGlzcGxheSkgeworICAgICAgICBnX3dhcm5pbmcoIk5lc3RlZCBXYXlsYW5kIGNv
bXBvc2l0b3IgcmVxdWlyZXMgZWdsQmluZFdheWxhbmREaXNwbGF5V0wuIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlZ2xDcmVhdGVJbWFnZSA9IChQRk5FR0xDUkVBVEVJ
TUFHRUtIUlBST0MpIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIpOworICAg
IGVnbERlc3Ryb3lJbWFnZSA9IChQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DKSBlZ2xHZXRQcm9j
QWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hSIik7CisgICAgaWYgKCFlZ2xDcmVhdGVJbWFnZSB8
fCAhZWdsRGVzdHJveUltYWdlKSB7CisgICAgICAgIGdfd2FybmluZygiTmVzdGVkIFdheWxhbmQg
Y29tcG9zaXRvciByZXF1aXJlcyBlZ2xDcmVhdGVJbWFnZUtIUi4iKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGVnbFF1ZXJ5QnVmZmVyID0gKFBGTkVHTFFVRVJZV0FZTEFO
REJVRkZFUldMKSBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wiKTsK
KyAgICBpZiAoIWVnbFF1ZXJ5QnVmZmVyKSB7CisgICAgICAgIGdfd2FybmluZygiTmVzdGVkIFdh
eWxhbmQgY29tcG9zaXRvciByZXF1aXJlcyBlZ2xRdWVyeVdheWxhbmRCdWZmZXJXTC4iKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbEltYWdlVGFyZ2V0VGV4dHVyZTJk
ID0JKFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKSBlZ2xHZXRQcm9jQWRkcmVz
cygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpOworICAgIGlmICghZWdsSW1hZ2VUYXJn
ZXRUZXh0dXJlMmQpIHsKKyAgICAgICAgZ193YXJuaW5nKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3Np
dG9yIHJlcXVpcmVzIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlLiIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBv
c2l0b3I6OnNodXRkb3duRUdMKHN0cnVjdCBOZXN0ZWREaXNwbGF5KiBkKQoreworICAgIGlmIChk
LT5lZ2xEZXZpY2UpIHsKKyAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3koZC0+ZWdsRGV2aWNl
KTsKKyAgICAgICAgZC0+ZWdsRGV2aWNlID0gMDsKKyAgICB9CisgICAgaWYgKGQtPmVnbERpc3Bs
YXkgIT0gRUdMX05PX0RJU1BMQVkpIHsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQoZC0+ZWdsRGlz
cGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Cisg
ICAgICAgIGlmIChkLT5lZ2xDdHggIT0gRUdMX05PX0NPTlRFWFQpIHsKKyAgICAgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KGQtPmVnbERpc3BsYXksIGQtPmVnbEN0eCk7CisgICAgICAgICAgICBk
LT5lZ2xDdHggPSBFR0xfTk9fQ09OVEVYVDsKKyAgICAgICAgfQorICAgICAgICBkLT5lZ2xEaXNw
bGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorfQorCitib29sIFdheWxhbmRDb21wb3NpdG9y
Ojppbml0RUdMKHN0cnVjdCBOZXN0ZWREaXNwbGF5KiBkKQoreworICAgIEVHTGludCBuOworCisg
ICAgLy8gRklYTUU6IHdlIHByb2JhYmx5IHdhbnQgdG8gZ2V0IHRoZSBFR0wgY29uZmlndXJhdGlv
biBmcm9tIEdMQ29udGV4dEVHTAorICAgIHN0YXRpYyBjb25zdCBFR0xpbnQgY29udGV4dEF0dHJp
YnNbXSA9IHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgICAgIEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OLCAyLAorI2VuZGlmCisgICAgICAgIEVHTF9OT05FCisgICAgfTsKKyAgICBzdGF0
aWMgY29uc3QgRUdMaW50IGNmZ0F0dHJpYnNbXSA9IHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisg
ICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKKyNlbHNlCisg
ICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfQklULAorI2VuZGlmCisgICAg
ICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisgICAgICAg
IEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDgsCisgICAgICAg
IEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCBFR0xfV0lORE9X
X0JJVCwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAgaWYgKChkLT5lZ2xEaXNwbGF5
ID0gZWdsR2V0RGlzcGxheShkLT53bERpc3BsYXkpKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVnbEluaXRpYWxpemUoZC0+ZWdsRGlzcGxheSwg
MCwgMCkgPT0gRUdMX0ZBTFNFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXN1
cHBvcnRzUmVxdWlyZWRFeHRlbnNpb25zKGQtPmVnbERpc3BsYXkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoZWdsQmluZEFQSShnR0xBUEkpID09IEVHTF9GQUxTRSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFlZ2xDaG9vc2VDb25maWcoZC0+ZWdsRGlzcGxh
eSwgY2ZnQXR0cmlicywgJmQtPmVnbENvbmZpZywgMSwgJm4pIHx8IG4gIT0gMSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZC0+ZWdsQ3R4ID0gZWdsQ3JlYXRlQ29udGV4dChkLT5lZ2xE
aXNwbGF5LCBkLT5lZ2xDb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlicyk7Cisg
ICAgaWYgKGQtPmVnbEN0eCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFlZ2xNYWtlQ3VycmVudChkLT5lZ2xEaXNwbGF5LCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX1NVUkZBQ0UsIGQtPmVnbEN0eCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGQtPmVnbERldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKGQtPmVnbERpc3BsYXks
IGQtPmVnbEN0eCk7CisgICAgaWYgKGNhaXJvX2RldmljZV9zdGF0dXMoZC0+ZWdsRGV2aWNlKSAh
PSBDQUlST19TVEFUVVNfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0cnVjdCBOZXN0ZWREaXNwbGF5KiBXYXlsYW5kQ29tcG9zaXRvcjo6
Y3JlYXRlTmVzdGVkRGlzcGxheSgpCit7CisgICAgc3RydWN0IE5lc3RlZERpc3BsYXkqIGRpc3Bs
YXkgPSBnX25ldzAoc3RydWN0IE5lc3RlZERpc3BsYXksIDEpOworICAgIEdka0Rpc3BsYXkqIGdk
a0Rpc3BsYXkgPSBnZGtfZGlzcGxheV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rp
c3BsYXlfbWFuYWdlcl9nZXQoKSk7CisgICAgZGlzcGxheS0+Z2RrRGlzcGxheSA9IGdka0Rpc3Bs
YXk7CisgICAgZGlzcGxheS0+d2xEaXNwbGF5ID0gZ2RrX3dheWxhbmRfZGlzcGxheV9nZXRfd2xf
ZGlzcGxheShnZGtEaXNwbGF5KTsKKworICAgIGlmICghZGlzcGxheS0+d2xEaXNwbGF5IHx8ICFp
bml0RUdMKGRpc3BsYXkpKSB7CisgICAgICAgIHNodXRkb3duRUdMKGRpc3BsYXkpOworICAgICAg
ICBnX2ZyZWUoZGlzcGxheSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVy
biBkaXNwbGF5OworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpkZXN0cm95TmVzdGVkRGlz
cGxheShzdHJ1Y3QgTmVzdGVkRGlzcGxheSogZGlzcGxheSkKK3sKKyAgICBpZiAoZGlzcGxheS0+
Y2hpbGREaXNwbGF5KSB7CisgICAgICAgIGlmIChkaXNwbGF5LT5ldmVudFNvdXJjZSkgeworICAg
ICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKGdfc291cmNlX2dldF9pZChkaXNwbGF5LT5ldmVudFNv
dXJjZSkpOworICAgICAgICB9CisgICAgICAgIGlmIChkaXNwbGF5LT53bEdsb2JhbCkKKyAgICAg
ICAgICAgIHdsX2dsb2JhbF9kZXN0cm95KGRpc3BsYXktPndsR2xvYmFsKTsKKyAgICAgICAgd2xf
ZGlzcGxheV9kZXN0cm95KGRpc3BsYXktPmNoaWxkRGlzcGxheSk7CisgICAgfQorICAgIHNodXRk
b3duRUdMKGRpc3BsYXkpOworICAgIGdfZnJlZShkaXNwbGF5KTsKK30KKwordm9pZCBXYXlsYW5k
Q29tcG9zaXRvcjo6ZGVzdHJveU5lc3RlZEZyYW1lQ2FsbGJhY2soc3RydWN0IHdsX3Jlc291cmNl
KiByZXNvdXJjZSkKK3sKKyAgICBzdHJ1Y3QgTmVzdGVkRnJhbWVDYWxsYmFjayogY2FsbGJhY2sg
PSBzdGF0aWNfY2FzdDxOZXN0ZWRGcmFtZUNhbGxiYWNrKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJf
ZGF0YShyZXNvdXJjZSkpOworICAgIHdsX2xpc3RfcmVtb3ZlKCZjYWxsYmFjay0+bGluayk7Cisg
ICAgZ19mcmVlKGNhbGxiYWNrKTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFj
ZURlc3Ryb3koc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJl
c291cmNlKQoreworICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3VyY2UpOworfQorCit2b2lk
IFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlQXR0YWNoKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVu
dCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgc3RydWN0IHdsX3Jlc291cmNlKiBidWZm
ZXJSZXNvdXJjZSwgaW50MzJfdCBzeCwgaW50MzJfdCBzeSkKK3sKKyAgICBpZiAoIWJ1ZmZlclJl
c291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSogc3Vy
ZmFjZSA9IHN0YXRpY19jYXN0PHN0cnVjdCBOZXN0ZWRTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0
X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgRUdMaW50IGZvcm1hdDsKKyAgICBXYXlsYW5kQ29tcG9zaXRvciogY29tcG9zaXRv
ciA9IHN1cmZhY2UtPmNvbXBvc2l0b3I7CisgICAgaWYgKCFlZ2xRdWVyeUJ1ZmZlcihjb21wb3Np
dG9yLT5tX2Rpc3BsYXktPmVnbERpc3BsYXksIGJ1ZmZlclJlc291cmNlLCBFR0xfVEVYVFVSRV9G
T1JNQVQsICZmb3JtYXQpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGZvcm1hdCAhPSBFR0xf
VEVYVFVSRV9SR0IgJiYgZm9ybWF0ICE9IEVHTF9URVhUVVJFX1JHQkEpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFdlIHJlbGVhc2UgYnVmZmVyIHJlc291cmNlcyB3aGVuIHByb2Nlc3Npbmcg
cGVuZGluZyBmcmFtZSBjYWxsYmFja3MgKGJlZm9yZSB0aGUgY2xpZW50IGNhbiBhdHRhY2ggYSBu
ZXcgYnVmZmVyKQorICAgIHN1cmZhY2UtPmJ1ZmZlclJlc291cmNlID0gYnVmZmVyUmVzb3VyY2U7
Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VEYW1hZ2Uoc3RydWN0IHdsX2Ns
aWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBpbnQzMl90IHgsIGlu
dDMyX3QgeSwgaW50MzJfdCB3LCBpbnQzMl90IGgpCit7CisgICAgLy8gRklYTUU6IFRyeSB0byB1
c2UgZGFtYWdlIGluZm9ybWF0aW9uIHRvIGltcHJvdmUgcGFpbnRpbmcKK30KKwordm9pZCBXYXls
YW5kQ29tcG9zaXRvcjo6c3VyZmFjZUZyYW1lKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3Ry
dWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMyX3QgaWQpCit7CisgICAgc3RydWN0IE5l
c3RlZFN1cmZhY2UqIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxzdHJ1Y3QgTmVzdGVkU3VyZmFjZSo+
KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICBpZiAoIXN1cmZhY2Up
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFF1ZXVlIGZyYW1lIGNhbGxiYWNrIHVudGlsIHdl
IGFyZSBkb25lIHdpdGggdGhlIGN1cnJlbnQgZnJhbWUgYW5kIGFyZSByZWFkeSB0byBwcm9jZXNz
IHRoZSBuZXh0IG9uZQorICAgIC8vIChzZWUgbmV4dEZyYW1lKQorICAgIHN0cnVjdCBOZXN0ZWRG
cmFtZUNhbGxiYWNrKiBjYWxsYmFjayA9IGdfbmV3MChzdHJ1Y3QgTmVzdGVkRnJhbWVDYWxsYmFj
aywgMSk7CisgICAgY2FsbGJhY2stPnJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVu
dCwgJndsX2NhbGxiYWNrX2ludGVyZmFjZSwgMSwgaWQpOworICAgIHdsX3Jlc291cmNlX3NldF9p
bXBsZW1lbnRhdGlvbihjYWxsYmFjay0+cmVzb3VyY2UsIDAsIGNhbGxiYWNrLCBkZXN0cm95TmVz
dGVkRnJhbWVDYWxsYmFjayk7CisgICAgd2xfbGlzdF9pbnNlcnQoc3VyZmFjZS0+ZnJhbWVDYWxs
YmFja0xpc3QucHJldiwgJmNhbGxiYWNrLT5saW5rKTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9z
aXRvcjo6c3VyZmFjZVNldE9wYXF1ZVJlZ2lvbihzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0
cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVnaW9uUmVz
b3VyY2UpCit7CisKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZVNldElucHV0
UmVnaW9uKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNv
dXJjZSwgc3RydWN0IHdsX3Jlc291cmNlKiByZWdpb25SZXNvdXJjZSkKK3sKKworfQorCit2b2lk
IFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlQ29tbWl0KHN0cnVjdCB3bF9jbGllbnQqIGNsaWVu
dCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBzdHJ1Y3QgTmVzdGVkU3Vy
ZmFjZSpzdXJmYWNlID0gc3RhdGljX2Nhc3Q8c3RydWN0IE5lc3RlZFN1cmZhY2UqPih3bF9yZXNv
dXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBXYXlsYW5kQ29tcG9zaXRvciogY29tcG9zaXRvciA9IHN1cmZhY2Ut
PmNvbXBvc2l0b3I7CisKKyAgICAvLyBEZXN0cm95IGFueSBleGlzdGluZyBFR0xJbWFnZSBmb3Ig
dGhpcyBzdXJmYWNlCisgICAgaWYgKHN1cmZhY2UtPmltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIp
CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZShjb21wb3NpdG9yLT5tX2Rpc3BsYXktPmVnbERpc3Bs
YXksIHN1cmZhY2UtPmltYWdlKTsKKworICAgIC8vIERlc3Ryb3kgYW55IGV4aXN0aW5nIGNhaXJv
IHN1cmZhY2UgZm9yIHRoaXMgc3VyZmFjZQorICAgIGlmIChzdXJmYWNlLT5jYWlyb1N1cmZhY2Up
IHsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UtPmNhaXJvU3VyZmFjZSk7
CisgICAgICAgIHN1cmZhY2UtPmNhaXJvU3VyZmFjZSA9IDA7CisgICAgfQorCisgICAgLy8gQ3Jl
YXRlIGEgbmV3IEVHTEltYWdlIGZyb20gdGhlIGxhc3QgYnVmZmVyIGF0dGFjaGVkIHRvIHRoaXMg
c3VyZmFjZQorICAgIEVHTERpc3BsYXkgZWdsRGlzcGxheSA9IGNvbXBvc2l0b3ItPm1fZGlzcGxh
eS0+ZWdsRGlzcGxheTsKKyAgICBzdXJmYWNlLT5pbWFnZSA9IHN0YXRpY19jYXN0PEVHTEltYWdl
S0hSKj4oZWdsQ3JlYXRlSW1hZ2UoZWdsRGlzcGxheSwgRUdMX05PX0NPTlRFWFQsIEVHTF9XQVlM
QU5EX0JVRkZFUl9XTCwgc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UsIDApKTsKKyAgICBpZiAoc3Vy
ZmFjZS0+aW1hZ2UgPT0gRUdMX05PX0lNQUdFX0tIUikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gQmluZCB0aGUgc3VyZmFjZSB0ZXh0dXJlIHRvIHRoZSBuZXcgRUdMSW1hZ2UKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHN1cmZhY2UtPnRleHR1cmUpOworICAgIGVnbEltYWdl
VGFyZ2V0VGV4dHVyZTJkKEdMX1RFWFRVUkVfMkQsIHN1cmZhY2UtPmltYWdlKTsKKworICAgIC8v
IENyZWF0ZSBhIG5ldyBjYWlybyBzdXJmYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VyZmFjZSB0
ZXh0dXJlCisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZWdsUXVlcnlCdWZmZXIoZWdsRGlz
cGxheSwgc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UsIEVHTF9XSURUSCwgJndpZHRoKTsKKyAgICBl
Z2xRdWVyeUJ1ZmZlcihlZ2xEaXNwbGF5LCBzdXJmYWNlLT5idWZmZXJSZXNvdXJjZSwgRUdMX0hF
SUdIVCwgJmhlaWdodCk7CisgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbXBvc2l0b3It
Pm1fZGlzcGxheS0+ZWdsRGV2aWNlOworICAgIHN1cmZhY2UtPmNhaXJvU3VyZmFjZSA9IGNhaXJv
X2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xP
Ul9BTFBIQSwgc3VyZmFjZS0+dGV4dHVyZSwgd2lkdGgsIGhlaWdodCk7CisgICAgY2Fpcm9fc3Vy
ZmFjZV9tYXJrX2RpcnR5IChzdXJmYWNlLT5jYWlyb1N1cmZhY2UpOyAvLyBGSVhNRTogV2h5IGRv
IHdlIG5lZWQgdGhpcz8KKworICAgIC8vIFJlZHJhdyB0aGUgd2lkZ2V0IGJhY2tlZCBieSB0aGlz
IHN1cmZhY2UKKyAgICBpZiAoY29tcG9zaXRvci0+bV93aWRnZXQpCisgICAgICAgIGd0a193aWRn
ZXRfcXVldWVfZHJhdyhjb21wb3NpdG9yLT5tX3dpZGdldCk7Cit9CisKK3ZvaWQgV2F5bGFuZENv
bXBvc2l0b3I6OnN1cmZhY2VTZXRCdWZmZXJUcmFuc2Zvcm0oc3RydWN0IHdsX2NsaWVudCogY2xp
ZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBpbnQzMl90IHRyYW5zZm9ybSkKK3sK
KworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlU2V0QnVmZmVyU2NhbGUoc3Ry
dWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBpbnQz
Ml90IHNjYWxlKQoreworCit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc3VyZmFjZV9pbnRl
cmZhY2Ugc3VyZmFjZUludGVyZmFjZSA9IHsKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFj
ZURlc3Ryb3ksCisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VBdHRhY2gsCisgICAgV2F5
bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VEYW1hZ2UsCisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnN1
cmZhY2VGcmFtZSwKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZVNldE9wYXF1ZVJlZ2lv
biwKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZVNldElucHV0UmVnaW9uLAorICAgIFdh
eWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlQ29tbWl0LAorICAgIFdheWxhbmRDb21wb3NpdG9yOjpz
dXJmYWNlU2V0QnVmZmVyVHJhbnNmb3JtLAorICAgIFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNl
U2V0QnVmZmVyU2NhbGUKK307CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmRvRGVzdHJveU5l
c3RlZFN1cmZhY2Uoc3RydWN0IE5lc3RlZFN1cmZhY2UqIHN1cmZhY2UpCit7CisgICAgLy8gRGVz
dHJveSBwZW5kaW5nIGZyYW1lIGNhbGxiYWNrcworICAgIHN0cnVjdCBOZXN0ZWRGcmFtZUNhbGxi
YWNrICpjYiwgKm5leHQ7CisgICAgd2xfbGlzdF9mb3JfZWFjaF9zYWZlKGNiLCBuZXh0LCAmc3Vy
ZmFjZS0+ZnJhbWVDYWxsYmFja0xpc3QsIGxpbmspCisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ry
b3koY2ItPnJlc291cmNlKTsKKyAgICB3bF9saXN0X2luaXQoJnN1cmZhY2UtPmZyYW1lQ2FsbGJh
Y2tMaXN0KTsKKworICAgIC8vIFJlbGVhc2UgbGFzdCBhdHRhY2hlZCBidWZmZXIKKyAgICBpZiAo
c3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHF1ZWluZyBhIGJ1
ZmZlciByZWxlYXNlIGhlcmUgY2FuIHByb2R1Y2Ugc2VnZmF1bHQgaW4gc29tZSBzY25lYXJpb3Ms
CisgICAgICAgIC8vIGJ1dCBhcmUgd2Ugbm90IGxlYWtpbmcgdGhlIGJ1ZmZlciBvdGhlcndpc2U/
IFdlIG1pZ2h0IG5lZWQgc29tZSBtb3JlCisgICAgICAgIC8vIGVsYWJvcmF0ZSBtZWNoYW5pc20g
dG8gcmVsZWFzZSB0aGUgYnVmZmVyIChzZWUgbmVzdGVkIGV4YW1wbGUgaW4gd2VzdG9uKQorICAg
ICAgICAvLyB3bF9yZXNvdXJjZV9xdWV1ZV9ldmVudChzdXJmYWNlLT5idWZmZXJSZXNvdXJjZSwg
V0xfQlVGRkVSX1JFTEVBU0UpOworICAgICAgICBzdXJmYWNlLT5idWZmZXJSZXNvdXJjZSA9IDA7
CisgICAgfQorCisgICAgLy8gRGVzdHJveSBFR0xJbWFnZQorICAgIGlmIChzdXJmYWNlLT5pbWFn
ZSAhPSBFR0xfTk9fSU1BR0VfS0hSKSB7CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZShzdXJmYWNl
LT5jb21wb3NpdG9yLT5tX2Rpc3BsYXktPmVnbERpc3BsYXksIHN1cmZhY2UtPmltYWdlKTsKKyAg
ICAgICAgc3VyZmFjZS0+aW1hZ2UgPSAwOworICAgIH0KKworICAgIC8vIERlbGV0ZSBHTCB0ZXh0
dXJlCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc3VyZmFjZS0+dGV4dHVyZSk7CisKKyAgICBn
X2ZyZWUoc3VyZmFjZSk7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmRlc3Ryb3lOZXN0
ZWRTdXJmYWNlKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgc3RydWN0IE5l
c3RlZFN1cmZhY2UqIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxzdHJ1Y3QgTmVzdGVkU3VyZmFjZSo+
KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICBpZiAoc3VyZmFjZSkK
KyAgICAgICAgZG9EZXN0cm95TmVzdGVkU3VyZmFjZShzdXJmYWNlKTsKK30KKwordm9pZCBXYXls
YW5kQ29tcG9zaXRvcjo6Y3JlYXRlU3VyZmFjZShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0
cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UsIHVpbnQzMl90IGlkKQoreworICAgIFdheWxhbmRD
b21wb3NpdG9yKiBjb21wb3NpdG9yID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3IqPih3
bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7CisKKyAgICAvLyBGSVhNRTogRm9y
IG5vdyB3ZSBvbmx5IHN1cHBvcnQgb25lIHN1cmZhY2Uvd2lkZ2V0CisgICAgaWYgKGNvbXBvc2l0
b3ItPm1fc3VyZmFjZSkgeworICAgICAgICBnX3dhcm5pbmcoIk5lc3RlZCBXYXlsYW5kIGNvbXBv
c2l0b3Igb25seSBzdXBwb3J0cyBvbmUgc3VyZmFjZS4iKTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qg
TmVzdGVkU3VyZmFjZSogc3VyZmFjZSA9IGdfbmV3MChzdHJ1Y3QgTmVzdGVkU3VyZmFjZSwgMSk7
CisgICAgc3VyZmFjZS0+Y29tcG9zaXRvciA9IGNvbXBvc2l0b3I7CisgICAgd2xfbGlzdF9pbml0
KCZzdXJmYWNlLT5mcmFtZUNhbGxiYWNrTGlzdCk7CisKKyAgICAvLyBDcmVhdGUgYSBHTCB0ZXh0
dXJlIHRvIGJhY2sgdGhpcyBzdXJmYWNlCisgICAgZ2xHZW5UZXh0dXJlcyAoMSwgJnN1cmZhY2Ut
PnRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHN1cmZhY2UtPnRl
eHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaSAoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaSAoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFy
YW1ldGVyaSAoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkgKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHN1cmZhY2UgcmVzb3VyY2UK
KyAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHN1cmZhY2VSZXNvdXJjZSA9IHdsX3Jlc291cmNlX2Ny
ZWF0ZShjbGllbnQsICZ3bF9zdXJmYWNlX2ludGVyZmFjZSwgMSwgaWQpOworICAgIHdsX3Jlc291
cmNlX3NldF9pbXBsZW1lbnRhdGlvbihzdXJmYWNlUmVzb3VyY2UsICZzdXJmYWNlSW50ZXJmYWNl
LCBzdXJmYWNlLCBkZXN0cm95TmVzdGVkU3VyZmFjZSk7CisKKyAgICAvLyBGSVhNRTogRm9yIG5v
dyB3ZSBvbmx5IHN1cHBvcnQgb25lIHN1cmZhY2Uvd2lkZ2V0CisgICAgY29tcG9zaXRvci0+bV9z
dXJmYWNlID0gc3VyZmFjZTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6Y3JlYXRlUmVn
aW9uKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJj
ZSwgdWludDMyX3QgaWQpCit7CisKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jb21wb3Np
dG9yX2ludGVyZmFjZSBjb21wb3NpdG9ySW50ZXJmYWNlID0geworICAgIFdheWxhbmRDb21wb3Np
dG9yOjpjcmVhdGVTdXJmYWNlLAorICAgIFdheWxhbmRDb21wb3NpdG9yOjpjcmVhdGVSZWdpb24K
K307CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmNvbXBvc2l0b3JCaW5kKHdsX2NsaWVudCog
Y2xpZW50LCB2b2lkKiBkYXRhLCB1aW50MzJfdCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKK3sKKyAg
ICBXYXlsYW5kQ29tcG9zaXRvciogY29tcG9zaXRvciA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21w
b3NpdG9yKj4oZGF0YSk7CisgICAgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9IHdsX3Jl
c291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgc3RkOjptaW4o
c3RhdGljX2Nhc3Q8aW50Pih2ZXJzaW9uKSwgMyksIGlkKTsKKyAgICB3bF9yZXNvdXJjZV9zZXRf
aW1wbGVtZW50YXRpb24ocmVzb3VyY2UsICZjb21wb3NpdG9ySW50ZXJmYWNlLCBjb21wb3NpdG9y
LCAwKTsKK30KKworYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgpCit7CisgICAg
Ly8gQ3JlYXRlIHRoZSBuZXN0ZWQgZGlzcGxheQorICAgIG1fZGlzcGxheSA9IGNyZWF0ZU5lc3Rl
ZERpc3BsYXkoKTsKKyAgICBpZiAoIW1fZGlzcGxheSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgbV9kaXNwbGF5LT5jaGlsZERpc3BsYXkgPSB3bF9kaXNwbGF5X2NyZWF0ZSgpOworICAg
IGlmICghbV9kaXNwbGF5LT5jaGlsZERpc3BsYXkpIHsKKyAgICAgICAgZ193YXJuaW5nKCJOZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBjcmVhdGUgZGlzcGxheSBvYmplY3QuIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAod2xfZGlzcGxheV9hZGRf
c29ja2V0KG1fZGlzcGxheS0+Y2hpbGREaXNwbGF5LCAid2Via2l0Z3RrLXdheWxhbmQtY29tcG9z
aXRvci1zb2NrZXQiKSAhPSAwKSB7CisgICAgICAgIGdfd2FybmluZygiTmVzdGVkIFdheWxhbmQg
Y29tcG9zaXRvciBjb3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgc29ja2V0Iik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBCaW5kIHRoZSBjb21wb3NpdG9yIHRvIHRoaXMg
ZGlzcGxheQorICAgIG1fZGlzcGxheS0+d2xHbG9iYWwgPSB3bF9nbG9iYWxfY3JlYXRlKG1fZGlz
cGxheS0+Y2hpbGREaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIHdsX2NvbXBvc2l0
b3JfaW50ZXJmYWNlLnZlcnNpb24sIHRoaXMsIGNvbXBvc2l0b3JCaW5kKTsKKyAgICBpZiAoIW1f
ZGlzcGxheS0+d2xHbG9iYWwpIHsKKyAgICAgICAgZ193YXJuaW5nKCJOZXN0ZWQgV2F5bGFuZCBj
b21wb3NpdG9yIGNvdWxkIG5vdCByZWdpc3RlciBkaXNwbGF5IGdsb2JhbCIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFlZ2xCaW5kRGlzcGxheShtX2Rpc3BsYXkt
PmVnbERpc3BsYXksIG1fZGlzcGxheS0+Y2hpbGREaXNwbGF5KSkgeworICAgICAgICBnX3dhcm5p
bmcoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IGJpbmQgbmVzdGVkIGRpc3Bs
YXkiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEhhbmRsZSBvdXIg
ZGlzcGxheSBldmVudHMgdGhyb3VnaCBHTGliJ3MgbWFpbiBsb29wCisgICAgbV9kaXNwbGF5LT5l
dmVudFNvdXJjZSA9IFdheWxhbmREaXNwbGF5RXZlbnRTb3VyY2U6OmNyZWF0ZURpc3BsYXlFdmVu
dFNvdXJjZShtX2Rpc3BsYXktPmNoaWxkRGlzcGxheSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworV2F5bGFuZENvbXBvc2l0b3IqIFdheWxhbmRDb21wb3NpdG9yOjptX2luc3RhbmNlID0gMDsK
KworV2F5bGFuZENvbXBvc2l0b3IqIFdheWxhbmRDb21wb3NpdG9yOjppbnN0YW5jZSgpCit7Cisg
ICAgaWYgKG1faW5zdGFuY2UpCisgICAgICAgIHJldHVybiBtX2luc3RhbmNlOworCisgICAgV2F5
bGFuZENvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSBuZXcgV2F5bGFuZENvbXBvc2l0b3IoKTsKKyAg
ICBpZiAoIWNvbXBvc2l0b3ItPmluaXRpYWxpemUoKSkgeworICAgICAgICBkZWxldGUgY29tcG9z
aXRvcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbV9pbnN0YW5jZSA9IGNvbXBv
c2l0b3I7CisgICAgcmV0dXJuIG1faW5zdGFuY2U7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpX
YXlsYW5kQ29tcG9zaXRvcigpCisgICAgOiBtX2Rpc3BsYXkoMCkKKyAgICAsIG1fc3VyZmFjZSgw
KQorICAgICwgbV93aWRnZXQoMCkKK3sKK30KKworV2F5bGFuZENvbXBvc2l0b3I6On5XYXlsYW5k
Q29tcG9zaXRvcigpCit7CisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgZG9EZXN0cm95TmVz
dGVkU3VyZmFjZShtX3N1cmZhY2UpOworCisgICAgaWYgKG1fZGlzcGxheSkKKyAgICAgICAgZGVz
dHJveU5lc3RlZERpc3BsYXkobV9kaXNwbGF5KTsKK30KKworLy8gRklYTUU6IEZvciBub3cgd2Ug
b25seSBzdXBwb3J0IG9uZSB3aWRnZXQvc3VyZmFjZSwgaW4gdGhlIGZ1dHVyZQorLy8gd2Ugc2hv
dWxkIGJlIGFibGUgdG8gbWFwIG11bHRpcGxlIHdpZGdldHMgdG8gbXVsdGlwbGUgc3VyZmFjZXMK
K3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmFkZFdpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKK3sK
KyAgICBpZiAobV93aWRnZXQpCisgICAgICAgIGdfd2FybmluZygiTmVzdGVkIFdheWxhbmQgY29t
cG9zaXRvciBvbmx5IHN1cHBvcnRzIG9uZSB3aWRnZXQuIik7CisgICAgbV93aWRnZXQgPSB3aWRn
ZXQ7Cit9CisKKy8vIEZJWE1FOiBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBvbmUgd2lkZ2V0L3N1
cmZhY2UsIGluIHRoZSBmdXR1cmUKKy8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1hcCBtdWx0aXBs
ZSB3aWRnZXRzIHRvIG11bHRpcGxlIHN1cmZhY2VzCitjYWlyb19zdXJmYWNlX3QqIFdheWxhbmRD
b21wb3NpdG9yOjpjYWlyb1N1cmZhY2VGb3JXaWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQpCit7Cisg
ICAgaWYgKHdpZGdldCAhPSBtX3dpZGdldCB8fCAhbV9zdXJmYWNlKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5jYWlyb1N1cmZhY2U7Cit9CisKK3ZvaWQgV2F5bGFu
ZENvbXBvc2l0b3I6Om5leHRGcmFtZSgpCit7CisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXaGVuIHdlIHN1cHBvcnQgbXVsdGlwbGUgc3VyZmFj
ZXMvd2lkZ2V0cyB3ZSBwcm9iYWJseSB3YW50IHRvIHJlcXVlc3QKKyAgICAvLyB0aGUgbmV4dCBm
cmFtZSBmb3IgYSBzcGVjaWZpYyB3aWRnZXQgb25seSBzbyB3ZSBjYW4gdGhyb3R0bGUgZnJhbWUg
Y2FsbGJhY2tzCisgICAgLy8gZm9yIHRoYXQgc3VyZmFjZSBhbG9uZQorCisgICAgLy8gUHJvY2Vz
cyBmcmFtZSBjYWxsYmFja3MgZm9yIHRoZSBzdXJmYWNlCisgICAgc3RydWN0IE5lc3RlZEZyYW1l
Q2FsbGJhY2sgKm5jLCAqbmV4dDsKKyAgICB3bF9saXN0X2Zvcl9lYWNoX3NhZmUgKG5jLCBuZXh0
LCAmbV9zdXJmYWNlLT5mcmFtZUNhbGxiYWNrTGlzdCwgbGluaykgeworICAgICAgICB3bF9jYWxs
YmFja19zZW5kX2RvbmUgKG5jLT5yZXNvdXJjZSwgMCk7CisgICAgICAgIHdsX3Jlc291cmNlX2Rl
c3Ryb3kgKG5jLT5yZXNvdXJjZSk7CisgICAgfQorCisgICAgd2xfbGlzdF9pbml0ICgmbV9zdXJm
YWNlLT5mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzICht
X2Rpc3BsYXktPmNoaWxkRGlzcGxheSk7CisKKyAgICAvLyBSZWxlYXNlIHRoZSBsYXN0IGJ1ZmZl
ciBhdHRhY2hlZCBmb3IgdGhpcyBzdXJmYWNlCisgICAgaWYgKG1fc3VyZmFjZS0+YnVmZmVyUmVz
b3VyY2UpIHsKKyAgICAgICAgd2xfcmVzb3VyY2VfcXVldWVfZXZlbnQgKG1fc3VyZmFjZS0+YnVm
ZmVyUmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNFKTsKKyAgICAgICAgbV9zdXJmYWNlLT5idWZm
ZXJSZXNvdXJjZSA9IDA7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zMzc3NDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIElnYWxpYSBTLkwuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgIFdheWxhbmRDb21wb3NpdG9yX2gKKyNkZWZpbmUgIFdheWxhbmRDb21wb3NpdG9yX2gK
KworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxB
TkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJ
X1ZFUlNJT05fMikKKworI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+CisjaW5jbHVkZSA8d2F5
bGFuZC1zZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2luY2x1ZGUgPEVHTC9l
Z2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Cisj
aW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjaW5jbHVkZSA8R0wvZ2wuaD4KKyNpbmNsdWRlIDxH
TC9nbGV4dC5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKwor
I2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBOZXN0ZWRTdXJm
YWNlOworY2xhc3MgV2F5bGFuZENvbXBvc2l0b3I7CisKKy8vIE5lc3RlZCBjb21wb3NpdG9yIGRp
c3BsYXkKK3N0cnVjdCBOZXN0ZWREaXNwbGF5IHsKKyAgR2RrRGlzcGxheSogZ2RrRGlzcGxheTsg
ICAgICAgICAgICAgICAvLyBHZGsgZGlzcGxheQorICBzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNw
bGF5OyAgICAgICAgIC8vIE1haW4gV2F5bGFuZCBkaXNwbGF5CisgIHN0cnVjdCB3bF9kaXNwbGF5
KiBjaGlsZERpc3BsYXk7ICAgICAgLy8gTmVzdGVkIGRpc3BsYXkKKyAgRUdMRGlzcGxheSBlZ2xE
aXNwbGF5OyAgICAgICAgICAgICAgICAvLyBFR0wgZGlzcGxheQorICBFR0xDb25maWcgZWdsQ29u
ZmlnOyAgICAgICAgICAgICAgICAgIC8vIEVHTCBjb25maWd1cmF0aW9uCisgIEVHTENvbnRleHQg
ZWdsQ3R4OyAgICAgICAgICAgICAgICAgICAgLy8gRUdMIGNvbnRleHQKKyAgY2Fpcm9fZGV2aWNl
X3QqIGVnbERldmljZTsgICAgICAgICAgICAvLyBFR0wgY2Fpcm8gZGV2aWNlCisgIHN0cnVjdCB3
bF9nbG9iYWwqIHdsR2xvYmFsOyAgICAgICAgICAgLy8gV2F5bGFuZCBnbG9iYWwKKyAgR1NvdXJj
ZSogZXZlbnRTb3VyY2U7ICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IGV2ZW50IHNvdXJjZQor
fTsKKworLy8gTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBzdXJmYWNlCitzdHJ1Y3QgTmVzdGVk
U3VyZmFjZSB7CisgIFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yOyAgICAgICAgLy8gTmVz
dGVkIGNvbXBvc2l0b3IgaW5zdGFuY2UKKyAgc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXJSZXNv
dXJjZTsgICAvLyBMYXN0IGF0dGFjaGVkIGJ1ZmZlcgorICBHTHVpbnQgdGV4dHVyZTsgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEdMIHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlCisgIEVHTEltYWdl
S0hSKiBpbWFnZTsgICAgICAgICAgICAgICAgICAgLy8gRUdMIEltYWdlIGZvciB0ZXh0dXJlCisg
IGNhaXJvX3N1cmZhY2VfdCogY2Fpcm9TdXJmYWNlOyAgICAgICAgLy8gQ2Fpcm8gc3VyZmFjZSBm
b3IgR0wgdGV4dHVyZQorICBzdHJ1Y3Qgd2xfbGlzdCBmcmFtZUNhbGxiYWNrTGlzdDsgICAgIC8v
IFBlbmRpbmcgZnJhbWUgY2FsbGJhY2sgbGlzdAorfTsKKworLy8gTGlzdCBvZiBwZW5kaW5nIGZy
YW1lIGNhbGxiYWNrcyBvbiBhIG5lc3RlZCBzdXJmYWNlCitzdHJ1Y3QgTmVzdGVkRnJhbWVDYWxs
YmFjayB7CisgIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2U7CisgIHN0cnVjdCB3bF9saXN0
IGxpbms7Cit9OworCitjbGFzcyBXYXlsYW5kQ29tcG9zaXRvciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFdheWxhbmRDb21wb3NpdG9yKiBpbnN0YW5jZSgpOworICAgIHZpcnR1YWwgfldheWxhbmRD
b21wb3NpdG9yKCk7CisKKyAgICAvLyBXZWJLaXQgaW50ZWdyYXRpb24KKyAgICB2b2lkIGFkZFdp
ZGdldChHdGtXaWRnZXQqKTsKKyAgICB2b2lkIG5leHRGcmFtZSgpOworICAgIGNhaXJvX3N1cmZh
Y2VfdCogY2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCopOworCisgICAgLy8gV2F5bGFu
ZCBjb21wb3NpdG9yIGludGVyZmFjZQorICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVN1cmZhY2Uoc3Ry
dWN0IHdsX2NsaWVudCosIHdsX3Jlc291cmNlKiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZVJlZ2lvbihzdHJ1Y3Qgd2xfY2xpZW50Kiwgd2xfcmVzb3VyY2UqLCB1aW50MzJfdCk7
CisKKyAgICAvLyBXYXlsYW5kIHN1cmZhY2UgaW50ZXJmYWNlCisgICAgc3RhdGljIHZvaWQgc3Vy
ZmFjZURlc3Ryb3koc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSopOworICAg
IHN0YXRpYyB2b2lkIHN1cmZhY2VBdHRhY2goc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9y
ZXNvdXJjZSosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QsIGludDMyX3QpOworICAgIHN0
YXRpYyB2b2lkIHN1cmZhY2VEYW1hZ2Uoc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNv
dXJjZSosIGludDMyX3QsIGludDMyX3QsIGludDMyX3QsIGludDMyX3QpOworICAgIHN0YXRpYyB2
b2lkIHN1cmZhY2VGcmFtZShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwg
dWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIHN1cmZhY2VTZXRPcGFxdWVSZWdpb24oc3RydWN0
IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHN0cnVjdCB3bF9yZXNvdXJjZSopOwor
ICAgIHN0YXRpYyB2b2lkIHN1cmZhY2VTZXRJbnB1dFJlZ2lvbihzdHJ1Y3Qgd2xfY2xpZW50Kiwg
c3RydWN0IHdsX3Jlc291cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgc3RhdGljIHZv
aWQgc3VyZmFjZUNvbW1pdChzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKik7
CisgICAgc3RhdGljIHZvaWQgc3VyZmFjZVNldEJ1ZmZlclRyYW5zZm9ybShzdHJ1Y3Qgd2xfY2xp
ZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgaW50MzJfdCk7CisgICAgc3RhdGljIHZvaWQgc3Vy
ZmFjZVNldEJ1ZmZlclNjYWxlKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2Uq
LCBpbnQzMl90KTsKKworcHJpdmF0ZToKKyAgICBXYXlsYW5kQ29tcG9zaXRvcigpOworCisgICAg
Ly8gTmVzdGVkIGNvbXBvc2l0b3IgZGlzcGxheSBpbml0aWFsaXphdGlvbgorICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzUmVxdWlyZWRFeHRlbnNpb25zKEVHTERpc3BsYXkpOworICAgIHN0YXRpYyBi
b29sIGluaXRFR0woc3RydWN0IE5lc3RlZERpc3BsYXkqKTsKKyAgICBzdGF0aWMgdm9pZCBzaHV0
ZG93bkVHTChzdHJ1Y3QgTmVzdGVkRGlzcGxheSopOworICAgIHN0YXRpYyBzdHJ1Y3QgTmVzdGVk
RGlzcGxheSogY3JlYXRlTmVzdGVkRGlzcGxheSgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lO
ZXN0ZWREaXNwbGF5KHN0cnVjdCBOZXN0ZWREaXNwbGF5Kik7CisgICAgYm9vbCBpbml0aWFsaXpl
KCk7CisKKyAgICAvLyBXYXlsYW5kIGNhbGxiYWNrcworICAgIHN0YXRpYyB2b2lkIGNvbXBvc2l0
b3JCaW5kKHN0cnVjdCB3bF9jbGllbnQqLCB2b2lkKiwgdWludDMyX3QsIHVpbnQzMl90KTsKKyAg
ICBzdGF0aWMgdm9pZCBkb0Rlc3Ryb3lOZXN0ZWRTdXJmYWNlKHN0cnVjdCBOZXN0ZWRTdXJmYWNl
Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveU5lc3RlZFN1cmZhY2UgKHN0cnVjdCB3bF9yZXNv
dXJjZSopOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lOZXN0ZWRGcmFtZUNhbGxiYWNrIChzdHJ1
Y3Qgd2xfcmVzb3VyY2UqKTsKKworICAgIHN0YXRpYyBXYXlsYW5kQ29tcG9zaXRvciogbV9pbnN0
YW5jZTsKKworICAgIHN0cnVjdCBOZXN0ZWREaXNwbGF5KiBtX2Rpc3BsYXk7CisgICAgc3RydWN0
IE5lc3RlZFN1cmZhY2UqIG1fc3VyZmFjZTsKKyAgICBHdGtXaWRnZXQqIG1fd2lkZ2V0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIFdheWxhbmRD
b21wb3NpdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXls
YW5kRGlzcGxheUV2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
YXlsYW5kRGlzcGxheUV2ZW50U291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43YmE0MWRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1dheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXlsYW5kRGlzcGxh
eUV2ZW50U291cmNlLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19X
SU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisKKyNpbmNs
dWRlIDx3YXlsYW5kLXNlcnZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYg
c3RydWN0IF9XYXlsYW5kR2xpYkV2ZW50U291cmNlIHsKKyAgICBHU291cmNlIHNvdXJjZTsKKyAg
ICBHUG9sbEZEIHBmZDsKKyAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheTsKK30gV2F5bGFu
ZEdsaWJFdmVudFNvdXJjZTsKKworZ2Jvb2xlYW4gV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZTo6
cHJlcGFyZShHU291cmNlKiBiYXNlLCBnaW50KiB0aW1lb3V0KQoreworICAgICp0aW1lb3V0ID0g
LTE7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitnYm9vbGVhbiBXYXlsYW5kRGlzcGxheUV2ZW50
U291cmNlOjpjaGVjayhHU291cmNlKiBiYXNlKQoreworICAgIFdheWxhbmRHbGliRXZlbnRTb3Vy
Y2UqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZEdsaWJFdmVudFNvdXJjZSo+KGJh
c2UpOworICAgIHJldHVybiBzb3VyY2UtPnBmZC5yZXZlbnRzOworfQorCitnYm9vbGVhbiBXYXls
YW5kRGlzcGxheUV2ZW50U291cmNlOjpkaXNwYXRjaChHU291cmNlKiBiYXNlLCBHU291cmNlRnVu
YyBjYWxsYmFjaywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBXYXlsYW5kR2xpYkV2ZW50U291cmNl
KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFdheWxhbmRHbGliRXZlbnRTb3VyY2UqPihiYXNl
KTsKKyAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSA9IHNvdXJjZS0+ZGlzcGxheTsKKyAg
ICBzdHJ1Y3Qgd2xfZXZlbnRfbG9vcCogbG9vcDsKKworICAgIGlmIChzb3VyY2UtPnBmZC5yZXZl
bnRzICYgR19JT19JTikgeworICAgICAgICBsb29wID0gd2xfZGlzcGxheV9nZXRfZXZlbnRfbG9v
cChkaXNwbGF5KTsKKyAgICAgICAgd2xfZXZlbnRfbG9vcF9kaXNwYXRjaChsb29wLCAtMSk7Cisg
ICAgICAgIHdsX2Rpc3BsYXlfZmx1c2hfY2xpZW50cyhkaXNwbGF5KTsKKyAgICAgICAgc291cmNl
LT5wZmQucmV2ZW50cyA9IDA7CisgICAgfQorCisgICAgaWYgKHNvdXJjZS0+cGZkLnJldmVudHMg
JiAoR19JT19FUlIgfCBHX0lPX0hVUCkpCisgICAgICAgIGdfd2FybmluZygiV2F5bGFuZCBEaXNw
bGF5IEV2ZW50IFNvdXJjZTogbG9zdCBjb25uZWN0aW9uIHRvIG5lc3RlZCBXYXlsYW5kIGNvbXBv
c2l0b3IiKTsKKworICAgIHJldHVybiBUUlVFOworfQorCit2b2lkIFdheWxhbmREaXNwbGF5RXZl
bnRTb3VyY2U6OmZpbmFsaXplKEdTb3VyY2UqIHNvdXJjZSkKK3sKK30KKworc3RhdGljIEdTb3Vy
Y2VGdW5jcyB3YXlsYW5kR2xpYlNvdXJjZUZ1bmNzID0geworICAgIFdheWxhbmREaXNwbGF5RXZl
bnRTb3VyY2U6OnByZXBhcmUsCisgICAgV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZTo6Y2hlY2ss
CisgICAgV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZTo6ZGlzcGF0Y2gsCisgICAgV2F5bGFuZERp
c3BsYXlFdmVudFNvdXJjZTo6ZmluYWxpemUsCisgICAgMCwKKyAgICAwCit9OworCitHU291cmNl
KiBXYXlsYW5kRGlzcGxheUV2ZW50U291cmNlOjpjcmVhdGVEaXNwbGF5RXZlbnRTb3VyY2Uoc3Ry
dWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCit7CisgICAgR1NvdXJjZSogc291cmNlID0gZ19zb3Vy
Y2VfbmV3KCZ3YXlsYW5kR2xpYlNvdXJjZUZ1bmNzLCBzaXplb2YoV2F5bGFuZEdsaWJFdmVudFNv
dXJjZSkpOworICAgIGdjaGFyKiBuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCJOZXN0ZWQgV2F5bGFu
ZCBjb21wb3NpdG9yIGRpc3BsYXkgZXZlbnQgc291cmNlIik7CisgICAgZ19zb3VyY2Vfc2V0X25h
bWUoc291cmNlLCBuYW1lKTsKKyAgICBnX2ZyZWUobmFtZSk7CisKKyAgICBXYXlsYW5kR2xpYkV2
ZW50U291cmNlKiB3bFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZEdsaWJFdmVudFNv
dXJjZSo+KHNvdXJjZSk7CisgICAgd2xTb3VyY2UtPmRpc3BsYXkgPSBkaXNwbGF5OworICAgIHN0
cnVjdCB3bF9ldmVudF9sb29wKiBsb29wID0gd2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChkaXNw
bGF5KTsKKyAgICB3bFNvdXJjZS0+cGZkLmZkID0gd2xfZXZlbnRfbG9vcF9nZXRfZmQobG9vcCk7
CisgICAgd2xTb3VyY2UtPnBmZC5ldmVudHMgPSBHX0lPX0lOIHwgR19JT19FUlIgfCBHX0lPX0hV
UDsKKyAgICBnX3NvdXJjZV9hZGRfcG9sbChzb3VyY2UsICZ3bFNvdXJjZS0+cGZkKTsKKworICAg
IGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UsIEdES19QUklPUklUWV9FVkVOVFMpOworICAg
IGdfc291cmNlX3NldF9jYW5fcmVjdXJzZShzb3VyY2UsIFRSVUUpOworICAgIGdfc291cmNlX2F0
dGFjaChzb3VyY2UsIE5VTEwpOworCisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxh
eUV2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3Bs
YXlFdmVudFNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MDdi
MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFu
ZERpc3BsYXlFdmVudFNvdXJjZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiAgV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZV9oCisjZGVmaW5lICBXYXlsYW5kRGlzcGxh
eUV2ZW50U291cmNlX2gKKworI2luY2x1ZGUgPGdkay9nZGsuaD4KKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtf
QVBJX1ZFUlNJT05fMikKKworI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZQoreworcHVibGlj
OgorICAgIHN0YXRpYyBHU291cmNlKiBjcmVhdGVEaXNwbGF5RXZlbnRTb3VyY2Uoc3RydWN0IHds
X2Rpc3BsYXkqIGRpc3BsYXkpOworCisgICAgLy8gR1NvdXJjZSBpbnRlcmZhY2UKKyAgICBzdGF0
aWMgdm9pZCBmaW5hbGl6ZShHU291cmNlKiBzb3VyY2UpOworICAgIHN0YXRpYyBnYm9vbGVhbiBk
aXNwYXRjaChHU291cmNlKiBiYXNlLCBHU291cmNlRnVuYyBjYWxsYmFjaywgZ3BvaW50ZXIgZGF0
YSk7CisgICAgc3RhdGljIGdib29sZWFuIGNoZWNrKEdTb3VyY2UqIGJhc2UpOworICAgIHN0YXRp
YyBnYm9vbGVhbiBwcmVwYXJlKEdTb3VyY2UqIGJhc2UsIGdpbnQqIHRpbWVvdXQpOworCitwcml2
YXRlOgorICAgIFdheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UoKTsKK307CisKK30KKworI2VuZGlm
CisKKyNlbmRpZiAvLyBXYXlsYW5kRGlzcGxheUV2ZW50U291cmNlX2gKLS0gCjEuOC4zLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222096</attachid>
            <date>2014-01-24 06:15:25 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-WAYLAND-Added-WaylandDisplay-and-WaylandSurface.patch</filename>
            <type>text/plain</type>
            <size>12862</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSBiNWFhYmE3Y2U4ZDA1YjA5MDVlMjExMDYwY2FhZTA2NmNkYmE4OTFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDIyIEphbiAyMDE0IDEyOjUwOjMwICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
Mi8xMF0gW1dBWUxBTkRdIEFkZGVkIFdheWxhbmREaXNwbGF5IGFuZCBXYXlsYW5kU3VyZmFjZQoK
LS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXkuY3BwIHwgMTAz
ICsrKysrKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
YXlsYW5kRGlzcGxheS5oICAgfCAgNzEgKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9XYXlsYW5kU3VyZmFjZS5jcHAgfCAgNzQgKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuaCAgIHwgIDY4ICsr
KysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKykKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXku
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxh
bmREaXNwbGF5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2F5bGFuZFN1cmZhY2UuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1dheWxhbmRTdXJmYWNlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1dheWxhbmREaXNwbGF5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43MTg0NmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dheWxhbmREaXNwbGF5LmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2F5bGFuZERpc3BsYXkuaCIKKworI2lmIFVT
RShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlM
QU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikKKworI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKworI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgor
I2luY2x1ZGUgPHN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV2F5bGFu
ZERpc3BsYXk6OnJlZ2lzdHJ5SGFuZGxlR2xvYmFsKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9yZWdp
c3RyeSAqcmVnaXN0cnksCisgICAgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciAqaW50ZXJmYWNl
LCB1aW50MzJfdCB2ZXJzaW9uKQoreworICAgIFdheWxhbmREaXNwbGF5KiBkaXNwbGF5ID0gc3Rh
dGljX2Nhc3Q8V2F5bGFuZERpc3BsYXkqPihkYXRhKTsKKyAgICBpZiAoc3RyY21wKGludGVyZmFj
ZSwgIndsX2NvbXBvc2l0b3IiKSA9PSAwKQorICAgICAgICBkaXNwbGF5LT5tX2NvbXBvc2l0b3Ig
PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RydWN0IHdsX2NvbXBvc2l0b3IqPih3bF9yZWdp
c3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEpKTsK
K30KKwordm9pZCBXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlIYW5kbGVHbG9iYWxSZW1vdmUodm9p
ZCAqZGF0YSwgc3RydWN0IHdsX3JlZ2lzdHJ5ICpyZWdpc3RyeSwgdWludDMyX3QgbmFtZSkKK3sK
KyAgICAvLyBGSVhNRTogaWYgdGhpcyBjYW4gaGFwcGVuIHdpdGhvdXQgdGhlIFVJIFByb2Nlc3Mg
Z2V0dGluZyBzaHV0IGRvd24gd2Ugc2hvdWxkIHByb2JhYmx5CisgICAgLy8gZGVzdHJveSBvdXIg
Y2FjaGVkIGRpc3BsYXkgaW5zdGFuY2UKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdp
c3RyeV9saXN0ZW5lciByZWdpc3RyeUxpc3RlbmVyID0geworICAgIFdheWxhbmREaXNwbGF5Ojpy
ZWdpc3RyeUhhbmRsZUdsb2JhbCwKKyAgICBXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlIYW5kbGVH
bG9iYWxSZW1vdmUKK307CisKK1dheWxhbmREaXNwbGF5KiBXYXlsYW5kRGlzcGxheTo6bV9pbnN0
YW5jZSA9IDA7CisKK1dheWxhbmREaXNwbGF5KiBXYXlsYW5kRGlzcGxheTo6aW5zdGFuY2UoKQor
eworICAgIGlmIChtX2luc3RhbmNlKQorICAgICAgICByZXR1cm4gbV9pbnN0YW5jZTsKKworICAg
IHN0cnVjdCB3bF9kaXNwbGF5KiB3bERpc3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QoIndlYmtp
dGd0ay13YXlsYW5kLWNvbXBvc2l0b3Itc29ja2V0Iik7CisgICAgaWYgKCF3bERpc3BsYXkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9pbnN0YW5jZSA9IG5ldyBXYXlsYW5kRGlz
cGxheSh3bERpc3BsYXkpOworICAgIHJldHVybiBtX2luc3RhbmNlOworfQorCitXYXlsYW5kRGlz
cGxheTo6V2F5bGFuZERpc3BsYXkoc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheSkKKyAgICA6
IG1fZGlzcGxheSh3bERpc3BsYXkpCisgICAgLCBtX3JlZ2lzdHJ5KDApCisgICAgLCBtX2NvbXBv
c2l0b3IoMCkKK3sKKyAgICBtX3JlZ2lzdHJ5ID0gd2xfZGlzcGxheV9nZXRfcmVnaXN0cnkobV9k
aXNwbGF5KTsKKyAgICB3bF9yZWdpc3RyeV9hZGRfbGlzdGVuZXIobV9yZWdpc3RyeSwgJnJlZ2lz
dHJ5TGlzdGVuZXIsIHRoaXMpOworICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1fZGlzcGxheSk7
Cit9CisKK1Bhc3NPd25QdHI8V2F5bGFuZFN1cmZhY2U+IFdheWxhbmREaXNwbGF5OjpjcmVhdGVT
dXJmYWNlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSAq
c3VyZmFjZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9yKTsKKyAg
ICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZSA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHN1cmZh
Y2UsIHdpZHRoLCBoZWlnaHQpOworICAgIE93blB0cjxXYXlsYW5kU3VyZmFjZT4gd2xTdXJmYWNl
ID0gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZShzdXJmYWNlLCBuYXRpdmUpOworICAgIHJldHVybiB3
bFN1cmZhY2UucmVsZWFzZSgpOworfQorCit2b2lkIFdheWxhbmREaXNwbGF5OjpkZXN0cm95U3Vy
ZmFjZShXYXlsYW5kU3VyZmFjZSogc3VyZmFjZSkKK3sKKyAgICBpZiAoc3VyZmFjZSkgeworICAg
ICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3koc3VyZmFjZS0+bmF0aXZlV2luZG93SGFuZGxlKCkp
OworICAgICAgICB3bF9zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZS0+c3VyZmFjZSgpKTsKKyAgICB9
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2F5bGFuZERpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5k
RGlzcGxheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTIwNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3Bs
YXkuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgIFdheWxhbmREaXNw
bGF5X2gKKyNkZWZpbmUgIFdheWxhbmREaXNwbGF5X2gKKworI2luY2x1ZGUgPGdkay9nZGsuaD4K
KworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRP
V0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikKKworI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKKyNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgorCisjaW5j
bHVkZSAiV2F5bGFuZFN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBX
YXlsYW5kRGlzcGxheQoreworcHVibGljOgorICAgIHN0YXRpYyBXYXlsYW5kRGlzcGxheSogaW5z
dGFuY2UoKTsKKworICAgIC8vIFdheWxhbmQgcmVnaXN0cnkgbGlzdGVuZXIgaW50ZXJmYWNlIGNh
bGxiYWNrcworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdHJ5SGFuZGxlR2xvYmFsKHZvaWQqLCBzdHJ1
Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCwgY29uc3QgY2hhciosIHVpbnQzMl90KTsKKyAgICBz
dGF0aWMgdm9pZCByZWdpc3RyeUhhbmRsZUdsb2JhbFJlbW92ZSh2b2lkKiwgc3RydWN0IHdsX3Jl
Z2lzdHJ5KiwgdWludDMyX3QpOworCisgICAgLy8gRGlzcGxheSBpbnRlcmZhY2UKKyAgICBQYXNz
T3duUHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKGludCwgaW50KTsKKyAgICB2b2lk
IGRlc3Ryb3lTdXJmYWNlKFdheWxhbmRTdXJmYWNlKik7CisgICAgc3RydWN0IHdsX2Rpc3BsYXkq
IG5hdGl2ZURpc3BsYXkoKSB7IHJldHVybiBtX2Rpc3BsYXk7IH0KKworcHJpdmF0ZToKKyAgICBX
YXlsYW5kRGlzcGxheShzdHJ1Y3Qgd2xfZGlzcGxheSopOworICAgIH5XYXlsYW5kRGlzcGxheSgp
OworCisgICAgc3RhdGljIFdheWxhbmREaXNwbGF5KiBtX2luc3RhbmNlOworCisgICAgc3RydWN0
IHdsX2Rpc3BsYXkqIG1fZGlzcGxheTsKKyAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkqIG1fcmVnaXN0
cnk7CisgICAgc3RydWN0IHdsX2NvbXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKK307CisKK30KKwor
I2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dheWxhbmRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5k
U3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThjMWU2Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kU3Vy
ZmFjZS5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2Fs
aWEgUy5MLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2F5bGFuZFN1cmZhY2UuaCIKKworI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5l
ZChHVEtfQVBJX1ZFUlNJT05fMikKKworI2luY2x1ZGUgIldheWxhbmREaXNwbGF5LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBXYXlsYW5kU3VyZmFjZTo6ZnJhbWVDYWxsYmFjayh2
b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lKQor
eworICAgIC8vIEZJWE1FOiBMb29rcyBsaWtlIHRoaXMgaXMgbmV2ZXIgY2FsbGVkLiBXaHk/Cisg
ICAgaWYgKGNhbGxiYWNrKQorICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsK
K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBmcmFtZUxpc3Rl
bmVyID0geworICAgIFdheWxhbmRTdXJmYWNlOjpmcmFtZUNhbGxiYWNrCit9OworCit2b2lkIFdh
eWxhbmRTdXJmYWNlOjpyZXF1ZXN0RnJhbWUoKQoreworICAgIHN0cnVjdCB3bF9jYWxsYmFjayog
d2xDYWxsYmFjayA9IHdsX3N1cmZhY2VfZnJhbWUobV9zdXJmYWNlKTsKKyAgICB3bF9jYWxsYmFj
a19hZGRfbGlzdGVuZXIod2xDYWxsYmFjaywgJmZyYW1lTGlzdGVuZXIsIHRoaXMpOworfQorCitQ
YXNzT3duUHRyPFdheWxhbmRTdXJmYWNlPiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlKHN0cnVjdCB3
bF9zdXJmYWNlKiBzdXJmYWNlLCBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFdheWxhbmRTdXJmYWNlKHN1cmZhY2UsIG5hdGl2ZSkpOworfQor
CitXYXlsYW5kU3VyZmFjZTo6V2F5bGFuZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqIHN1cmZh
Y2UsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlKQorICAgIDogbV9zdXJmYWNlKHN1cmZhY2Up
CisgICAgLCBtX25hdGl2ZShuYXRpdmUpCit7CisKK30KKworV2F5bGFuZFN1cmZhY2U6On5XYXls
YW5kU3VyZmFjZSgpCit7CisgICAgV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkgPSBXYXlsYW5kRGlz
cGxheTo6aW5zdGFuY2UoKTsKKyAgICBpZiAoZGlzcGxheSkKKyAgICAgICAgZGlzcGxheS0+ZGVz
dHJveVN1cmZhY2UodGhpcyk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9XYXlsYW5kU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjJiMjJkNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvV2F5bGFuZFN1cmZhY2UuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgIFdheWxhbmRTdXJmYWNlX2gKKyNkZWZpbmUgIFdheWxhbmRTdXJmYWNlX2gKKworI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KKworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJ
T05fMikKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKKyNpbmNsdWRlIDx3YXlsYW5k
LWNsaWVudC5oPgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdheWxhbmRTdXJmYWNlCit7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2F5bGFuZFN1cmZhY2U+IGNyZWF0ZShzdHJ1Y3Qg
d2xfc3VyZmFjZSosIEVHTE5hdGl2ZVdpbmRvd1R5cGUpOworICAgIHZpcnR1YWwgfldheWxhbmRT
dXJmYWNlKCk7CisKKyAgICAvLyBXYXlsYW5kIHN1cmZhY2UgaW50ZXJmYWNlIGNhbGxiYWNrcwor
ICAgIHN0YXRpYyB2b2lkIGZyYW1lQ2FsbGJhY2sodm9pZCosIHN0cnVjdCB3bF9jYWxsYmFjayos
IHVpbnQzMl90KTsKKworICAgIC8vIFN1cmZhY2UgaW50ZXJmYWNlCisgICAgRUdMTmF0aXZlV2lu
ZG93VHlwZSBuYXRpdmVXaW5kb3dIYW5kbGUoKSB7IHJldHVybiBtX25hdGl2ZTsgfQorICAgIHN0
cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlKCkgeyByZXR1cm4gbV9zdXJmYWNlOyB9CisgICAgdm9p
ZCByZXF1ZXN0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBXYXlsYW5kU3VyZmFjZShzdHJ1Y3Qg
d2xfc3VyZmFjZSosIEVHTE5hdGl2ZVdpbmRvd1R5cGUpOworCisgICAgc3RydWN0IHdsX3N1cmZh
Y2UqIG1fc3VyZmFjZTsKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG1fbmF0aXZlOworfTsKKwor
fQorCisjZW5kaWYKKworI2VuZGlmCisKLS0gCjEuOC4zLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222097</attachid>
            <date>2014-01-24 06:15:53 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0003-WAYLAND-Added-wayland-files-to-the-build.patch</filename>
            <type>text/plain</type>
            <size>4395</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSAzZTg3ZTIxMTEzMWU0OGE3M2IwMTEyYjU4ZGJiYzlmNjMwZDFlOTNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDIyIEphbiAyMDE0IDEzOjQxOjQ4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
My8xMF0gW1dBWUxBTkRdIEFkZGVkIHdheWxhbmQgZmlsZXMgdG8gdGhlIGJ1aWxkCgotLS0KIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICB8ICAxICsKIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gICB8IDEwICsrKysrKysrKy0KIFNvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtICAgICB8ICAyICsrCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bSAgICAgICAgfCAgMiArKwogU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00IHwg
IDcgKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyMWEwOGZjLi4zZDk0ZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtNjE4LDYgKzYxOCw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1Mg
PSBcCiAJJChHTElCX0NGTEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NG
TEFHUykgXAorCSQoR1RLX1dBWUxBTkRfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZMQUdTKSBc
CiAJJChMSUJTT1VQX0NGTEFHUykgXAogCSQoTElCWE1MX0NGTEFHUykgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggYzlhMmRmYS4uMDJkYjBkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC02Mjg3LDcgKzYyODcsMTUgQEAgcGxhdGZvcm1ndGtfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheUV2ZW50c291cmNlLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuaAogZW5kaWYgIyBFTkQgVVNFX09QRU5HTAogaWYg
VVNFX0VHTAogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0K
aW5kZXggNGZmNDY1Ni4uZTFjNjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTYy
LDYgKzYyLDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUEYKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJ
JChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCisJJChHVEtfV0FZTEFORF9D
RkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJJChMSUJYTUxfQ0ZMQUdTKSBcCiAJJChT
UUxJVEUzX0NGTEFHUykgXApAQCAtMTE2LDYgKzExNyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lU
R1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9M
SUJBCiAJJChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCiAJJChHVEtfTElCUykg
XAorCSQoR1RLX1dBWUxBTkRfTElCUykgXAogCSQoSlBFR19MSUJTKSBcCiAJJChMSUJTRUNSRVRf
TElCUykgXAogCSQoTElCU09VUF9MSUJTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE4MTc3
YzMuLmQxNTY4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDQsNiArMjA0LDcgQEAgbGli
d2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQF9sYV9DUFAKIAkkKEdFT0NMVUVfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFH
UykgXAogCSQoR1RLX0NGTEFHUykgXAorCSQoR1RLX1dBWUxBTkRfQ0ZMQUdTKSBcCiAJJChHVEtf
VU5JWF9QUklOVElOR19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJJChVTklDT0RF
X0NGTEFHUykgXApAQCAtMjc0LDYgKzI3NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJ
JChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAorCSQo
R1RLX1dBWUxBTkRfTElCUykgXAogCSQoR1RLX1VOSVhfUFJJTlRJTkdfTElCUykgXAogCSQoSlBF
R19MSUJTKSBcCiAJJChMSUJTRUNSRVRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90
b29scy9GaW5kRGVwZW5kZW5jaWVzLm00IGIvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5j
aWVzLm00CmluZGV4IGVmYzJkYjMuLjczNDdjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9v
bHMvRmluZERlcGVuZGVuY2llcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRl
bmNpZXMubTQKQEAgLTIwNiw2ICsyMDYsOSBAQCBpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRfdGFy
Z2V0IiAhPSAibm8iOyB0aGVuCiAgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dUS19XQVlMQU5EXSwg
WwogICAgICAgICBndGsrLXdheWxhbmQtJEdUS19BUElfVkVSU0lPTiA9ICRHVEtfQUNUVUFMX1ZF
UlNJT04KICAgICAgICAgZ3RrKy13YXlsYW5kLSRHVEtfQVBJX1ZFUlNJT04gPj0gZ3RrM193YXls
YW5kX3JlcXVpcmVkX3ZlcnNpb24KKyAgICAgICAgd2F5bGFuZC1jbGllbnQgPj0gMS4zLjkKKyAg
ICAgICAgd2F5bGFuZC1zZXJ2ZXIgPj0gMS4zLjkKKyAgICAgICAgd2F5bGFuZC1lZ2wgPj0gMTAu
MS4wCiAgICAgXSwgW2VuYWJsZV93YXlsYW5kX3RhcmdldD15ZXNdLCBbCiAgICAgICAgIGlmIHRl
c3QgIiRlbmFibGVfd2F5bGFuZF90YXJnZXQiID0gInllcyI7IHRoZW4KICAgICAgICAgICAgIEFD
X01TR19FUlJPUihbR1RLKyBXYXlsYW5kIGRlcGVuZGVuY3kgKGd0aystd2F5bGFuZC0kR1RLX0FQ
SV9WRVJTSU9OID49IGd0azNfd2F5bGFuZF9yZXF1aXJlZF92ZXJzaW9uKSBub3QgZm91bmQuXSkK
QEAgLTIxNiw2ICsyMTksMTAgQEAgaWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3RhcmdldCIgIT0g
Im5vIjsgdGhlbgogICAgIF0pCiBmaQogCisjIEBGSVhNRTogbm90IHN1cmUgaWYgdGhpcyBpcyBu
ZWNlc3NhcnkKK0FDX1NVQlNUKEdUS19XQVlMQU5EX0NGTEFHUykKK0FDX1NVQlNUKEdUS19XQVlM
QU5EX0xJQlMpCisKIEFDX0NIRUNLX0hFQURFUlMoW0dML2dseC5oXSwgW2hhdmVfZ2x4PSJ5ZXMi
XSwgW2hhdmVfZ2x4PSJubyJdKQogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBH
TFggc3VwcG9ydF0pCiBpZiB0ZXN0ICIkZW5hYmxlX2dseCIgIT0gIm5vIjsgdGhlbgotLSAKMS44
LjMuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222098</attachid>
            <date>2014-01-24 06:16:17 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0004-WAYLAND-On-Wayland-platforms-have-the-WebView-widget.patch</filename>
            <type>text/plain</type>
            <size>7630</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSBlM2FhMDk3YjYwMzBmMDVlYjhjMDg2ZTRjNTczNmQwNDM0YWUwZDNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDIyIEphbiAyMDE0IDEzOjQ1OjA5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
NC8xMF0gW1dBWUxBTkRdIE9uIFdheWxhbmQgcGxhdGZvcm1zLCBoYXZlIHRoZSBXZWJWaWV3IHdp
ZGdldAogdXNlIHRoZSBuZXN0ZWQgd2F5bGFuZCBjb21wb3NpdG9yIHRvIGdhaW4gYWNjZXNzIHRv
IHRoZSByZXN1bHRzIG9mIHRoZQogYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIHRoZSB3aWRn
ZXQKCi0tLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCAgICAg
ICAgfCA5OSArKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgODMgaW5zZXJ0
aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDI1MWExZmEuLjlmZTk0
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKQEAgLTU3LDkgKzU3LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEhlbHBlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lv
bi5oPgogI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgog
I2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5E
CisjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KKyNlbmRpZgogI2lmZGVmIEdES19XSU5ET1dJ
TkdfWDExCiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgpAQCAtNzIsMTYgKzc1LDIxIEBA
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oPgogI2VuZGlmCisj
aWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5H
X1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorI2luY2x1ZGUgPFdlYkNv
cmUvV2F5bGFuZENvbXBvc2l0b3IuaD4KKyNlbmRpZgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdHlwZWRlZiBIYXNoTWFwPEd0
a1dpZGdldCosIEludFJlY3Q+IFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcDsKIAotI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQo
R0RLX1dJTkRPV0lOR19YMTEpCiB2b2lkIHJlZGlyZWN0ZWRXaW5kb3dEYW1hZ2VkQ2FsbGJhY2so
dm9pZCogZGF0YSk7CiAjZW5kaWYKIApAQCAtMTMwLDEyICsxMzgsMzcgQEAgc3RydWN0IF9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lO
RE9XSU5HX1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorICAgIFdheWxh
bmRDb21wb3NpdG9yKiB3YXlsYW5kQ29tcG9zaXRvcjsKKyNlbmRpZgorI2lmIGRlZmluZWQoR0RL
X1dJTkRPV0lOR19YMTEpCiAgICAgT3duUHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBy
ZWRpcmVjdGVkV2luZG93OwogI2VuZGlmCisjZW5kaWYKK307CisKK2VudW0gRGlzcGxheVR5cGUg
eworICBESVNQTEFZX1RZUEVfTk9ORSA9IDAsCisgIERJU1BMQVlfVFlQRV9YMTEsCisgIERJU1BM
QVlfVFlQRV9XQVlMQU5ECiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jh
c2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCiAKK3N0YXRpYyBE
aXNwbGF5VHlwZSBnZXREaXNwbGF5VHlwZSgpCit7CisgICAgR2RrRGlzcGxheSogZGlzcGxheSA9
IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5h
Z2VyX2dldCgpKTsKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyAgICBpZiAo
R0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSkKKyAgICAgICAgcmV0dXJuIERJU1BMQVlf
VFlQRV9XQVlMQU5EOworI2VuZGlmCisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKKyAg
ICBpZiAoR0RLX0lTX1gxMV9ESVNQTEFZKGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gRElTUExB
WV9UWVBFX1gxMTsKKyNlbmRpZgorICAgIHJldHVybiBESVNQTEFZX1RZUEVfTk9ORTsKK30KKwog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZShXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CkBAIC0zOTQsMTMgKzQyNywyMCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShvYmplY3Qp
LT5wcml2OwogICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHZp
ZXdXaWRnZXQpOwogICAgIHByaXYtPmRyYWdBbmREcm9wSGVscGVyLnNldFdpZGdldCh2aWV3V2lk
Z2V0KTsKLQotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1gxMSkKLSAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9n
ZXRfZGVmYXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOwotICAgIGlmIChH
REtfSVNfWDExX0RJU1BMQVkoZGlzcGxheSkpIHsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CisgICAgRGlzcGxheVR5cGUgZGlzcGxheVR5cGUgPSBnZXREaXNwbGF5VHlwZSgpOworICAgIGlm
IChkaXNwbGF5VHlwZSA9PSBESVNQTEFZX1RZUEVfV0FZTEFORCkgeworI2lmIFVTRShFR0wpICYm
IFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAh
ZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikKKyAgICAgICAgcHJpdi0+d2F5bGFuZENvbXBvc2l0
b3IgPSBXYXlsYW5kQ29tcG9zaXRvcjo6aW5zdGFuY2UoKTsKKyAgICAgICAgaWYgKHByaXYtPndh
eWxhbmRDb21wb3NpdG9yKQorICAgICAgICAgICAgcHJpdi0+d2F5bGFuZENvbXBvc2l0b3ItPmFk
ZFdpZGdldCh2aWV3V2lkZ2V0KTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUg
PSBESVNQTEFZX1RZUEVfWDExKSB7CisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKICAg
ICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdyA9IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpjcmVhdGUoSW50U2l6ZSgxLCAxKSwgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OkRvTm90
Q3JlYXRlR0xDb250ZXh0KTsKICAgICAgICAgaWYgKHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCiAg
ICAgICAgICAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5zZXREYW1hZ2VOb3RpZnlDYWxsYmFj
ayhyZWRpcmVjdGVkV2luZG93RGFtYWdlZENhbGxiYWNrLCBvYmplY3QpOworI2VuZGlmCiAgICAg
fQogI2VuZGlmCiAKQEAgLTQxNSwxNCArNDU1LDM1IEBAIHN0YXRpYyBib29sIHdlYmtpdFdlYlZp
ZXdSZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSoK
IAogICAgIC8vIFRvIGF2b2lkIGZsYXNoZXMgd2hlbiBpbml0aWFsaXppbmcgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgZm9yIHRoZSBmaXJzdAogICAgIC8vIHRpbWUsIHdlIHdhaXQgdW50aWwgd2Ug
a25vdyB0aGVyZSdzIGEgZnJhbWUgcmVhZHkgYmVmb3JlIHJlbmRlcmluZy4KKyAgICBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UgPSBOVUxMOwogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmICghcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIERpc3BsYXlUeXBlIGRpc3BsYXlUeXBlID0g
Z2V0RGlzcGxheVR5cGUoKTsKKyAgICBpZiAoZGlzcGxheVR5cGUgPT0gRElTUExBWV9UWVBFX1dB
WUxBTkQpIHsKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisgICAg
ICAgIGlmICghcHJpdi0+d2F5bGFuZENvbXBvc2l0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHN1cmZhY2UgPSBwcml2LT53YXlsYW5kQ29tcG9zaXRvci0+Y2Fpcm9TdXJm
YWNlRm9yV2lkZ2V0KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKKyNlbmRpZgorICAgIH0gZWxz
ZSBpZiAoZGlzcGxheVR5cGUgPT0gRElTUExBWV9UWVBFX1gxMSkgeworI2lmIGRlZmluZWQoR0RL
X1dJTkRPV0lOR19YMTEpCisgICAgICAgIGlmICghcHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3VyZmFjZSA9IHByaXYtPnJlZGlyZWN0
ZWRXaW5kb3ctPmNhaXJvU3VyZmFjZUZvcldpZGdldChHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7
CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoc3VyZmFjZSkgeworICAgICAgICBjYWlyb19yZWN0
YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlw
UmVjdC0+aGVpZ2h0KTsKKyAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJm
YWNlLCAwLCAwKTsKKyAgICAgICAgY2Fpcm9fZmlsbChjcik7CisgICAgfQorCisjaWYgVVNFKEVH
TCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQp
ICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorICAgIGlmIChkaXNwbGF5VHlwZSA9PSBE
SVNQTEFZX1RZUEVfV0FZTEFORCkgeworICAgICAgICBwcml2LT53YXlsYW5kQ29tcG9zaXRvci0+
bmV4dEZyYW1lKCk7CisgICAgfQorI2VuZGlmCiAKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNs
aXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0
KTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBwcml2LT5yZWRpcmVjdGVkV2luZG93
LT5jYWlyb1N1cmZhY2VGb3JXaWRnZXQoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwotICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgY2Fpcm9fZmls
bChjcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTUwNSw3ICs1NjYsNyBAQCBz
dGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogICAgICAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUo
cHJpdi0+YXV0aGVudGljYXRpb25EaWFsb2csICZjaGlsZEFsbG9jYXRpb24pOwogICAgIH0KIAot
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAgICAgaWYgKHNpemVDaGFuZ2VkICYmIHdlYlZp
ZXdCYXNlLT5wcml2LT5yZWRpcmVjdGVkV2luZG93KQogICAgICAgICB3ZWJWaWV3QmFzZS0+cHJp
di0+cmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKHZpZXdSZWN0LnNpemUoKSk7CiAjZW5kaWYKQEAg
LTkyMCw5ICs5ODEsMTUgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZVByZWZlcmVuY2Vz
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQogICAgIGlm
IChwcml2LT5yZWRpcmVjdGVkV2luZG93KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZ
TEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisgICAgaWYgKHByaXYtPndheWxh
bmRDb21wb3NpdG9yKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKyNlbmRpZgogCiAgICAgcHJp
di0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CiB9CkBAIC05MzQsNyArMTAwMSw3IEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3QmFzZSwgV2ViQ29uCiAgICAgcHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2Vi
UGFnZSgqcHJpdi0+cGFnZUNsaWVudCwgcGFnZUdyb3VwKTsKICAgICBwcml2LT5wYWdlUHJveHkt
PmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQogICAg
IGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93KQogICAgICAgICBwcml2LT5wYWdlUHJveHktPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZChwcml2LT5yZWRpcmVjdGVkV2luZG93LT53
aW5kb3dJZCgpKTsKICNlbmRpZgpAQCAtMTA3MCw3ICsxMTM3LDcgQEAgR2RrRXZlbnQqIHdlYmtp
dFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtp
dFdlYlZpZXcKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmNvbnRleHRNZW51
RXZlbnQucmVsZWFzZSgpOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKIHZvaWQg
cmVkaXJlY3RlZFdpbmRvd0RhbWFnZWRDYWxsYmFjayh2b2lkKiBkYXRhKQogewogICAgIGd0a193
aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VUKGRhdGEpKTsKLS0gCjEuOC4zLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222099</attachid>
            <date>2014-01-24 06:16:45 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0005-WAYLAND-Enable-GLContext-for-Wayland-platform.-There.patch</filename>
            <type>text/plain</type>
            <size>7289</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSAwMzI1MGYxNDY3OWEzYzljNjBjODczNDU2NzJmYWQ3M2UwZTJkMzZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDIzIEphbiAyMDE0IDExOjAyOjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
NS8xMF0gW1dBWUxBTkRdIEVuYWJsZSBHTENvbnRleHQgZm9yIFdheWxhbmQgcGxhdGZvcm0uIFRo
ZXJlCiBpcyBhIHR5cGUgY2xhc2ggYmV0d2VlbiBFR0wgcGxhdGZvcm1zIHdoZW4gZW5hYmxpbmcg
WDExIGFuZCBXYXlsYW5kIHBsYXRmb3Jtcwogc28gZm9yIG5vdywgaWYgYm90aCBwbGF0Zm9ybXMg
YXJlIGVuYWJsZWQsIHdlIGZvcmNlIEdMWCBmb3IgWDExIHRvIGF2b2lkIHRoZQogRUdMIHBhdGgg
KHNpbmNlIFdheWxhbmQgd291bGQgYmUgdGhlIHRhcmdldCBFR0wgcGxhdGZvcm0pCgotLS0KIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgICAgIHwgMjcgKysr
KysrKystLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmggICAgICAgfCAgOCArKysrKysrCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcCB8ICA5ICsrKysrLS0tCiAuLi4vcGxhdGZvcm0vZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCAgICB8IDEwICsrKysrKysrCiAuLi4vV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCAgICB8IDE1ICsrKysrKysrKysr
KwogNSBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCAw
ZWRlN2ZmLi5iM2NlMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dMQ29udGV4dC5jcHAKQEAgLTM1LDEzICszNSw5IEBACiAjaW5jbHVkZSA8WDExL1hsaWIuaD4K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSNpZmRlZiBHREtfV0lORE9XSU5HX1dBWUxBTkQKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBQTEFURk9STShHVEspICYmICFkZWZpbmVk
KEdUS19BUElfVkVSU0lPTl8yKQogI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+Ci0jZW5kaWYK
LSNlbmRpZgorI2luY2x1ZGUgIldheWxhbmREaXNwbGF5LmgiCiAjZW5kaWYKIAogdXNpbmcgV1RG
OjpUaHJlYWRTcGVjaWZpYzsKQEAgLTc0LDYgKzcwLDEzIEBAIEdMQ29udGV4dCogR0xDb250ZXh0
OjpzaGFyaW5nQ29udGV4dCgpCiAgICAgcmV0dXJuIHNoYXJpbmcuZ2V0KCk7CiB9CiAKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBQTEFURk9STShHVEspICYmICFkZWZpbmVk
KEdUS19BUElfVkVSU0lPTl8yKQorc3RydWN0IHdsX2Rpc3BsYXkqIEdMQ29udGV4dDo6c2hhcmVk
V2F5bGFuZERpc3BsYXkoKQoreworICAgIHJldHVybiBXYXlsYW5kRGlzcGxheTo6aW5zdGFuY2Uo
KS0+bmF0aXZlRGlzcGxheSgpOworfQorI2VuZGlmCisKICNpZiBQTEFURk9STShYMTEpCiAvLyBX
ZSBkbyBub3Qgd2FudCB0byBjYWxsIGdsWE1ha2VDb250ZXh0Q3VycmVudCB1c2luZyBkaWZmZXJl
bnQgRGlzcGxheSBwb2ludGVycywKIC8vIGJlY2F1c2UgaXQgbWlnaHQgbGVhZCB0byBjcmFzaGVz
IGluIHNvbWUgZHJpdmVycyAoZmdscngpLiBXZSB1c2UgYSBzaGFyZWQgZGlzcGxheQpAQCAtMTQ2
LDE4ICsxNDksOCBAQCB2b2lkIEdMQ29udGV4dDo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0
KCkKIAogUGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldp
bmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdD
b250ZXh0KQogewotI2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dB
WUxBTkQpICYmIFVTRShFR0wpCi0gICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNwbGF5
X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKTsK
LQotICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKSB7Ci0gICAgICAgIGlm
IChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250
ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQotICAgICAgICAgICAgcmV0dXJuIGVn
bENvbnRleHQucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0jZW5k
aWYKLQogI2lmICFQTEFURk9STShOSVgpCi0jaWYgVVNFKEdMWCkKKyNpZiBVU0UoR0xYKSAmJiAh
UExBVEZPUk0oV0FZTEFORCkKICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9
IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0
KSkKICAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IDRlOWQzOWUuLjk3
Y2MzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5o
CkBAIC0yOCw2ICsyOCwxMCBAQAogI2lmIFVTRShFR0wpICYmICFQTEFURk9STShHVEspICYmICFQ
TEFURk9STShOSVgpCiAjaW5jbHVkZSAiZWdscGxhdGZvcm0uaCIKIHR5cGVkZWYgRUdMTmF0aXZl
V2luZG93VHlwZSBHTE5hdGl2ZVdpbmRvd1R5cGU7CisjZWxpZiBVU0UoRUdMKSAmJiBQTEFURk9S
TShHVEspICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8y
KQorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+
Cit0eXBlZGVmIEVHTE5hdGl2ZVdpbmRvd1R5cGUgR0xOYXRpdmVXaW5kb3dUeXBlOwogI2Vsc2UK
IHR5cGVkZWYgdWludDY0X3QgR0xOYXRpdmVXaW5kb3dUeXBlOwogI2VuZGlmCkBAIC02Nyw2ICs3
MSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZFgxMURpc3BsYXko
KTsKICNlbmRpZgogCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShX
QVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikKKyAgICBzdGF0aWMgc3RydWN0
IHdsX2Rpc3BsYXkqIHNoYXJlZFdheWxhbmREaXNwbGF5KCk7CisjZW5kaWYKKwogICAgIHN0YXRp
YyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgcmVt
b3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwQWN0
aXZlQ29udGV4dHNBdEV4aXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggMDlhN2VkOC4uNzU3YTYwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlz
cGxheSgpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSNpZiBQTEFURk9STShY
MTEpCisjaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiAhZGVmaW5lZChH
VEtfQVBJX1ZFUlNJT05fMikKKyAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNw
bGF5KEdMQ29udGV4dDo6c2hhcmVkV2F5bGFuZERpc3BsYXkoKSk7CisjZWxpZiBQTEFURk9STShY
MTEpCiAgICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShHTENvbnRleHQ6
OnNoYXJlZFgxMURpc3BsYXkoKSk7CiAjZWxzZQogICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9
IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CkBAIC0xMjQsNyArMTI2LDYgQEAg
UGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4
dChFR0xOYXRpdmVXaW5kb3dUeXBlIHcKICAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVh
dGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93LCAwKTsKICAgICBpZiAoc3Vy
ZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dT
dXJmYWNlKSk7CiB9CiAKQEAgLTE1NCw3ICsxNTUsOSBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdD
bwogCiBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBD
b250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYgUExBVEZPUk0oWDExKQor
I2lmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQ
SV9WRVJTSU9OXzIpCisgICAgcmV0dXJuIG51bGxwdHI7CisjZWxpZiBQTEFURk9STShYMTEpCiAg
ICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwogICAgIGlmIChkaXNw
bGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuY3BwCmluZGV4IGM4ZTgxZTQuLjlhZGVjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApA
QCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KIAorI2lmIFVTRShHTFgpCisjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIEhhc2hNYXA8V2luZG93LCBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdyo+IFdpbmRvd0hhc2hNYXA7CkBAIC0xOTksNyArMjAzLDEz
IEBAIEdMQ29udGV4dCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNvbnRleHQoKQogICAg
ICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogCiAgICAgQVNTRVJUKG1fd2luZG93KTsKKyNp
ZiAhUExBVEZPUk0oV0FZTEFORCkKICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNv
bnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7Cisj
ZWxpZiBVU0UoR0xYKQorICAgIG1fY29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4
dChtX3dpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcAppbmRleCA3MGY2YzgzLi43MWI5ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAK
QEAgLTU3LDYgKzU3LDEwIEBACiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgogCisjaWYg
VVNFKEdMWCkKKyNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MywxMiArODcsMjMgQEAg
R0xDb250ZXh0KiBMYXllclRyZWVIb3N0R3RrOjpnbENvbnRleHQoKQogICAgIGlmIChtX2NvbnRl
eHQpCiAgICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiAKKyNpZiAhUExBVEZPUk0oV0FZ
TEFORCkKICAgICB1aW50NjRfdCB3aW5kb3dIYW5kbGUgPSBtX3dlYlBhZ2UtPm5hdGl2ZVdpbmRv
d0hhbmRsZSgpOwogICAgIGlmICghd2luZG93SGFuZGxlKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh3aW5kb3dI
YW5kbGUsIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CiAgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKKyNlbGlmIFVTRShHTFgpCisgICAgdWludDY0X3Qgd2luZG93SGFuZGxlID0gbV93
ZWJQYWdlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKKyAgICBpZiAoIXdpbmRvd0hhbmRsZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBtX2NvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNv
bnRleHQod2luZG93SGFuZGxlLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgIHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAK
IHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6ZSgpCi0tIAoxLjguMy4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222100</attachid>
            <date>2014-01-24 06:17:19 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0006-WAYLAND-Make-LayerTreeHostGtk-use-the-nested-wayland.patch</filename>
            <type>text/plain</type>
            <size>6986</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSA4OGM2YTYzYTg0ZDRjODcxZDdkNWRhMmUxMjhjNTQwNDYzN2ZiYmFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDIzIEphbiAyMDE0IDEzOjEyOjAzICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
Ni8xMF0gW1dBWUxBTkRdIE1ha2UgTGF5ZXJUcmVlSG9zdEd0ayB1c2UgdGhlIG5lc3RlZCB3YXls
YW5kCiBjb21wb3NpdG9yIHRvIG9idGFpbiBhIHNoYXJlZCBXYXlsYW5kIHN1cmZhY2Ugb24gV2F5
bGFuZCBwbGF0Zm9ybXMKCi0tLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5jcHAgICAgfCA1NCArKysrKysrKysrKysrKysrKy0tLS0tCiAuLi4vV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggICAgICB8IDExICsrKysrCiAyIGZpbGVz
IGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuY3BwCmluZGV4IDcxYjllMTguLmM2YmRlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAt
NDksNiArNDksMTEgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2luY2x1ZGUg
PGdkay9nZGsuaD4KKworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmlu
ZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikK
KyNpbmNsdWRlICJXYXlsYW5kRGlzcGxheS5oIgorI2VuZGlmCisKICNpZiBkZWZpbmVkKEdES19X
SU5ET1dJTkdfWDExKQogI2RlZmluZSBSZWdpb24gWFJlZ2lvbgogI2RlZmluZSBGb250IFhGb250
CkBAIC04NywxOCArOTIsMTggQEAgR0xDb250ZXh0KiBMYXllclRyZWVIb3N0R3RrOjpnbENvbnRl
eHQoKQogICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
CiAKLSNpZiAhUExBVEZPUk0oV0FZTEFORCkKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlM
QU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQ
SV9WRVJTSU9OXzIpCisgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUgPSBtX3ds
U3VyZmFjZSA/IG1fd2xTdXJmYWNlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKSA6IDA7CisjZWxzZQog
ICAgIHVpbnQ2NF90IHdpbmRvd0hhbmRsZSA9IG1fd2ViUGFnZS0+bmF0aXZlV2luZG93SGFuZGxl
KCk7CisjZW5kaWYKICAgICBpZiAoIXdpbmRvd0hhbmRsZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
KyNpZiAhUExBVEZPUk0oV0FZTEFORCkgfHwgKFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQp
ICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZF
UlNJT05fMikpCiAgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKICAgICByZXR1
cm4gbV9jb250ZXh0LmdldCgpOwogI2VsaWYgVVNFKEdMWCkKLSAgICB1aW50NjRfdCB3aW5kb3dI
YW5kbGUgPSBtX3dlYlBhZ2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpOwotICAgIGlmICghd2luZG93
SGFuZGxlKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIG1fY29udGV4dCA9IEdMQ29udGV4dEdM
WDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKICNlbHNlCkBAIC0xMjgsNyArMTMzLDIz
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6ZSgpCiAgICAgbV9yb290TGF5ZXIt
PmFkZENoaWxkKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSk7CiAgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKIAorI2lmIFVTRShFR0wp
ICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAm
JiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikKKyAgICAvLyBSZXF1ZXN0IGEgd2F5bGFuZCBz
dXJmYWNlIGZyb20gdGhlIG5lc3RlZCB3YXlsYW5kIGNvbXBvc2l0b3IKKyAgICBXYXlsYW5kRGlz
cGxheSogZGlzcGxheSA9IFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgpOworICAgIG1fd2xTdXJm
YWNlID0gZGlzcGxheS0+Y3JlYXRlU3VyZmFjZSgxLCAxKTsKKyAgICBpZiAoIW1fd2xTdXJmYWNl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNpemUgdGhlIHN1cmZhY2UgdG8gbWF0Y2gg
dGhlIHNpemUgb2YgdGhlIHdlYiBwYWdlCisgICAgSW50U2l6ZSB3ZWJQYWdlU2l6ZSA9IG1fd2Vi
UGFnZS0+c2l6ZSgpOworICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2xTdXJmYWNlLT5uYXRp
dmVXaW5kb3dIYW5kbGUoKSwgd2ViUGFnZVNpemUud2lkdGgoKSwgd2ViUGFnZVNpemUuaGVpZ2h0
KCksIDAsIDApOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQgYSBub24temVybyB3aW5kb3cgaGFu
ZGxlIHNvIHRoYXQgd2Via2l0IHJlYWxpemVzIHdlIGFyZSBnb29kIHRvIGdvIGZvciBBQy4KKyAg
ICAvLyBXZSBjYW4gcHJvYmFibHkgZmluZCBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcyBm
b3IgV2F5bGFuZAorICAgIG1fbGF5ZXJUcmVlQ29udGV4dC53aW5kb3dIYW5kbGUgPSBtX3dsU3Vy
ZmFjZS0+bmF0aXZlV2luZG93SGFuZGxlKCkgPyAxIDogMDsKKyNlbHNlCiAgICAgbV9sYXllclRy
ZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9IG1fd2ViUGFnZS0+bmF0aXZlV2luZG93SGFuZGxlKCk7
CisjZW5kaWYKIAogICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgpOwogICAgIGlm
ICghY29udGV4dCkKQEAgLTIyNSw2ICsyNDYsMTAgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpz
aXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKIAorI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5l
ZChHVEtfQVBJX1ZFUlNJT05fMikKKyAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dsU3VyZmFj
ZS0+bmF0aXZlV2luZG93SGFuZGxlKCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQo
KSwgMCwgMCk7CisjZW5kaWYKKwogICAgIC8vIElmIHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3IGFy
ZWFzIG9mIHRoZSBub24tY29tcG9zaXRlZCBjb250ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlzIG5l
ZWRlZAogICAgIC8vIGZvciB0aG9zZSBuZXdseSBleHBvc2VkIGFyZWFzLgogICAgIEZsb2F0U2l6
ZSBvbGRTaXplID0gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zaXplKCk7CkBAIC0zMDgs
NiArMzMzLDE2IEBAIGdib29sZWFuIExheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZp
cmVkQ2FsbGJhY2soTGF5ZXJUcmVlSG9zdEd0ayogbGF5ZXJUCiAgICAgcmV0dXJuIEZBTFNFOwog
fQogCit2b2lkIExheWVyVHJlZUhvc3RHdGs6OnF1ZXVlTGF5ZXJGbHVzaCh1bnNpZ25lZCBpbnRl
cnZhbCkKK3sKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisgICAg
Ly8gTGV0IHRoZSBjb21wb3NpdG9yIGtub3cgdGhhdCB3ZSB3YW50IHRvIHJlbmRlciBhIG5ldyBm
cmFtZQorICAgIG1fd2xTdXJmYWNlLT5yZXF1ZXN0RnJhbWUoKTsKKyNlbmRpZgorICAgIG1fbGF5
ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHREtfUFJJT1JJVFlf
RVZFTlRTLCBpbnRlcnZhbCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVz
aFRpbWVyRmlyZWRDYWxsYmFjayksIHRoaXMsIDApOworICAgIGdfc291cmNlX3NldF9uYW1lX2J5
X2lkKG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCwgIltXZWJLaXRdIGxheWVyRmx1c2hUaW1l
ckZpcmVkQ2FsbGJhY2siKTsKK30KKwogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpsYXllckZsdXNo
VGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCk7
CkBAIC0zMTgsOCArMzUzLDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpsYXllckZsdXNoVGlt
ZXJGaXJlZCgpCiAgICAgaWYgKHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgp
KS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiAhbV9sYXllckZs
dXNoVGltZXJDYWxsYmFja0lkKSB7CiAgICAgICAgIGNvbnN0IGRvdWJsZSB0YXJnZXRGUFMgPSA2
MDsKICAgICAgICAgZG91YmxlIG5leHRGbHVzaCA9IHN0ZDo6bWF4KCgxIC8gdGFyZ2V0RlBTKSAt
IChjdXJyZW50VGltZSgpIC0gbV9sYXN0Rmx1c2hUaW1lKSwgMC4wKTsKLSAgICAgICAgbV9sYXll
ckZsdXNoVGltZXJDYWxsYmFja0lkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdES19QUklPUklUWV9F
VkVOVFMsIG5leHRGbHVzaCAqIDEwMDAuMCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4o
bGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFjayksIHRoaXMsIDApOwotICAgICAgICBnX3NvdXJj
ZV9zZXRfbmFtZV9ieV9pZChtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQsICJbV2ViS2l0XSBs
YXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrIik7CisgICAgICAgIHF1ZXVlTGF5ZXJGbHVzaChu
ZXh0Rmx1c2ggKiAxMDAwLjApOwogICAgIH0KIH0KIApAQCAtNDE4LDEwICs0NTIsOCBAQCB2b2lk
IExheWVyVHJlZUhvc3RHdGs6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFdlIHVzZSBhIEdMaWIgdGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RLKyBldmVu
dCBoYW5kbGluZyBkdXJpbmcgZHJhZ2dpbmcgY2FuIHN0YXJ2ZSBXZWJDb3JlIHRpbWVycywgd2hp
Y2ggaGF2ZSBhIGxvd2VyIHByaW9yaXR5LgotICAgIGlmICghbV9sYXllckZsdXNoVGltZXJDYWxs
YmFja0lkKSB7Ci0gICAgICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9IGdfdGltZW91
dF9hZGRfZnVsbChHREtfUFJJT1JJVFlfRVZFTlRTLCAwLCByZWludGVycHJldF9jYXN0PEdTb3Vy
Y2VGdW5jPihsYXllckZsdXNoVGltZXJGaXJlZENhbGxiYWNrKSwgdGhpcywgMCk7Ci0gICAgICAg
IGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCwgIltX
ZWJLaXRdIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2siKTsKLSAgICB9CisgICAgaWYgKCFt
X2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQpCisgICAgICAgIHF1ZXVlTGF5ZXJGbHVzaCgwKTsK
IH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJs
ZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggNTVmN2Iw
OC4uNDFiMGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KKworI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdf
V0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisjaW5jbHVkZSA8V2ViQ29y
ZS9XYXlsYW5kU3VyZmFjZS5oPgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtOTEsNiArOTcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXll
ckZsdXNoKCk7CiAKKyAgICB2b2lkIHF1ZXVlTGF5ZXJGbHVzaCh1bnNpZ25lZCk7CiAgICAgdm9p
ZCBsYXllckZsdXNoVGltZXJGaXJlZCgpOwogICAgIHN0YXRpYyBnYm9vbGVhbiBsYXllckZsdXNo
VGltZXJGaXJlZENhbGxiYWNrKExheWVyVHJlZUhvc3RHdGsqKTsKIApAQCAtMTA4LDYgKzExNSwx
MCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2xhc3RGbHVzaFRpbWU7CiAgICAgYm9vbCBtX2xh
eWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKICAgICB1bnNpZ25lZCBtX2xheWVyRmx1c2hUaW1l
ckNhbGxiYWNrSWQ7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5E
T1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisgICAgT3duUHRy
PFdlYkNvcmU6OldheWxhbmRTdXJmYWNlPiBtX3dsU3VyZmFjZTsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0tIAoxLjguMy4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222101</attachid>
            <date>2014-01-24 06:17:43 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0007-GENERAL-Fixes-build-error-with-OpenGLES-should-be-fi.patch</filename>
            <type>text/plain</type>
            <size>3902</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSBkYzZkZTg5YTA5NWFiNDlmOTU5NzFiOWFhNGUzZjJhNjdkMzBiZjAwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDIzIEphbiAyMDE0IDE4OjA3OjI0ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
Ny8xMF0gW0dFTkVSQUxdIEZpeGVzIGJ1aWxkIGVycm9yIHdpdGggT3BlbkdMRVMgKHNob3VsZCBi
ZQogZml4ZWQgdXBzdHJlYW0gYWxyZWFkeSkKCi0tLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgICAgICB8IDExICsrKysrKysrKysrCiAu
Li4vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCAgICAg
ICAgIHwgMTEgLS0tLS0tLS0tLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgICAgfCAgOCArKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk
LCAxOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcAppbmRleCA4NjQ0YzljLi4yYmVlYWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTI3Miw2ICsyNzIsMTcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RlbnVtIGludGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQg
eG9mZiwgR0MzRGludCB5b2ZmLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdD
M0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaWYgKHR5cGUgPT0gSEFMRl9GTE9BVF9PRVMp
CisgICAgICAgIHR5cGUgPSBHTF9IQUxGX0ZMT0FUX0FSQjsKKworICAgIC8vIEZJWE1FOiB3ZSB3
aWxsIG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRo
IGltYWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KKyAgICA6
OmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRl
cHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggYWJmNGZiMi4uMjNjNzg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzYxLDE3ICsxMzYxLDYgQEAgR0MzRHNp
emVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQg
aW5kZXgsIEdDM0RlbnVtIHAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmYsIEdDM0RpbnQgeW9mZiwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykK
LXsKLSAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGlmICh0eXBlID09IEhBTEZfRkxP
QVRfT0VTKQotICAgICAgICB0eXBlID0gR0xfSEFMRl9GTE9BVF9BUkI7Ci0KLSAgICAvLyBGSVhN
RTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRlYWxp
bmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdlIHNpemUu
Ci0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwCmluZGV4IDllYjMwNWUuLmZhMjE1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTIwOCw2ICsyMDgsMTQgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rp
bnQgeG9mZiwgR0MzRGludCB5b2ZmLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0
byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVm
ZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgorICAgIDo6Z2xUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVBdHRy
aWJ1dGVzKCkKIHsKICAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIik7Ci0tIAoxLjguMy4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222102</attachid>
            <date>2014-01-24 06:18:12 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0008-WAYLAND-Have-LayerTreeHostGTK-select-between-Wayland.patch</filename>
            <type>text/plain</type>
            <size>13351</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSA4YjlkNTg5MzE0NjMyMTczZWJlMDUwZThmOTRhODAzMWY2OGMyYTMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI0IEphbiAyMDE0IDA5OjM1OjI0ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
OC8xMF0gW1dBWUxBTkRdIEhhdmUgTGF5ZXJUcmVlSG9zdEdUSyBzZWxlY3QgYmV0d2VlbgogV2F5
bGFuZC9YMTEgYXQgcnVuLXRpbWUuIEFsc28sIHJlbW92ZSB1bm5lY2Vzc2FyeSBHVEtfQVBJX1ZF
UlNJT05fMiBndWFyZHMuCgotLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5jcHAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuaCAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dheWxhbmREaXNwbGF5LmNwcCAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XYXlsYW5kRGlzcGxheS5oICAgICAgIHwgICAyICstCiAuLi4vcGxhdGZvcm0vZ3RrL1dh
eWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuY3BwICAgICB8ICAgMiArLQogLi4uL3BsYXRmb3JtL2d0
ay9XYXlsYW5kRGlzcGxheUV2ZW50U291cmNlLmggICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kU3VyZmFjZS5jcHAgICAgIHwgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuaCAgICAgICB8ICAgMiArLQogLi4u
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgICAgfCAxMDIgKysr
KysrKysrKysrKystLS0tLS0tCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmggICAgICB8ICAgNyArLQogMTAgZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygr
KSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
YXlsYW5kQ29tcG9zaXRvci5jcHAKaW5kZXggMmNjZGM1ZC4uM2U4YmYyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBAIC0yNyw3
ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0
b3IuaCIKIAotI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RL
X1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZ
TEFORCkKIAogI2luY2x1ZGUgIldheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAppbmRleCAzMzc3
NDkyLi5hMzU4M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuaApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgog
Ci0jaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorI2lmIFVTRShFR0wp
ICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQog
CiAjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KICNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAKaW5k
ZXggNzE4NDZmMC4uZTU3MjljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dheWxhbmREaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
V2F5bGFuZERpc3BsYXkuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2F5bGFuZERpc3BsYXkuaCIKIAotI2lmIFVTRShFR0wpICYmIFBMQVRGT1JN
KFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChH
VEtfQVBJX1ZFUlNJT05fMikKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBk
ZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKIAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXkuaAppbmRleCA5
NzkyMDQ2Li4wYmRjY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
V2F5bGFuZERpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFu
ZERpc3BsYXkuaApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogCi0j
aWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5H
X1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorI2lmIFVTRShFR0wpICYm
IFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQogCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuY3BwCmluZGV4IDdiYTQx
ZGUuLjQzM2Q4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXls
YW5kRGlzcGxheUV2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXYXlsYW5kRGlzcGxheUV2ZW50U291cmNlLmgiCiAK
LSNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkg
JiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYg
ZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAKICNpbmNsdWRlIDx3YXlsYW5kLXNlcnZl
ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERp
c3BsYXlFdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRE
aXNwbGF5RXZlbnRTb3VyY2UuaAppbmRleCBkODA3YjI3Li4zMjhkNDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXlFdmVudFNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheUV2ZW50U291cmNl
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPGdkay9nZGsuaD4KIAotI2lmIFBMQVRG
T1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5l
ZChHVEtfQVBJX1ZFUlNJT05fMikKKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfV0FZTEFORCkKIAogI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kU3VyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuY3BwCmluZGV4IDk4
YzFlNjMuLmRjODlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
YXlsYW5kU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxh
bmRTdXJmYWNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldheWxhbmRTdXJmYWNlLmgiCiAKLSNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlM
QU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQ
SV9WRVJTSU9OXzIpCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAKICNpbmNsdWRlICJXYXlsYW5kRGlzcGxheS5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kU3VyZmFjZS5oCmluZGV4IDJi
MjJkNzMuLjY1M2IyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
YXlsYW5kU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5k
U3VyZmFjZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAKLSNp
ZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdf
V0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisjaWYgVVNFKEVHTCkgJiYg
UExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAKICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCBjNmJk
ZTFiLi41NmExODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTQ5LDEwICs0OSwxMiBAQAog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgotCi0j
aWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5H
X1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorI2lmIGRlZmluZWQoR0RL
X1dJTkRPV0lOR19XQVlMQU5EKQorI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CisjaWYgVVNF
KEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKICNpbmNsdWRlICJXYXlsYW5kRGlzcGxheS5oIgog
I2VuZGlmCisjZW5kaWYKIAogI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAjZGVmaW5l
IFJlZ2lvbiBYUmVnaW9uCkBAIC03MCw2ICs3MiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0geworICBESVNQTEFZX1RZUEVfTk9ORSA9
IDAsCisgIERJU1BMQVlfVFlQRV9YMTEsCisgIERJU1BMQVlfVFlQRV9XQVlMQU5ECit9OworCiBQ
YXNzUmVmUHRyPExheWVyVHJlZUhvc3RHdGs+IExheWVyVHJlZUhvc3RHdGs6OmNyZWF0ZShXZWJQ
YWdlKiB3ZWJQYWdlKQogewogICAgIFJlZlB0cjxMYXllclRyZWVIb3N0R3RrPiBob3N0ID0gYWRv
cHRSZWYobmV3IExheWVyVHJlZUhvc3RHdGsod2ViUGFnZSkpOwpAQCAtODQsNyArOTIsMjIgQEAg
TGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlKiB3ZWJQYWdlKQogICAg
ICwgbV9sYXN0Rmx1c2hUaW1lKDApCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxl
ZCh0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkKDApCisgICAgLCBtX2Rp
c3BsYXlUeXBlKGdldERpc3BsYXlUeXBlKCkpCit7Cit9CisKK2ludCBMYXllclRyZWVIb3N0R3Rr
OjpnZXREaXNwbGF5VHlwZSgpCiB7CisgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNw
bGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgp
KTsKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyAgICBpZiAoR0RLX0lTX1dB
WUxBTkRfRElTUExBWShkaXNwbGF5KSkKKyAgICAgICAgcmV0dXJuIERJU1BMQVlfVFlQRV9XQVlM
QU5EOworI2VuZGlmCisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKKyAgICBpZiAoR0RL
X0lTX1gxMV9ESVNQTEFZKGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gRElTUExBWV9UWVBFX1gx
MTsKKyNlbmRpZgorICAgIHJldHVybiBESVNQTEFZX1RZUEVfTk9ORTsKIH0KIAogR0xDb250ZXh0
KiBMYXllclRyZWVIb3N0R3RrOjpnbENvbnRleHQoKQpAQCAtOTIsMjMgKzExNSwyNyBAQCBHTENv
bnRleHQqIExheWVyVHJlZUhvc3RHdGs6OmdsQ29udGV4dCgpCiAgICAgaWYgKG1fY29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKIAotI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5l
ZChHVEtfQVBJX1ZFUlNJT05fMikKLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRs
ZSA9IG1fd2xTdXJmYWNlID8gbV93bFN1cmZhY2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpIDogMDsK
LSNlbHNlCi0gICAgdWludDY0X3Qgd2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5uYXRpdmVXaW5k
b3dIYW5kbGUoKTsKKyAgICBpZiAobV9kaXNwbGF5VHlwZSA9PSBESVNQTEFZX1RZUEVfV0FZTEFO
RCkgeworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJ
TkRPV0lOR19XQVlMQU5EKQorICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRs
ZSA9IG1fd2xTdXJmYWNlID8gbV93bFN1cmZhY2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpIDogMDsK
KyAgICAgICAgaWYgKCF3aW5kb3dIYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHdpbmRvd0hh
bmRsZSwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsKICNlbmRpZgotICAgIGlmICghd2luZG93SGFuZGxlKQotICAgICAgICByZXR1
cm4gMDsKLQotI2lmICFQTEFURk9STShXQVlMQU5EKSB8fCAoVVNFKEVHTCkgJiYgUExBVEZPUk0o
V0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpICYmICFkZWZpbmVkKEdU
S19BUElfVkVSU0lPTl8yKSkKLSAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRl
eHRGb3JXaW5kb3cod2luZG93SGFuZGxlLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOwot
ICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdWludDY0
X3Qgd2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKKyAgICAg
ICAgaWYgKCF3aW5kb3dIYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyNpZiAhUExBVEZP
Uk0oV0FZTEFORCkgLy8gSWYgd2UgYXJlIGJ1aWxkaW5nIGZvciBib3RoIFgxMSBhbmQgV2F5bGFu
ZCB3ZSBuZWVkIHRvIGZvcmNlIEdMWCBmb3IgWDExCisgICAgICAgIG1fY29udGV4dCA9IEdMQ29u
dGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh3aW5kb3dIYW5kbGUsIEdMQ29udGV4dDo6c2hh
cmluZ0NvbnRleHQoKSk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiAjZWxpZiBV
U0UoR0xYKQotICAgIG1fY29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5k
b3dIYW5kbGUsIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7CisgICAgICAgIG1fY29udGV4dCA9IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKSk7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiAjZW5kaWYKKyAg
ICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6
ZSgpCkBAIC0xMzMsMjMgKzE2MCwyNCBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmluaXRpYWxp
emUoKQogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXIuZ2V0KCkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNw
bGF5KCk7CiAKLSNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCi0gICAg
Ly8gUmVxdWVzdCBhIHdheWxhbmQgc3VyZmFjZSBmcm9tIHRoZSBuZXN0ZWQgd2F5bGFuZCBjb21w
b3NpdG9yCi0gICAgV2F5bGFuZERpc3BsYXkqIGRpc3BsYXkgPSBXYXlsYW5kRGlzcGxheTo6aW5z
dGFuY2UoKTsKLSAgICBtX3dsU3VyZmFjZSA9IGRpc3BsYXktPmNyZWF0ZVN1cmZhY2UoMSwgMSk7
Ci0gICAgaWYgKCFtX3dsU3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2Rpc3Bs
YXlUeXBlID09IERJU1BMQVlfVFlQRV9XQVlMQU5EKSB7CisjaWYgVVNFKEVHTCkgJiYgUExBVEZP
Uk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCisgICAgICAgIC8v
IFJlcXVlc3QgYSB3YXlsYW5kIHN1cmZhY2UgZnJvbSB0aGUgbmVzdGVkIHdheWxhbmQgY29tcG9z
aXRvcgorICAgICAgICBXYXlsYW5kRGlzcGxheSogZGlzcGxheSA9IFdheWxhbmREaXNwbGF5Ojpp
bnN0YW5jZSgpOworICAgICAgICBtX3dsU3VyZmFjZSA9IGRpc3BsYXktPmNyZWF0ZVN1cmZhY2Uo
MSwgMSk7CisgICAgICAgIGlmICghbV93bFN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBSZXNpemUgdGhlIHN1cmZhY2UgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlIHdlYiBw
YWdlCi0gICAgSW50U2l6ZSB3ZWJQYWdlU2l6ZSA9IG1fd2ViUGFnZS0+c2l6ZSgpOwotICAgIHds
X2VnbF93aW5kb3dfcmVzaXplKG1fd2xTdXJmYWNlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKSwgd2Vi
UGFnZVNpemUud2lkdGgoKSwgd2ViUGFnZVNpemUuaGVpZ2h0KCksIDAsIDApOworICAgICAgICAv
LyBSZXNpemUgdGhlIHN1cmZhY2UgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlIHdlYiBwYWdlCisg
ICAgICAgIEludFNpemUgd2ViUGFnZVNpemUgPSBtX3dlYlBhZ2UtPnNpemUoKTsKKyAgICAgICAg
d2xfZWdsX3dpbmRvd19yZXNpemUobV93bFN1cmZhY2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpLCB3
ZWJQYWdlU2l6ZS53aWR0aCgpLCB3ZWJQYWdlU2l6ZS5oZWlnaHQoKSwgMCwgMCk7CiAKLSAgICAv
LyBGSVhNRTogV2UgbmVlZCBhIG5vbi16ZXJvIHdpbmRvdyBoYW5kbGUgc28gdGhhdCB3ZWJraXQg
cmVhbGl6ZXMgd2UgYXJlIGdvb2QgdG8gZ28gZm9yIEFDLgotICAgIC8vIFdlIGNhbiBwcm9iYWJs
eSBmaW5kIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzIGZvciBXYXlsYW5kCi0gICAgbV9s
YXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9IG1fd2xTdXJmYWNlLT5uYXRpdmVXaW5kb3dI
YW5kbGUoKSA/IDEgOiAwOwotI2Vsc2UKLSAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFu
ZGxlID0gbV93ZWJQYWdlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKKyAgICAgICAgLy8gRklYTUU6
IFdlIG5lZWQgYSBub24temVybyB3aW5kb3cgaGFuZGxlIHNvIHRoYXQgd2Via2l0IHJlYWxpemVz
IHdlIGFyZSBnb29kIHRvIGdvIGZvciBBQy4KKyAgICAgICAgLy8gV2UgY2FuIHByb2JhYmx5IGZp
bmQgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXMgZm9yIFdheWxhbmQKKyAgICAgICAgbV9s
YXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9IG1fd2xTdXJmYWNlLT5uYXRpdmVXaW5kb3dI
YW5kbGUoKSA/IDEgOiAwOwogI2VuZGlmCisgICAgfSBlbHNlCisgICAgICAgIG1fbGF5ZXJUcmVl
Q29udGV4dC53aW5kb3dIYW5kbGUgPSBtX3dlYlBhZ2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpOwog
CiAgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gZ2xDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0
KQpAQCAtMjQ2LDkgKzI3NCwxMSBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNpemVEaWRDaGFu
Z2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcm9vdExh
eWVyLT5zZXRTaXplKG5ld1NpemUpOwogCi0jaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFO
RCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElf
VkVSU0lPTl8yKQotICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2xTdXJmYWNlLT5uYXRpdmVX
aW5kb3dIYW5kbGUoKSwgbmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpLCAwLCAwKTsK
KyAgICBpZiAobV9kaXNwbGF5VHlwZSA9PSBESVNQTEFZX1RZUEVfV0FZTEFORCkgeworI2lmIFVT
RShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlM
QU5EKQorICAgICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dsU3VyZmFjZS0+bmF0aXZlV2lu
ZG93SGFuZGxlKCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSwgMCwgMCk7CiAj
ZW5kaWYKKyAgICB9CiAKICAgICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBvc2VzIG5ldyBhcmVhcyBv
ZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNldE5lZWRzRGlzcGxheSBpcyBuZWVkZWQK
ICAgICAvLyBmb3IgdGhvc2UgbmV3bHkgZXhwb3NlZCBhcmVhcy4KQEAgLTMzNSwxMCArMzY1LDEy
IEBAIGdib29sZWFuIExheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJh
Y2soTGF5ZXJUcmVlSG9zdEd0ayogbGF5ZXJUCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cXVl
dWVMYXllckZsdXNoKHVuc2lnbmVkIGludGVydmFsKQogewotI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5l
ZChHVEtfQVBJX1ZFUlNJT05fMikKLSAgICAvLyBMZXQgdGhlIGNvbXBvc2l0b3Iga25vdyB0aGF0
IHdlIHdhbnQgdG8gcmVuZGVyIGEgbmV3IGZyYW1lCi0gICAgbV93bFN1cmZhY2UtPnJlcXVlc3RG
cmFtZSgpOworICAgIGlmIChtX2Rpc3BsYXlUeXBlID09IERJU1BMQVlfVFlQRV9XQVlMQU5EKSB7
CisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1dBWUxBTkQpCisgICAgICAgIC8vIExldCB0aGUgY29tcG9zaXRvciBrbm93IHRoYXQgd2Ug
d2FudCB0byByZW5kZXIgYSBuZXcgZnJhbWUKKyAgICAgICAgbV93bFN1cmZhY2UtPnJlcXVlc3RG
cmFtZSgpOwogI2VuZGlmCisgICAgfQogICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZCA9
IGdfdGltZW91dF9hZGRfZnVsbChHREtfUFJJT1JJVFlfRVZFTlRTLCBpbnRlcnZhbCwgcmVpbnRl
cnByZXRfY2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFjayksIHRo
aXMsIDApOwogICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fbGF5ZXJGbHVzaFRpbWVyQ2Fs
bGJhY2tJZCwgIltXZWJLaXRdIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2siKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRy
ZWVIb3N0R3RrLmgKaW5kZXggNDFiMGZkZi4uNjg4Mzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAg
LTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4K
IAogI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVk
KEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisj
aWYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAj
aW5jbHVkZSA8V2ViQ29yZS9XYXlsYW5kU3VyZmFjZS5oPgogI2VuZGlmCiAKQEAgLTEwMyw2ICsx
MDMsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6R0xDb250ZXh0KiBnbENvbnRleHQoKTsK
IAorICAgIGludCBnZXREaXNwbGF5VHlwZSgpOworCiAgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xh
eWVyVHJlZUNvbnRleHQ7CiAgICAgYm9vbCBtX2lzVmFsaWQ7CiAgICAgYm9vbCBtX25vdGlmeUFm
dGVyU2NoZWR1bGVkTGF5ZXJGbHVzaDsKQEAgLTExNSw4ICsxMTcsOSBAQCBwcml2YXRlOgogICAg
IGRvdWJsZSBtX2xhc3RGbHVzaFRpbWU7CiAgICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5n
RW5hYmxlZDsKICAgICB1bnNpZ25lZCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQ7CisgICAg
aW50IG1fZGlzcGxheVR5cGU7CiAKLSNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisjaWYg
UExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAgICAg
T3duUHRyPFdlYkNvcmU6OldheWxhbmRTdXJmYWNlPiBtX3dsU3VyZmFjZTsKICNlbmRpZgogfTsK
LS0gCjEuOC4zLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222103</attachid>
            <date>2014-01-24 06:18:34 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0009-WAYLAND-If-bulding-for-both-X11-and-Wayland-make-sur.patch</filename>
            <type>text/plain</type>
            <size>1735</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSBjNTk2YjRhZmQ1NDQ3Mzc4MzFjNGE1ODI0YjU3MDQzNjFkYmUyY2JmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI0IEphbiAyMDE0IDE0OjMwOjU1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw
OS8xMF0gW1dBWUxBTkRdIElmIGJ1bGRpbmcgZm9yIGJvdGggWDExIGFuZCBXYXlsYW5kLCBtYWtl
CiBzdXJlIHdlIHVzZSBHTFggdG8gY3JlYXRlIHRoZSBvZmZzY3JlZW4gY29udGV4dCB3aGVuIHJ1
bm5pbmcgb24gWDExLgoKLS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuY3BwIHwgMTYgKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCBiM2NlMWMwLi4wODdmNjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTM1LDEwICszNSwx
OCBAQAogI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKIAotI2lmIFVTRShFR0wpICYmIFBM
QVRGT1JNKFdBWUxBTkQpICYmIFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJT
SU9OXzIpCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpZmRlZiBH
REtfV0lORE9XSU5HX1dBWUxBTkQKICNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgorI2VuZGlm
CisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2VuZGlm
CisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9W
RVJTSU9OXzIpCiAjaW5jbHVkZSAiV2F5bGFuZERpc3BsYXkuaCIKICNlbmRpZgorI2VuZGlmCiAK
IHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiAKQEAgLTE3MSw2ICsxNzksMTIgQEAgR0xDb250
ZXh0OjpHTENvbnRleHQoKQogCiBQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVh
dGVPZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7CisjaWYgUExB
VEZPUk0oR1RLKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBQTEFURk9STShYMTEpICYmIFVTRShH
TFgpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQorICAgIC8vIFdlIG5lZWQgdG8gY3Jl
YXRlIGNvbnRleHQgdmlhIEdMWCB3aGVuIHJ1bm5pbmcgb24gWDExIHBsYXRmb3JtIGFuZCBoYXZl
IGJ1aWx0IGZvciBib3RoIFdheWxhbmQgYW5kIFgxMQorICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkg
PSBnZGtfZGlzcGxheV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfbWFu
YWdlcl9nZXQoKSk7CisgICAgaWYgKEdES19JU19YMTFfRElTUExBWShkaXNwbGF5KSkKKyAgICAg
ICAgcmV0dXJuIEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCgwLCBzaGFyaW5nQ29udGV4dCk7
CisjZW5kaWYKICAgICByZXR1cm4gY3JlYXRlQ29udGV4dEZvcldpbmRvdygwLCBzaGFyaW5nQ29u
dGV4dCk7CiB9CiAKLS0gCjEuOC4zLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222104</attachid>
            <date>2014-01-24 06:18:56 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0010-WAYLAND-When-creating-the-shared-EGL-display-add-run.patch</filename>
            <type>text/plain</type>
            <size>2429</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSBiYWRmMGNiMzg5ZjU5ZDg1MDJkNjUxNjQ1ZGQ0MGY1MjU1NjcxNTI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI0IEphbiAyMDE0IDE0OjMyOjE1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAx
MC8xMF0gW1dBWUxBTkRdIFdoZW4gY3JlYXRpbmcgdGhlIHNoYXJlZCBFR0wgZGlzcGxheSwgYWRk
CiBydW50aW1lIGNoZWNrcyB0byBkZWNpZGUgYmV0d2VlbiBYMTEgYW5kIFdheWxhbmQuCgotLS0K
IC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIHwgMjgg
KysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyks
IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCA3NTdhNjBkLi5jOTQ4OTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmNwcApAQCAtMzUsNiArMzUsMTYgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2lmZGVmIEdES19X
SU5ET1dJTkdfWDExCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNlbmRpZgorI2lmZGVmIEdES19X
SU5ET1dJTkdfV0FZTEFORAorI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CisjZW5kaWYKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICNpbmNsdWRlIDxjYWly
by1nbC5oPgogI2VuZGlmCkBAIC01NCwxMyArNjQsMjcgQEAgc3RhdGljIEVHTERpc3BsYXkgc2hh
cmVkRUdMRGlzcGxheSgpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAg
ICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSNpZiBQ
TEFURk9STShHVEspICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVS
U0lPTl8yKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIp
CisgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1
bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKTsKKyNpZiBQTEFURk9STShXQVlM
QU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyAgICBpZiAoR0RLX0lTX1dB
WUxBTkRfRElTUExBWShkaXNwbGF5KSkKICAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xH
ZXREaXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkV2F5bGFuZERpc3BsYXkoKSk7Ci0jZWxpZiBQTEFU
Rk9STShYMTEpCisjZW5kaWYKKyAgICAvLyBDYW4ndCBoYXZlIFgxMSBwYXRoIGdvIHRocm91Z2gg
RUdMIHdoZW4gd2UgYXJlIGJ1aWxkaW5nIGFsc28gZm9yIFdheWxhbmQKKyAgICAvLyB0YXJnZXQs
IG11c3QgdXNlIEdMWCB0byBjcmVhdGUgdGhlIGNvbnRleHQgaW4gdGhhdCBjYXNlCisjaWYgIVBM
QVRGT1JNKFdBWUxBTkQpICYmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5H
X1gxMSkKKyAgICBpZiAoR0RLX0lTX1gxMV9ESVNQTEFZKGRpc3BsYXkpKQorICAgICAgICBnU2hh
cmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5
KCkpOworI2VuZGlmCisgICAgaWYgKGdTaGFyZWRFR0xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZ
KQorICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRf
RElTUExBWSk7CisjZWxzZSAvLyBQTEFURk9STShHVEspICYmICFkZWZpbmVkKEdUS19BUElfVkVS
U0lPTl8yKQorI2lmIFBMQVRGT1JNKFgxMSkKICAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBl
Z2xHZXREaXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKTsKICNlbHNlCiAgICAg
ICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZ
KTsKICNlbmRpZgorI2VuZGlmCiAgICAgICAgIGlmIChnU2hhcmVkRUdMRGlzcGxheSAhPSBFR0xf
Tk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoZ1NoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8
ICFlZ2xCaW5kQVBJKGdHTEFQSSkpKQogICAgICAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBF
R0xfTk9fRElTUExBWTsKICAgICB9Ci0tIAoxLjguMy4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223102</attachid>
            <date>2014-02-04 05:32:34 -0800</date>
            <delta_ts>2014-02-07 02:58:07 -0800</delta_ts>
            <desc>Patch (multiple surfaces)</desc>
            <filename>0001-WAYLAND-Add-support-for-multiple-surfaces-widgets.patch</filename>
            <type>text/plain</type>
            <size>31845</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">RnJvbSAxYjk2YTMyNDk2NGI1MzE2MDg5OGFhZmYxNzg2ZWMwZjhmZGIwM2QxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJYWdvIFRvcmFsIFF1aXJvZ2EgPGl0b3JhbEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDQgRmViIDIwMTQgMTQ6MDk6NDkgKzAxMDAKU3ViamVjdDogW1BBVENIXSBb
V0FZTEFORF0gQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHN1cmZhY2VzL3dpZGdldHMKCi0tLQog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgIDgg
KwogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAgfCAg
IDUgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAg
IHwgMjQxICsrKysrKysrKysrKysrKy0tLS0tLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmggICAgfCAgODYgKysrKysrLS0KIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXkuaCAgICAgICB8ICAgNCArLQogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL3dsLXdrZ3RrLnhtbCAgICAgICAgICAgfCAgMzcgKysrKwogLi4u
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCAgICAgICAgfCAgMTggKy0K
IC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwICAgIHwgIDE1
ICstCiA5IGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCAxMDIgZGVsZXRpb25zKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3dsLXdrZ3Rr
LnhtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggM2Q5NGZlNS4uMmM2NjRhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTEsNSArMSwxMyBAQAogaW5jbHVkZSAkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQogCisjaWYgVEFSR0VUX1dBWUxBTkQKK1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kV2Via2l0R3RrJToKKwkkKEFNX1ZfR0VOKQorCSQo
QU1fVl9hdCl3YXlsYW5kLXNjYW5uZXIgc2VydmVyLWhlYWRlciA8ICQoV2ViQ29yZSkvcGxhdGZv
cm0vZ3RrL3dsLXdrZ3RrLnhtbCA+ICQoV2ViQ29yZSkvcGxhdGZvcm0vZ3RrL1dheWxhbmRXZWJr
aXRHdGtTZXJ2ZXJQcm90b2NvbC5oCisJJChBTV9WX2F0KXdheWxhbmQtc2Nhbm5lciBjbGllbnQt
aGVhZGVyIDwgJChXZWJDb3JlKS9wbGF0Zm9ybS9ndGsvd2wtd2tndGsueG1sID4gJChXZWJDb3Jl
KS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFdlYmtpdEd0a0NsaWVudFByb3RvY29sLmgKKwkkKEFNX1Zf
YXQpd2F5bGFuZC1zY2FubmVyIGNvZGUgPCAkKFdlYkNvcmUpL3BsYXRmb3JtL2d0ay93bC13a2d0
ay54bWwgPiAkKFdlYkNvcmUpL3BsYXRmb3JtL2d0ay9XYXlsYW5kV2Via2l0R3RrUHJvdG9jb2wu
YworI2VuZGlmCisKIFdFQkNPUkVfQ1NTX1BST1BFUlRZX05BTUVTIDo9ICQoV2ViQ29yZSkvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KIFdFQkNPUkVfQ1NTX1ZBTFVFX0tFWVdPUkRTIDo9ICQoV2Vi
Q29yZSkvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMDJkYjBkZC4uYjg5N2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC02Mjk1LDcgKzYyOTUsMTAgQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9XYXlsYW5kU3VyZmFjZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XYXlsYW5kU3VyZmFjZS5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRT
dXJmYWNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kV2Via2l0R3Rr
U2VydmVyUHJvdG9jb2wuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRX
ZWJraXRHdGtDbGllbnRQcm90b2NvbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
V2F5bGFuZFdlYmtpdEd0a1Byb3RvY29sLmMKIGVuZGlmICMgRU5EIFVTRV9PUEVOR0wKIGlmIFVT
RV9FR0wKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCAzZThiZjJmLi41MmViZDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5j
cHAKQEAgLTMxLDYgKzMxLDggQEAKIAogI2luY2x1ZGUgIldheWxhbmREaXNwbGF5RXZlbnRTb3Vy
Y2UuaCIKIAorI2luY2x1ZGUgIldheWxhbmRXZWJraXRHdGtTZXJ2ZXJQcm90b2NvbC5oIgorCiAj
aW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjUs
NiArNjcsNjcgQEAgc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0gRUdMX09QRU5HTF9FU19B
UEk7CiBzdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0FQSTsKICNlbmRp
ZgogCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpuZXN0ZWRCdWZmZXJSZWZlcmVuY2VIYW5kbGVE
ZXN0cm95KHN0cnVjdCB3bF9saXN0ZW5lciogbGlzdGVuZXIsIHZvaWQqIGRhdGEpCit7CisgICAg
c3RydWN0IE5lc3RlZEJ1ZmZlclJlZmVyZW5jZSogcmVmID0gMDsKKyAgICByZWYgPSB3bF9jb250
YWluZXJfb2YobGlzdGVuZXIsIHJlZiwgZGVzdHJveUxpc3RlbmVyKTsKKyAgICByZWYtPmJ1ZmZl
ciA9IDA7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6Om5lc3RlZEJ1ZmZlclJlZmVyZW5j
ZShzdHJ1Y3QgTmVzdGVkQnVmZmVyUmVmZXJlbmNlKiByZWYsIHN0cnVjdCBOZXN0ZWRCdWZmZXIq
IGJ1ZmZlcikKK3sKKyAgICBpZiAoYnVmZmVyID09IHJlZi0+YnVmZmVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAocmVmLT5idWZmZXIpIHsKKyAgICAgICAgcmVmLT5idWZmZXItPmJ1c3lD
b3VudC0tOworICAgICAgICBpZiAocmVmLT5idWZmZXItPmJ1c3lDb3VudCA9PSAwKQorICAgICAg
ICAgICAgd2xfcmVzb3VyY2VfcXVldWVfZXZlbnQocmVmLT5idWZmZXItPnJlc291cmNlLCBXTF9C
VUZGRVJfUkVMRUFTRSk7CisgICAgICAgIHdsX2xpc3RfcmVtb3ZlKCZyZWYtPmRlc3Ryb3lMaXN0
ZW5lci5saW5rKTsKKyAgICB9CisKKyAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgIGJ1ZmZlci0+
YnVzeUNvdW50Kys7CisgICAgICAgIHdsX3NpZ25hbF9hZGQoJmJ1ZmZlci0+ZGVzdHJveVNpZ25h
bCwgJnJlZi0+ZGVzdHJveUxpc3RlbmVyKTsKKyAgICAgICAgcmVmLT5kZXN0cm95TGlzdGVuZXIu
bm90aWZ5ID0gbmVzdGVkQnVmZmVyUmVmZXJlbmNlSGFuZGxlRGVzdHJveTsKKyAgICB9CisKKyAg
ICByZWYtPmJ1ZmZlciA9IGJ1ZmZlcjsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3Vy
ZmFjZUhhbmRsZVBlbmRpbmdCdWZmZXJEZXN0cm95KHN0cnVjdCB3bF9saXN0ZW5lciogbGlzdGVu
ZXIsIHZvaWQqIGRhdGEpCit7CisgICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIHN1cmZhY2UgPSAw
OworICAgIHN1cmZhY2UgPSB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIHN1cmZhY2UsIGJ1ZmZl
ckRlc3Ryb3lMaXN0ZW5lcik7CisgICAgc3VyZmFjZS0+YnVmZmVyID0gMDsKK30KKwordm9pZCBX
YXlsYW5kQ29tcG9zaXRvcjo6bmVzdGVkQnVmZmVyRGVzdHJveUhhbmRsZXIoc3RydWN0IHdsX2xp
c3RlbmVyKiBsaXN0ZW5lciwgdm9pZCogZGF0YSkKK3sKKyAgICBzdHJ1Y3QgTmVzdGVkQnVmZmVy
KiBidWZmZXIgPSAwOworICAgIGJ1ZmZlciA9IHdsX2NvbnRhaW5lcl9vZihsaXN0ZW5lciwgYnVm
ZmVyLCBkZXN0cm95TGlzdGVuZXIpOworICAgIHdsX3NpZ25hbF9lbWl0KCZidWZmZXItPmRlc3Ry
b3lTaWduYWwsIGJ1ZmZlcik7CisgICAgZ19mcmVlKGJ1ZmZlcik7Cit9CisKK3N0cnVjdCBOZXN0
ZWRCdWZmZXIqIFdheWxhbmRDb21wb3NpdG9yOjpuZXN0ZWRCdWZmZXJGcm9tUmVzb3VyY2Uoc3Ry
dWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBzdHJ1Y3QgTmVzdGVkQnVmZmVyKiBi
dWZmZXI7CisgICAgc3RydWN0IHdsX2xpc3RlbmVyKiBsaXN0ZW5lcjsKKworICAgIGxpc3RlbmVy
ID0gd2xfcmVzb3VyY2VfZ2V0X2Rlc3Ryb3lfbGlzdGVuZXIocmVzb3VyY2UsIG5lc3RlZEJ1ZmZl
ckRlc3Ryb3lIYW5kbGVyKTsKKyAgICBpZiAobGlzdGVuZXIpCisgICAgICAgIHJldHVybiB3bF9j
b250YWluZXJfb2YobGlzdGVuZXIsIChzdHJ1Y3QgTmVzdGVkQnVmZmVyKikwLCBkZXN0cm95TGlz
dGVuZXIpOworCisgICAgYnVmZmVyID0gZ19uZXcwKHN0cnVjdCBOZXN0ZWRCdWZmZXIsIDEpOwor
ICAgIGJ1ZmZlci0+cmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICB3bF9zaWduYWxfaW5pdCgmYnVm
ZmVyLT5kZXN0cm95U2lnbmFsKTsKKyAgICBidWZmZXItPmRlc3Ryb3lMaXN0ZW5lci5ub3RpZnkg
PSBuZXN0ZWRCdWZmZXJEZXN0cm95SGFuZGxlcjsKKyAgICB3bF9yZXNvdXJjZV9hZGRfZGVzdHJv
eV9saXN0ZW5lcihyZXNvdXJjZSwgJmJ1ZmZlci0+ZGVzdHJveUxpc3RlbmVyKTsKKworICAgIHJl
dHVybiBidWZmZXI7Cit9CisKIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OnN1cHBvcnRzUmVxdWly
ZWRFeHRlbnNpb25zKEVHTERpc3BsYXkgZWdsRGlzcGxheSkKIHsKICAgICAvLyBNYWtlIHN1cmUg
d2UgaGF2ZSB0aGUgcmVxdWlyZWQgV2F5bGFuZCBFR0wgZXh0ZW5zaW9uCkBAIC0xOTQsMTEgKzI1
NywxMiBAQCBzdHJ1Y3QgTmVzdGVkRGlzcGxheSogV2F5bGFuZENvbXBvc2l0b3I6OmNyZWF0ZU5l
c3RlZERpc3BsYXkoKQogdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6ZGVzdHJveU5lc3RlZERpc3Bs
YXkoc3RydWN0IE5lc3RlZERpc3BsYXkqIGRpc3BsYXkpCiB7CiAgICAgaWYgKGRpc3BsYXktPmNo
aWxkRGlzcGxheSkgewotICAgICAgICBpZiAoZGlzcGxheS0+ZXZlbnRTb3VyY2UpIHsKKyAgICAg
ICAgaWYgKGRpc3BsYXktPmV2ZW50U291cmNlKQogICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3Zl
KGdfc291cmNlX2dldF9pZChkaXNwbGF5LT5ldmVudFNvdXJjZSkpOwotICAgICAgICB9CiAgICAg
ICAgIGlmIChkaXNwbGF5LT53bEdsb2JhbCkKICAgICAgICAgICAgIHdsX2dsb2JhbF9kZXN0cm95
KGRpc3BsYXktPndsR2xvYmFsKTsKKyAgICAgICAgaWYgKGRpc3BsYXktPndrZ3RrR2xvYmFsKQor
ICAgICAgICAgICAgd2xfZ2xvYmFsX2Rlc3Ryb3koZGlzcGxheS0+d2tndGtHbG9iYWwpOwogICAg
ICAgICB3bF9kaXNwbGF5X2Rlc3Ryb3koZGlzcGxheS0+Y2hpbGREaXNwbGF5KTsKICAgICB9CiAg
ICAgc2h1dGRvd25FR0woZGlzcGxheSk7CkBAIC0yMTksMTIgKzI4Myw3IEBAIHZvaWQgV2F5bGFu
ZENvbXBvc2l0b3I6OnN1cmZhY2VEZXN0cm95KHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3Ry
dWN0IHdsX3Jlc291CiAKIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VBdHRhY2goc3Ry
dWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1
Y3Qgd2xfcmVzb3VyY2UqIGJ1ZmZlclJlc291cmNlLCBpbnQzMl90IHN4LCBpbnQzMl90IHN5KQog
ewotICAgIGlmICghYnVmZmVyUmVzb3VyY2UpCi0gICAgICAgIHJldHVybjsKLQogICAgIHN0cnVj
dCBOZXN0ZWRTdXJmYWNlKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8c3RydWN0IE5lc3RlZFN1cmZh
Y2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7Ci0gICAgaWYgKCFzdXJm
YWNlKQotICAgICAgICByZXR1cm47CiAKICAgICBFR0xpbnQgZm9ybWF0OwogICAgIFdheWxhbmRD
b21wb3NpdG9yKiBjb21wb3NpdG9yID0gc3VyZmFjZS0+Y29tcG9zaXRvcjsKQEAgLTIzMyw4ICsy
OTIsMTcgQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZUF0dGFjaChzdHJ1Y3Qgd2xf
Y2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXIKICAgICBpZiAoZm9ybWF0ICE9IEVHTF9U
RVhUVVJFX1JHQiAmJiBmb3JtYXQgIT0gRUdMX1RFWFRVUkVfUkdCQSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gV2UgcmVsZWFzZSBidWZmZXIgcmVzb3VyY2VzIHdoZW4gcHJvY2Vzc2luZyBw
ZW5kaW5nIGZyYW1lIGNhbGxiYWNrcyAoYmVmb3JlIHRoZSBjbGllbnQgY2FuIGF0dGFjaCBhIG5l
dyBidWZmZXIpCi0gICAgc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UgPSBidWZmZXJSZXNvdXJjZTsK
KyAgICAvLyBSZW1vdmUgcmVmZXJlbmNlcyB0byBhbnkgcHJldmlvdXMgcGVuZGluZyBidWZmZXIg
Zm9yIHRoaXMgc3VyZmFjZQorICAgIGlmIChzdXJmYWNlLT5idWZmZXIpIHsKKyAgICAgICAgc3Vy
ZmFjZS0+YnVmZmVyID0gMDsKKyAgICAgICAgd2xfbGlzdF9yZW1vdmUoJnN1cmZhY2UtPmJ1ZmZl
ckRlc3Ryb3lMaXN0ZW5lci5saW5rKTsKKyAgICB9CisKKyAgICAvLyBNYWtlIHRoZSBuZXcgYnVm
ZmVyIHRoZSBjdXJyZW50IHBlbmRpbmcgYnVmZmVyCisgICAgaWYgKGJ1ZmZlclJlc291cmNlKSB7
CisgICAgICAgIHN1cmZhY2UtPmJ1ZmZlciA9IG5lc3RlZEJ1ZmZlckZyb21SZXNvdXJjZShidWZm
ZXJSZXNvdXJjZSk7CisgICAgICAgIHdsX3NpZ25hbF9hZGQoJnN1cmZhY2UtPmJ1ZmZlci0+ZGVz
dHJveVNpZ25hbCwgJnN1cmZhY2UtPmJ1ZmZlckRlc3Ryb3lMaXN0ZW5lcik7CisgICAgfQogfQog
CiB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlRGFtYWdlKHN0cnVjdCB3bF9jbGllbnQq
IGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgaW50MzJfdCB4LCBpbnQzMl90
IHksIGludDMyX3QgdywgaW50MzJfdCBoKQpAQCAtMjY4LDcgKzMzNiw3IEBAIHZvaWQgV2F5bGFu
ZENvbXBvc2l0b3I6OnN1cmZhY2VTZXRJbnB1dFJlZ2lvbihzdHJ1Y3Qgd2xfY2xpZW50KiBjbGll
bnQsIHN0cnVjdCB3CiAKIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VDb21taXQoc3Ry
dWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQogewot
ICAgIHN0cnVjdCBOZXN0ZWRTdXJmYWNlKnN1cmZhY2UgPSBzdGF0aWNfY2FzdDxzdHJ1Y3QgTmVz
dGVkU3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICBz
dHJ1Y3QgTmVzdGVkU3VyZmFjZSogc3VyZmFjZSA9IHN0YXRpY19jYXN0PHN0cnVjdCBOZXN0ZWRT
dXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOwogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yODQsOSArMzUyLDEyIEBAIHZvaWQgV2F5
bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VDb21taXQoc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBz
dHJ1Y3Qgd2xfcmVzb3VyCiAgICAgICAgIHN1cmZhY2UtPmNhaXJvU3VyZmFjZSA9IDA7CiAgICAg
fQogCisgICAgLy8gTWFrZSB0aGUgcGVuZGluZyBidWZmZXIgY3VycmVudCAKKyAgICBuZXN0ZWRC
dWZmZXJSZWZlcmVuY2UoJnN1cmZhY2UtPmJ1ZmZlclJlZiwgc3VyZmFjZS0+YnVmZmVyKTsKKwog
ICAgIC8vIENyZWF0ZSBhIG5ldyBFR0xJbWFnZSBmcm9tIHRoZSBsYXN0IGJ1ZmZlciBhdHRhY2hl
ZCB0byB0aGlzIHN1cmZhY2UKICAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBjb21wb3NpdG9y
LT5tX2Rpc3BsYXktPmVnbERpc3BsYXk7Ci0gICAgc3VyZmFjZS0+aW1hZ2UgPSBzdGF0aWNfY2Fz
dDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUltYWdlKGVnbERpc3BsYXksIEVHTF9OT19DT05URVhU
LCBFR0xfV0FZTEFORF9CVUZGRVJfV0wsIHN1cmZhY2UtPmJ1ZmZlclJlc291cmNlLCAwKSk7Cisg
ICAgc3VyZmFjZS0+aW1hZ2UgPSBzdGF0aWNfY2FzdDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUlt
YWdlKGVnbERpc3BsYXksIEVHTF9OT19DT05URVhULCBFR0xfV0FZTEFORF9CVUZGRVJfV0wsIHN1
cmZhY2UtPmJ1ZmZlci0+cmVzb3VyY2UsIDApKTsKICAgICBpZiAoc3VyZmFjZS0+aW1hZ2UgPT0g
RUdMX05PX0lNQUdFX0tIUikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTYsMTUgKzM2NywyMSBA
QCB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlQ29tbWl0KHN0cnVjdCB3bF9jbGllbnQq
IGNsaWVudCwgc3RydWN0IHdsX3Jlc291cgogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGNhaXJvIHN1
cmZhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdXJmYWNlIHRleHR1cmUKICAgICBpbnQgd2lkdGgs
IGhlaWdodDsKLSAgICBlZ2xRdWVyeUJ1ZmZlcihlZ2xEaXNwbGF5LCBzdXJmYWNlLT5idWZmZXJS
ZXNvdXJjZSwgRUdMX1dJRFRILCAmd2lkdGgpOwotICAgIGVnbFF1ZXJ5QnVmZmVyKGVnbERpc3Bs
YXksIHN1cmZhY2UtPmJ1ZmZlclJlc291cmNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKyAgICBl
Z2xRdWVyeUJ1ZmZlcihlZ2xEaXNwbGF5LCBzdXJmYWNlLT5idWZmZXItPnJlc291cmNlLCBFR0xf
V0lEVEgsICZ3aWR0aCk7CisgICAgZWdsUXVlcnlCdWZmZXIoZWdsRGlzcGxheSwgc3VyZmFjZS0+
YnVmZmVyLT5yZXNvdXJjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCk7CiAgICAgY2Fpcm9fZGV2aWNl
X3QqIGRldmljZSA9IGNvbXBvc2l0b3ItPm1fZGlzcGxheS0+ZWdsRGV2aWNlOwogICAgIHN1cmZh
Y2UtPmNhaXJvU3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRl
dmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgc3VyZmFjZS0+dGV4dHVyZSwgd2lkdGgs
IGhlaWdodCk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5IChzdXJmYWNlLT5jYWlyb1N1
cmZhY2UpOyAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdGhpcz8KIAorICAgIC8vIFdlIGFyZSBk
b25lIHdpdGggdGhpcyBidWZmZXIKKyAgICBpZiAoc3VyZmFjZS0+YnVmZmVyKSB7CisgICAgICAg
IHdsX2xpc3RfcmVtb3ZlKCZzdXJmYWNlLT5idWZmZXJEZXN0cm95TGlzdGVuZXIubGluayk7Cisg
ICAgICAgIHN1cmZhY2UtPmJ1ZmZlciA9IDA7CisgICAgfQorCiAgICAgLy8gUmVkcmF3IHRoZSB3
aWRnZXQgYmFja2VkIGJ5IHRoaXMgc3VyZmFjZQotICAgIGlmIChjb21wb3NpdG9yLT5tX3dpZGdl
dCkKLSAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KGNvbXBvc2l0b3ItPm1fd2lkZ2V0KTsK
KyAgICBpZiAoc3VyZmFjZS0+d2lkZ2V0KQorICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXco
c3VyZmFjZS0+d2lkZ2V0KTsKIH0KIAogdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZVNl
dEJ1ZmZlclRyYW5zZm9ybShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNv
dXJjZSogcmVzb3VyY2UsIGludDMyX3QgdHJhbnNmb3JtKQpAQCAtMzM3LDI0ICs0MTQsMjEgQEAg
dm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6ZG9EZXN0cm95TmVzdGVkU3VyZmFjZShzdHJ1Y3QgTmVz
dGVkU3VyZmFjZSogc3VyZmFjZSkKICAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShjYi0+cmVz
b3VyY2UpOwogICAgIHdsX2xpc3RfaW5pdCgmc3VyZmFjZS0+ZnJhbWVDYWxsYmFja0xpc3QpOwog
Ci0gICAgLy8gUmVsZWFzZSBsYXN0IGF0dGFjaGVkIGJ1ZmZlcgotICAgIGlmIChzdXJmYWNlLT5i
dWZmZXJSZXNvdXJjZSkgewotICAgICAgICAvLyBGSVhNRTogcXVlaW5nIGEgYnVmZmVyIHJlbGVh
c2UgaGVyZSBjYW4gcHJvZHVjZSBzZWdmYXVsdCBpbiBzb21lIHNjbmVhcmlvcywKLSAgICAgICAg
Ly8gYnV0IGFyZSB3ZSBub3QgbGVha2luZyB0aGUgYnVmZmVyIG90aGVyd2lzZT8gV2UgbWlnaHQg
bmVlZCBzb21lIG1vcmUKLSAgICAgICAgLy8gZWxhYm9yYXRlIG1lY2hhbmlzbSB0byByZWxlYXNl
IHRoZSBidWZmZXIgKHNlZSBuZXN0ZWQgZXhhbXBsZSBpbiB3ZXN0b24pCi0gICAgICAgIC8vIHds
X3Jlc291cmNlX3F1ZXVlX2V2ZW50KHN1cmZhY2UtPmJ1ZmZlclJlc291cmNlLCBXTF9CVUZGRVJf
UkVMRUFTRSk7Ci0gICAgICAgIHN1cmZhY2UtPmJ1ZmZlclJlc291cmNlID0gMDsKLSAgICB9Ci0K
ICAgICAvLyBEZXN0cm95IEVHTEltYWdlCiAgICAgaWYgKHN1cmZhY2UtPmltYWdlICE9IEVHTF9O
T19JTUFHRV9LSFIpIHsKICAgICAgICAgZWdsRGVzdHJveUltYWdlKHN1cmZhY2UtPmNvbXBvc2l0
b3ItPm1fZGlzcGxheS0+ZWdsRGlzcGxheSwgc3VyZmFjZS0+aW1hZ2UpOwogICAgICAgICBzdXJm
YWNlLT5pbWFnZSA9IDA7CiAgICAgfQogCisgICAgLy8gUmVsZWFzZSBjdXJyZW50IGJ1ZmZlcgor
ICAgIG5lc3RlZEJ1ZmZlclJlZmVyZW5jZSgmc3VyZmFjZS0+YnVmZmVyUmVmLCBOVUxMKTsKKwog
ICAgIC8vIERlbGV0ZSBHTCB0ZXh0dXJlCiAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc3VyZmFj
ZS0+dGV4dHVyZSk7CiAKKyAgICAvLyBVbmxpbmsgdGhpcyBzb3VyY2UgZnJvbSB0aGUgY29tcG9z
aXRvcidzIHN1cmZhY2UgbGlzdAorICAgIHdsX2xpc3RfcmVtb3ZlKCZzdXJmYWNlLT5saW5rKTsK
KwogICAgIGdfZnJlZShzdXJmYWNlKTsKIH0KIApAQCAtMzY5LDE0ICs0NDMsMTEgQEAgdm9pZCBX
YXlsYW5kQ29tcG9zaXRvcjo6Y3JlYXRlU3VyZmFjZShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQs
IHN0cnVjdCB3bF9yZXNvdXIKIHsKICAgICBXYXlsYW5kQ29tcG9zaXRvciogY29tcG9zaXRvciA9
IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0
YShyZXNvdXJjZSkpOwogCi0gICAgLy8gRklYTUU6IEZvciBub3cgd2Ugb25seSBzdXBwb3J0IG9u
ZSBzdXJmYWNlL3dpZGdldAotICAgIGlmIChjb21wb3NpdG9yLT5tX3N1cmZhY2UpIHsKLSAgICAg
ICAgZ193YXJuaW5nKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIG9ubHkgc3VwcG9ydHMgb25l
IHN1cmZhY2UuIik7Ci0gICAgfQotCiAgICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIHN1cmZhY2Ug
PSBnX25ldzAoc3RydWN0IE5lc3RlZFN1cmZhY2UsIDEpOwogICAgIHN1cmZhY2UtPmNvbXBvc2l0
b3IgPSBjb21wb3NpdG9yOworCiAgICAgd2xfbGlzdF9pbml0KCZzdXJmYWNlLT5mcmFtZUNhbGxi
YWNrTGlzdCk7CisgICAgc3VyZmFjZS0+YnVmZmVyRGVzdHJveUxpc3RlbmVyLm5vdGlmeSA9IHN1
cmZhY2VIYW5kbGVQZW5kaW5nQnVmZmVyRGVzdHJveTsKIAogICAgIC8vIENyZWF0ZSBhIEdMIHRl
eHR1cmUgdG8gYmFjayB0aGlzIHN1cmZhY2UKICAgICBnbEdlblRleHR1cmVzICgxLCAmc3VyZmFj
ZS0+dGV4dHVyZSk7CkBAIC0zOTAsOCArNDYxLDcgQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6
Y3JlYXRlU3VyZmFjZShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXIK
ICAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHN1cmZhY2VSZXNvdXJjZSA9IHdsX3Jlc291cmNlX2Ny
ZWF0ZShjbGllbnQsICZ3bF9zdXJmYWNlX2ludGVyZmFjZSwgMSwgaWQpOwogICAgIHdsX3Jlc291
cmNlX3NldF9pbXBsZW1lbnRhdGlvbihzdXJmYWNlUmVzb3VyY2UsICZzdXJmYWNlSW50ZXJmYWNl
LCBzdXJmYWNlLCBkZXN0cm95TmVzdGVkU3VyZmFjZSk7CiAKLSAgICAvLyBGSVhNRTogRm9yIG5v
dyB3ZSBvbmx5IHN1cHBvcnQgb25lIHN1cmZhY2Uvd2lkZ2V0Ci0gICAgY29tcG9zaXRvci0+bV9z
dXJmYWNlID0gc3VyZmFjZTsKKyAgICB3bF9saXN0X2luc2VydChjb21wb3NpdG9yLT5tX3N1cmZh
Y2VzLnByZXYsICZzdXJmYWNlLT5saW5rKTsKIH0KIAogdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6
Y3JlYXRlUmVnaW9uKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNl
KiByZXNvdXJjZSwgdWludDMyX3QgaWQpCkBAIC00MTEsNiArNDgxLDI4IEBAIHZvaWQgV2F5bGFu
ZENvbXBvc2l0b3I6OmNvbXBvc2l0b3JCaW5kKHdsX2NsaWVudCogY2xpZW50LCB2b2lkKiBkYXRh
LCB1aW50MzJfdCB2CiAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHJlc291cmNl
LCAmY29tcG9zaXRvckludGVyZmFjZSwgY29tcG9zaXRvciwgMCk7CiB9CiAKK3ZvaWQgV2F5bGFu
ZENvbXBvc2l0b3I6OndrZ3RrU2V0U3VyZmFjZUZvcldpZGdldChzdHJ1Y3Qgd2xfY2xpZW50KiBj
bGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSog
c3VyZmFjZVJlc291cmNlLCB1aW50MzJfdCBpZCkKK3sKKyAgICBXYXlsYW5kQ29tcG9zaXRvciog
Y29tcG9zaXRvciA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4od2xfcmVzb3VyY2Vf
Z2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gZ2V0V2lk
Z2V0QnlJZChjb21wb3NpdG9yLCBpZCk7CisgICAgaWYgKCF3aWRnZXQpCisgICAgICAgIHJldHVy
bjsKKyAgICBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSogc3VyZmFjZSA9IHN0YXRpY19jYXN0PHN0cnVj
dCBOZXN0ZWRTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJmYWNlUmVzb3Vy
Y2UpKTsKKyAgICBzZXRTdXJmYWNlRm9yV2lkZ2V0KGNvbXBvc2l0b3IsIHdpZGdldCwgc3VyZmFj
ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2tndGtfaW50ZXJmYWNlIHdrZ3RrSW50
ZXJmYWNlID0geworICAgIFdheWxhbmRDb21wb3NpdG9yOjp3a2d0a1NldFN1cmZhY2VGb3JXaWRn
ZXQsCit9OworCisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OndrZ3RrQmluZChzdHJ1Y3Qgd2xf
Y2xpZW50KiBjbGllbnQsIHZvaWQqIGRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90IGlk
KQoreworICAgIFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gc3RhdGljX2Nhc3Q8V2F5
bGFuZENvbXBvc2l0b3IqPihkYXRhKTs7CisgICAgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJj
ZSA9IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF93a2d0a19pbnRlcmZhY2UsIDEsIGlk
KTsKKyAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsICZ3a2d0a0lu
dGVyZmFjZSwgY29tcG9zaXRvciwgMCk7Cit9CisKIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6Omlu
aXRpYWxpemUoKQogewogICAgIC8vIENyZWF0ZSB0aGUgbmVzdGVkIGRpc3BsYXkKQEAgLTQzNiw2
ICs1MjgsMTMgQEAgYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBCaW5kIHRoZSB3ZWJraXRndGsgcHJvdG9j
b2wgZXh0ZW5zaW9uCisgICAgbV9kaXNwbGF5LT53a2d0a0dsb2JhbCA9IHdsX2dsb2JhbF9jcmVh
dGUobV9kaXNwbGF5LT5jaGlsZERpc3BsYXksICZ3bF93a2d0a19pbnRlcmZhY2UsIDEsIHRoaXMs
IHdrZ3RrQmluZCk7CisgICAgaWYgKCFtX2Rpc3BsYXktPndrZ3RrR2xvYmFsKSB7CisgICAgICAg
IGdfd2FybmluZygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgcmVnaXN0ZXIg
d2Via2l0Z3RrIGdsb2JhbCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAg
aWYgKCFlZ2xCaW5kRGlzcGxheShtX2Rpc3BsYXktPmVnbERpc3BsYXksIG1fZGlzcGxheS0+Y2hp
bGREaXNwbGF5KSkgewogICAgICAgICBnX3dhcm5pbmcoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0
b3IgY291bGQgbm90IGJpbmQgbmVzdGVkIGRpc3BsYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNDY2LDYyICs1NjUsNzggQEAgV2F5bGFuZENvbXBvc2l0b3IqIFdheWxhbmRDb21wb3Np
dG9yOjppbnN0YW5jZSgpCiAKIFdheWxhbmRDb21wb3NpdG9yOjpXYXlsYW5kQ29tcG9zaXRvcigp
CiAgICAgOiBtX2Rpc3BsYXkoMCkKLSAgICAsIG1fc3VyZmFjZSgwKQotICAgICwgbV93aWRnZXQo
MCkKIHsKKyAgICB3bF9saXN0X2luaXQoJm1fc3VyZmFjZXMpOwogfQogCiBXYXlsYW5kQ29tcG9z
aXRvcjo6fldheWxhbmRDb21wb3NpdG9yKCkKIHsKLSAgICBpZiAobV9zdXJmYWNlKQotICAgICAg
ICBkb0Rlc3Ryb3lOZXN0ZWRTdXJmYWNlKG1fc3VyZmFjZSk7CisgICAgc3RydWN0IE5lc3RlZFN1
cmZhY2UgKnN1cmZhY2UsICpuZXh0OworICAgIHdsX2xpc3RfZm9yX2VhY2hfc2FmZShzdXJmYWNl
LCBuZXh0LCAmbV9zdXJmYWNlcywgbGluaykKKyAgICAgICAgZG9EZXN0cm95TmVzdGVkU3VyZmFj
ZShzdXJmYWNlKTsKKyAgICB3bF9saXN0X2luaXQoJm1fc3VyZmFjZXMpOwogCiAgICAgaWYgKG1f
ZGlzcGxheSkKICAgICAgICAgZGVzdHJveU5lc3RlZERpc3BsYXkobV9kaXNwbGF5KTsKIH0KIAot
Ly8gRklYTUU6IEZvciBub3cgd2Ugb25seSBzdXBwb3J0IG9uZSB3aWRnZXQvc3VyZmFjZSwgaW4g
dGhlIGZ1dHVyZQotLy8gd2Ugc2hvdWxkIGJlIGFibGUgdG8gbWFwIG11bHRpcGxlIHdpZGdldHMg
dG8gbXVsdGlwbGUgc3VyZmFjZXMKIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmFkZFdpZGdldChH
dGtXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAobV93aWRnZXQpCi0gICAgICAgIGdfd2Fybmlu
ZygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBvbmx5IHN1cHBvcnRzIG9uZSB3aWRnZXQuIik7
Ci0gICAgbV93aWRnZXQgPSB3aWRnZXQ7CisgICAgc3RhdGljIGludCBuZXh0V2lkZ2V0SWQgPSAw
OworICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKHdpZGdldCksICJ3YXlsYW5kLWNvbXBv
c2l0b3Itd2lkZ2V0LWlkIiwgR0lOVF9UT19QT0lOVEVSKCsrbmV4dFdpZGdldElkKSk7CisgICAg
c2V0U3VyZmFjZUZvcldpZGdldCh0aGlzLCB3aWRnZXQsIDApOwogfQogCi0vLyBGSVhNRTogRm9y
IG5vdyB3ZSBvbmx5IHN1cHBvcnQgb25lIHdpZGdldC9zdXJmYWNlLCBpbiB0aGUgZnV0dXJlCi0v
LyB3ZSBzaG91bGQgYmUgYWJsZSB0byBtYXAgbXVsdGlwbGUgd2lkZ2V0cyB0byBtdWx0aXBsZSBz
dXJmYWNlcwotY2Fpcm9fc3VyZmFjZV90KiBXYXlsYW5kQ29tcG9zaXRvcjo6Y2Fpcm9TdXJmYWNl
Rm9yV2lkZ2V0KEd0a1dpZGdldCAqd2lkZ2V0KQoraW50IFdheWxhbmRDb21wb3NpdG9yOjpnZXRX
aWRnZXRJZChHdGtXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAod2lkZ2V0ICE9IG1fd2lkZ2V0
IHx8ICFtX3N1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3N1cmZhY2Ut
PmNhaXJvU3VyZmFjZTsKKyAgICByZXR1cm4gR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9k
YXRhKEdfT0JKRUNUKHdpZGdldCksICJ3YXlsYW5kLWNvbXBvc2l0b3Itd2lkZ2V0LWlkIikpOwog
fQogCi12b2lkIFdheWxhbmRDb21wb3NpdG9yOjpuZXh0RnJhbWUoKQorc3RydWN0IE5lc3RlZFN1
cmZhY2UqIFdheWxhbmRDb21wb3NpdG9yOjpnZXRTdXJmYWNlRm9yV2lkZ2V0KFdheWxhbmRDb21w
b3NpdG9yKiBjb21wb3NpdG9yLCBHdGtXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIW1fc3Vy
ZmFjZSkKLSAgICAgICAgcmV0dXJuOworICAgIHJldHVybiBjb21wb3NpdG9yLT5tX3dpZGdldEhh
c2hNYXAuZ2V0KHdpZGdldCk7Cit9CiAKLSAgICAvLyBGSVhNRTogV2hlbiB3ZSBzdXBwb3J0IG11
bHRpcGxlIHN1cmZhY2VzL3dpZGdldHMgd2UgcHJvYmFibHkgd2FudCB0byByZXF1ZXN0Ci0gICAg
Ly8gdGhlIG5leHQgZnJhbWUgZm9yIGEgc3BlY2lmaWMgd2lkZ2V0IG9ubHkgc28gd2UgY2FuIHRo
cm90dGxlIGZyYW1lIGNhbGxiYWNrcwotICAgIC8vIGZvciB0aGF0IHN1cmZhY2UgYWxvbmUKK3Zv
aWQgV2F5bGFuZENvbXBvc2l0b3I6OnNldFN1cmZhY2VGb3JXaWRnZXQoV2F5bGFuZENvbXBvc2l0
b3IqIGNvbXBvc2l0b3IsIEd0a1dpZGdldCogd2lkZ2V0LCBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSog
c3VyZmFjZSkKK3sKKyAgICAvLyBBc3NvY2lhdGUgdGhlIG5ldyBzdXJmYWNlIHdpdGggdGhlIHdp
ZGdldCwgdGhlIGNsaWVudCBpcyByZXNwb25zaWJsZQorICAgIC8vIGZvciBkZXN0cm95aW5nIGFu
eSBwcmV2aW91cyBzdXJmYWNlIGNyZWF0ZWQgZm9yIHRoaXMgd2lkZ2V0CisgICAgY29tcG9zaXRv
ci0+bV93aWRnZXRIYXNoTWFwLnNldCh3aWRnZXQsIHN1cmZhY2UpOworICAgIGlmIChzdXJmYWNl
KQorICAgICAgICBzdXJmYWNlLT53aWRnZXQgPSB3aWRnZXQ7Cit9CiAKLSAgICAvLyBQcm9jZXNz
IGZyYW1lIGNhbGxiYWNrcyBmb3IgdGhlIHN1cmZhY2UKLSAgICBzdHJ1Y3QgTmVzdGVkRnJhbWVD
YWxsYmFjayAqbmMsICpuZXh0OwotICAgIHdsX2xpc3RfZm9yX2VhY2hfc2FmZSAobmMsIG5leHQs
ICZtX3N1cmZhY2UtPmZyYW1lQ2FsbGJhY2tMaXN0LCBsaW5rKSB7Ci0gICAgICAgIHdsX2NhbGxi
YWNrX3NlbmRfZG9uZSAobmMtPnJlc291cmNlLCAwKTsKLSAgICAgICAgd2xfcmVzb3VyY2VfZGVz
dHJveSAobmMtPnJlc291cmNlKTsKK0d0a1dpZGdldCogV2F5bGFuZENvbXBvc2l0b3I6OmdldFdp
ZGdldEJ5SWQoV2F5bGFuZENvbXBvc2l0b3IqIGNvbXBvc2l0b3IsIGludCBpZCkKK3sKKyAgICBm
b3IgKEhhc2hNYXA8R3RrV2lkZ2V0Kiwgc3RydWN0IE5lc3RlZFN1cmZhY2UqPjo6aXRlcmF0b3Ig
aXQgPSBjb21wb3NpdG9yLT5tX3dpZGdldEhhc2hNYXAuYmVnaW4oKTsgaXQgIT0gY29tcG9zaXRv
ci0+bV93aWRnZXRIYXNoTWFwLmVuZCgpOyArK2l0KSB7CisgICAgICAgIEd0a1dpZGdldCogd2lk
Z2V0ID0gaXQtPmtleTsKKyAgICAgICAgaWYgKGlkID09IEdQT0lOVEVSX1RPX0lOVChnX29iamVj
dF9nZXRfZGF0YShHX09CSkVDVCh3aWRnZXQpLCAid2F5bGFuZC1jb21wb3NpdG9yLXdpZGdldC1p
ZCIpKSkKKyAgICAgICAgICAgIHJldHVybiB3aWRnZXQ7CiAgICAgfQorICAgIHJldHVybiAwOwor
fQogCi0gICAgd2xfbGlzdF9pbml0ICgmbV9zdXJmYWNlLT5mcmFtZUNhbGxiYWNrTGlzdCk7Ci0g
ICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzIChtX2Rpc3BsYXktPmNoaWxkRGlzcGxheSk7Citj
YWlyb19zdXJmYWNlX3QqIFdheWxhbmRDb21wb3NpdG9yOjpjYWlyb1N1cmZhY2VGb3JXaWRnZXQo
R3RrV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIHN1cmZhY2Ug
PSBnZXRTdXJmYWNlRm9yV2lkZ2V0KHRoaXMsIHdpZGdldCk7CisgICAgcmV0dXJuIHN1cmZhY2Ug
PyBzdXJmYWNlLT5jYWlyb1N1cmZhY2UgOiAwOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9y
OjpuZXh0RnJhbWUoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgc3RydWN0IE5lc3RlZFN1cmZh
Y2UqIHN1cmZhY2UgPSBnZXRTdXJmYWNlRm9yV2lkZ2V0KHRoaXMsIHdpZGdldCk7CisgICAgaWYg
KCFzdXJmYWNlKQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZWxlYXNlIHRoZSBsYXN0IGJ1
ZmZlciBhdHRhY2hlZCBmb3IgdGhpcyBzdXJmYWNlCi0gICAgaWYgKG1fc3VyZmFjZS0+YnVmZmVy
UmVzb3VyY2UpIHsKLSAgICAgICAgd2xfcmVzb3VyY2VfcXVldWVfZXZlbnQgKG1fc3VyZmFjZS0+
YnVmZmVyUmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNFKTsKLSAgICAgICAgbV9zdXJmYWNlLT5i
dWZmZXJSZXNvdXJjZSA9IDA7CisgICAgLy8gUHJvY2VzcyBmcmFtZSBjYWxsYmFja3MgZm9yIHRo
ZSBzdXJmYWNlCisgICAgc3RydWN0IE5lc3RlZEZyYW1lQ2FsbGJhY2sgKm5jLCAqbmV4dDsKKyAg
ICB3bF9saXN0X2Zvcl9lYWNoX3NhZmUobmMsIG5leHQsICZzdXJmYWNlLT5mcmFtZUNhbGxiYWNr
TGlzdCwgbGluaykgeworICAgICAgICB3bF9jYWxsYmFja19zZW5kX2RvbmUobmMtPnJlc291cmNl
LCAwKTsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShuYy0+cmVzb3VyY2UpOwogICAgIH0K
KworICAgIHdsX2xpc3RfaW5pdCgmc3VyZmFjZS0+ZnJhbWVDYWxsYmFja0xpc3QpOworICAgIHds
X2Rpc3BsYXlfZmx1c2hfY2xpZW50cyhtX2Rpc3BsYXktPmNoaWxkRGlzcGxheSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmgKaW5kZXggYTM1ODNiMi4uZWZhNmIxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKQEAgLTQzLDQyICs0Myw2
MCBAQAogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KIAorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKICNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdHJ1Y3QgTmVzdGVkU3VyZmFjZTsKIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yOwogCiAv
LyBOZXN0ZWQgY29tcG9zaXRvciBkaXNwbGF5CiBzdHJ1Y3QgTmVzdGVkRGlzcGxheSB7Ci0gIEdk
a0Rpc3BsYXkqIGdka0Rpc3BsYXk7ICAgICAgICAgICAgICAgLy8gR2RrIGRpc3BsYXkKLSAgc3Ry
dWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheTsgICAgICAgICAvLyBNYWluIFdheWxhbmQgZGlzcGxh
eQotICBzdHJ1Y3Qgd2xfZGlzcGxheSogY2hpbGREaXNwbGF5OyAgICAgIC8vIE5lc3RlZCBkaXNw
bGF5Ci0gIEVHTERpc3BsYXkgZWdsRGlzcGxheTsgICAgICAgICAgICAgICAgLy8gRUdMIGRpc3Bs
YXkKLSAgRUdMQ29uZmlnIGVnbENvbmZpZzsgICAgICAgICAgICAgICAgICAvLyBFR0wgY29uZmln
dXJhdGlvbgotICBFR0xDb250ZXh0IGVnbEN0eDsgICAgICAgICAgICAgICAgICAgIC8vIEVHTCBj
b250ZXh0Ci0gIGNhaXJvX2RldmljZV90KiBlZ2xEZXZpY2U7ICAgICAgICAgICAgLy8gRUdMIGNh
aXJvIGRldmljZQotICBzdHJ1Y3Qgd2xfZ2xvYmFsKiB3bEdsb2JhbDsgICAgICAgICAgIC8vIFdh
eWxhbmQgZ2xvYmFsCi0gIEdTb3VyY2UqIGV2ZW50U291cmNlOyAgICAgICAgICAgICAgICAgLy8g
RGlzcGxheSBldmVudCBzb3VyY2UKKyAgICBHZGtEaXNwbGF5KiBnZGtEaXNwbGF5OyAgICAgICAg
ICAgICAgIC8vIEdkayBkaXNwbGF5CisgICAgc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheTsg
ICAgICAgICAvLyBNYWluIFdheWxhbmQgZGlzcGxheQorICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBj
aGlsZERpc3BsYXk7ICAgICAgLy8gTmVzdGVkIGRpc3BsYXkKKyAgICBFR0xEaXNwbGF5IGVnbERp
c3BsYXk7ICAgICAgICAgICAgICAgIC8vIEVHTCBkaXNwbGF5CisgICAgRUdMQ29uZmlnIGVnbENv
bmZpZzsgICAgICAgICAgICAgICAgICAvLyBFR0wgY29uZmlndXJhdGlvbgorICAgIEVHTENvbnRl
eHQgZWdsQ3R4OyAgICAgICAgICAgICAgICAgICAgLy8gRUdMIGNvbnRleHQKKyAgICBjYWlyb19k
ZXZpY2VfdCogZWdsRGV2aWNlOyAgICAgICAgICAgIC8vIEVHTCBjYWlybyBkZXZpY2UKKyAgICBz
dHJ1Y3Qgd2xfZ2xvYmFsKiB3bEdsb2JhbDsgICAgICAgICAgIC8vIFdheWxhbmQgZGlzcGxheSBn
bG9iYWwKKyAgICBzdHJ1Y3Qgd2xfZ2xvYmFsKiB3a2d0a0dsb2JhbDsgICAgICAgIC8vIFdheWxh
bmQgd2Via2l0Z3RrIGludGVyZmFjZSBnbG9iYWwKKyAgICBHU291cmNlKiBldmVudFNvdXJjZTsg
ICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgZXZlbnQgc291cmNlCit9OworCitzdHJ1Y3QgTmVz
dGVkQnVmZmVyIHsKKyAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlOworICAgIHN0cnVj
dCB3bF9zaWduYWwgZGVzdHJveVNpZ25hbDsKKyAgICBzdHJ1Y3Qgd2xfbGlzdGVuZXIgZGVzdHJv
eUxpc3RlbmVyOworICAgIHVpbnQzMl90IGJ1c3lDb3VudDsKK307CisKK3N0cnVjdCBOZXN0ZWRC
dWZmZXJSZWZlcmVuY2UgeworICAgIHN0cnVjdCBOZXN0ZWRCdWZmZXIqIGJ1ZmZlcjsKKyAgICBz
dHJ1Y3Qgd2xfbGlzdGVuZXIgZGVzdHJveUxpc3RlbmVyOwogfTsKIAogLy8gTmVzdGVkIFdheWxh
bmQgY29tcG9zaXRvciBzdXJmYWNlCiBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSB7Ci0gIFdheWxhbmRD
b21wb3NpdG9yKiBjb21wb3NpdG9yOyAgICAgICAgLy8gTmVzdGVkIGNvbXBvc2l0b3IgaW5zdGFu
Y2UKLSAgc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXJSZXNvdXJjZTsgICAvLyBMYXN0IGF0dGFj
aGVkIGJ1ZmZlcgotICBHTHVpbnQgdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEdM
IHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlCi0gIEVHTEltYWdlS0hSKiBpbWFnZTsgICAgICAgICAg
ICAgICAgICAgLy8gRUdMIEltYWdlIGZvciB0ZXh0dXJlCi0gIGNhaXJvX3N1cmZhY2VfdCogY2Fp
cm9TdXJmYWNlOyAgICAgICAgLy8gQ2Fpcm8gc3VyZmFjZSBmb3IgR0wgdGV4dHVyZQotICBzdHJ1
Y3Qgd2xfbGlzdCBmcmFtZUNhbGxiYWNrTGlzdDsgICAgIC8vIFBlbmRpbmcgZnJhbWUgY2FsbGJh
Y2sgbGlzdAorICAgIFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yOyAgICAgICAgLy8gTmVz
dGVkIGNvbXBvc2l0b3IgaW5zdGFuY2UKKyAgICBzdHJ1Y3QgTmVzdGVkQnVmZmVyKiBidWZmZXI7
ICAgICAgICAgIC8vIExhc3QgYXR0YWNoZWQgYnVmZmVyIChwZW5kaW5nIGJ1ZmZlcikKKyAgICBH
THVpbnQgdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEdMIHRleHR1cmUgZm9yIHRo
ZSBzdXJmYWNlCisgICAgRUdMSW1hZ2VLSFIqIGltYWdlOyAgICAgICAgICAgICAgICAgICAvLyBF
R0wgSW1hZ2UgZm9yIHRleHR1cmUKKyAgICBjYWlyb19zdXJmYWNlX3QqIGNhaXJvU3VyZmFjZTsg
ICAgICAgIC8vIENhaXJvIHN1cmZhY2UgZm9yIEdMIHRleHR1cmUKKyAgICBzdHJ1Y3Qgd2xfbGlz
dCBmcmFtZUNhbGxiYWNrTGlzdDsgICAgIC8vIFBlbmRpbmcgZnJhbWUgY2FsbGJhY2sgbGlzdAor
ICAgIEd0a1dpZGdldCogd2lkZ2V0OyAgICAgICAgICAgICAgICAgICAgLy8gd2lkZ2V0IGFzc29j
aWF0ZWQgd2l0aCB0aGlzIHN1cmZhY2UKKyAgICBzdHJ1Y3Qgd2xfbGlzdGVuZXIgYnVmZmVyRGVz
dHJveUxpc3RlbmVyOyAvLyBQZW5kaW5nIGJ1ZmZlciBkZXN0cm95IGxpc3RlbmVyCisgICAgc3Ry
dWN0IE5lc3RlZEJ1ZmZlclJlZmVyZW5jZSBidWZmZXJSZWY7ICAgLy8gQ3VycmVudCBidWZmZXIK
KyAgICBzdHJ1Y3Qgd2xfbGlzdCBsaW5rOwogfTsKIAogLy8gTGlzdCBvZiBwZW5kaW5nIGZyYW1l
IGNhbGxiYWNrcyBvbiBhIG5lc3RlZCBzdXJmYWNlCiBzdHJ1Y3QgTmVzdGVkRnJhbWVDYWxsYmFj
ayB7Ci0gIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2U7Ci0gIHN0cnVjdCB3bF9saXN0IGxp
bms7CisgICAgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZTsKKyAgICBzdHJ1Y3Qgd2xfbGlz
dCBsaW5rOwogfTsKIAogY2xhc3MgV2F5bGFuZENvbXBvc2l0b3IgewpAQCAtODgsOSArMTA2LDEz
IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYktpdCBpbnRlZ3JhdGlvbgogICAgIHZvaWQgYWRkV2lk
Z2V0KEd0a1dpZGdldCopOwotICAgIHZvaWQgbmV4dEZyYW1lKCk7CisgICAgaW50IGdldFdpZGdl
dElkKEd0a1dpZGdldCopOworICAgIHZvaWQgbmV4dEZyYW1lKEd0a1dpZGdldCopOwogICAgIGNh
aXJvX3N1cmZhY2VfdCogY2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCopOwogCisgICAg
Ly8gV2F5bGFuZCBXZWJraXQgZXh0ZW5zaW9uIGludGVyZmFjZQorICAgIHN0YXRpYyB2b2lkIHdr
Z3RrU2V0U3VyZmFjZUZvcldpZGdldChzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291
cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKiwgdWludDMyX3QpOworCiAgICAgLy8gV2F5bGFuZCBj
b21wb3NpdG9yIGludGVyZmFjZQogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVN1cmZhY2Uoc3RydWN0
IHdsX2NsaWVudCosIHdsX3Jlc291cmNlKiwgdWludDMyX3QpOwogICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVJlZ2lvbihzdHJ1Y3Qgd2xfY2xpZW50Kiwgd2xfcmVzb3VyY2UqLCB1aW50MzJfdCk7CkBA
IC0xMTcsMTcgKzEzOSwzMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lOZXN0
ZWREaXNwbGF5KHN0cnVjdCBOZXN0ZWREaXNwbGF5Kik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7
CiAKLSAgICAvLyBXYXlsYW5kIGNhbGxiYWNrcworICAgIC8vIEdsb2JhbCBiaW5kaW5nCisgICAg
c3RhdGljIHZvaWQgd2tndGtCaW5kKHN0cnVjdCB3bF9jbGllbnQqLCB2b2lkKiwgdWludDMyX3Qs
IHVpbnQzMl90KTsKICAgICBzdGF0aWMgdm9pZCBjb21wb3NpdG9yQmluZChzdHJ1Y3Qgd2xfY2xp
ZW50Kiwgdm9pZCosIHVpbnQzMl90LCB1aW50MzJfdCk7CisKKyAgICAvLyBXaWRnZXQvU3VyZmFj
ZSBtYXBwaW5nCisgICAgc3RhdGljIHN0cnVjdCBOZXN0ZWRTdXJmYWNlKiBnZXRTdXJmYWNlRm9y
V2lkZ2V0KFdheWxhbmRDb21wb3NpdG9yKiwgR3RrV2lkZ2V0Kik7CisgICAgc3RhdGljIHZvaWQg
c2V0U3VyZmFjZUZvcldpZGdldChXYXlsYW5kQ29tcG9zaXRvciosIEd0a1dpZGdldCosIHN0cnVj
dCBOZXN0ZWRTdXJmYWNlKik7CisgICAgc3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0QnlJZChX
YXlsYW5kQ29tcG9zaXRvciosIGludCk7CisKKyAgICAvLyBTdXJmYWNlIG1hbmFnZW1lbnQKICAg
ICBzdGF0aWMgdm9pZCBkb0Rlc3Ryb3lOZXN0ZWRTdXJmYWNlKHN0cnVjdCBOZXN0ZWRTdXJmYWNl
Kik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveU5lc3RlZFN1cmZhY2UgKHN0cnVjdCB3bF9yZXNv
dXJjZSopOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lOZXN0ZWRGcmFtZUNhbGxiYWNrIChzdHJ1
Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95TmVzdGVkU3VyZmFjZShz
dHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95TmVzdGVkRnJhbWVD
YWxsYmFjayhzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKworICAgIC8vIEJ1ZmZlciBtYW5hZ2VtZW50
CisgICAgc3RhdGljIHZvaWQgbmVzdGVkQnVmZmVyRGVzdHJveUhhbmRsZXIoc3RydWN0IHdsX2xp
c3RlbmVyKiwgdm9pZCopOworICAgIHN0YXRpYyBzdHJ1Y3QgTmVzdGVkQnVmZmVyKiBuZXN0ZWRC
dWZmZXJGcm9tUmVzb3VyY2Uoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgc3RhdGljIHZvaWQg
c3VyZmFjZUhhbmRsZVBlbmRpbmdCdWZmZXJEZXN0cm95KHN0cnVjdCB3bF9saXN0ZW5lciosIHZv
aWQqKTsKKyAgICBzdGF0aWMgdm9pZCBuZXN0ZWRCdWZmZXJSZWZlcmVuY2Uoc3RydWN0IE5lc3Rl
ZEJ1ZmZlclJlZmVyZW5jZSosIHN0cnVjdCBOZXN0ZWRCdWZmZXIqKTsKKyAgICBzdGF0aWMgdm9p
ZCBuZXN0ZWRCdWZmZXJSZWZlcmVuY2VIYW5kbGVEZXN0cm95KHN0cnVjdCB3bF9saXN0ZW5lcios
IHZvaWQqKTsKIAorICAgIC8vIEdsb2JhbCBpbnN0YW5jZQogICAgIHN0YXRpYyBXYXlsYW5kQ29t
cG9zaXRvciogbV9pbnN0YW5jZTsKIAogICAgIHN0cnVjdCBOZXN0ZWREaXNwbGF5KiBtX2Rpc3Bs
YXk7Ci0gICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIG1fc3VyZmFjZTsKLSAgICBHdGtXaWRnZXQq
IG1fd2lkZ2V0OworICAgIEhhc2hNYXA8R3RrV2lkZ2V0Kiwgc3RydWN0IE5lc3RlZFN1cmZhY2Uq
PiBtX3dpZGdldEhhc2hNYXA7CisgICAgc3RydWN0IHdsX2xpc3QgbV9zdXJmYWNlczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
V2F5bGFuZERpc3BsYXkuY3BwCmluZGV4IGU1NzI5YzAuLjBhNTU3YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmNwcApAQCAtNDQsNiArNDQsOSBA
QCB2b2lkIFdheWxhbmREaXNwbGF5OjpyZWdpc3RyeUhhbmRsZUdsb2JhbCh2b2lkICpkYXRhLCBz
dHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdAogICAgIGlmIChzdHJjbXAoaW50ZXJmYWNlLCAid2xf
Y29tcG9zaXRvciIpID09IDApCiAgICAgICAgIGRpc3BsYXktPm1fY29tcG9zaXRvciA9CiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3JlZ2lzdHJ5X2Jp
bmQocmVnaXN0cnksIG5hbWUsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSkpOworICAgIGVs
c2UgaWYgKHN0cmNtcChpbnRlcmZhY2UsICJ3bF93a2d0ayIpID09IDApCisgICAgICAgIGRpc3Bs
YXktPm1fd2tndGsgPQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RydWN0IHdsX3drZ3RrKj4o
d2xfcmVnaXN0cnlfYmluZChyZWdpc3RyeSwgbmFtZSwgJndsX3drZ3RrX2ludGVyZmFjZSwgMSkp
OwogfQogCiB2b2lkIFdheWxhbmREaXNwbGF5OjpyZWdpc3RyeUhhbmRsZUdsb2JhbFJlbW92ZSh2
b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LCB1aW50MzJfdCBuYW1lKQpA
QCAtODIsMTEgKzg1LDEyIEBAIFdheWxhbmREaXNwbGF5OjpXYXlsYW5kRGlzcGxheShzdHJ1Y3Qg
d2xfZGlzcGxheSogd2xEaXNwbGF5KQogICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1fZGlzcGxh
eSk7CiB9CiAKLVBhc3NPd25QdHI8V2F5bGFuZFN1cmZhY2U+IFdheWxhbmREaXNwbGF5OjpjcmVh
dGVTdXJmYWNlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK1Bhc3NPd25QdHI8V2F5bGFuZFN1cmZh
Y2U+IFdheWxhbmREaXNwbGF5OjpjcmVhdGVTdXJmYWNlKGludCB3aWR0aCwgaW50IGhlaWdodCwg
aW50IHdpZGdldElkKQogewotICAgIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlID0gd2xfY29t
cG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0b3IpOworICAgIHN0cnVjdCB3bF9zdXJm
YWNlKiBzdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0b3Ip
OwogICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlID0gd2xfZWdsX3dpbmRvd19jcmVhdGUo
c3VyZmFjZSwgd2lkdGgsIGhlaWdodCk7CiAgICAgT3duUHRyPFdheWxhbmRTdXJmYWNlPiB3bFN1
cmZhY2UgPSBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2UsIG5hdGl2ZSk7CisgICAgd2xf
d2tndGtfc2V0X3N1cmZhY2VfZm9yX3dpZGdldChtX3drZ3RrLCBzdXJmYWNlLCB3aWRnZXRJZCk7
CiAgICAgcmV0dXJuIHdsU3VyZmFjZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmgKaW5kZXggMGJkY2NjZS4uMjA5MDFlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmgKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgogCiAjaW5jbHVkZSAiV2F5bGFu
ZFN1cmZhY2UuaCIKKyNpbmNsdWRlICJXYXlsYW5kV2Via2l0R3RrQ2xpZW50UHJvdG9jb2wuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCByZWdpc3RyeUhhbmRsZUdsb2JhbFJlbW92ZSh2b2lkKiwgc3RydWN0IHdsX3Jl
Z2lzdHJ5KiwgdWludDMyX3QpOwogCiAgICAgLy8gRGlzcGxheSBpbnRlcmZhY2UKLSAgICBQYXNz
T3duUHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKGludCwgaW50KTsKKyAgICBQYXNz
T3duUHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKGludCwgaW50LCBpbnQpOwogICAg
IHZvaWQgZGVzdHJveVN1cmZhY2UoV2F5bGFuZFN1cmZhY2UqKTsKICAgICBzdHJ1Y3Qgd2xfZGlz
cGxheSogbmF0aXZlRGlzcGxheSgpIHsgcmV0dXJuIG1fZGlzcGxheTsgfQogCkBAIC02Miw2ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG1fZGlzcGxheTsKICAgICBz
dHJ1Y3Qgd2xfcmVnaXN0cnkqIG1fcmVnaXN0cnk7CiAgICAgc3RydWN0IHdsX2NvbXBvc2l0b3Iq
IG1fY29tcG9zaXRvcjsKKyAgICBzdHJ1Y3Qgd2xfd2tndGsqIG1fd2tndGs7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvd2wtd2tndGsueG1sIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3dsLXdrZ3RrLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jMjY0ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL3dsLXdrZ3RrLnhtbApAQCAtMCwwICsxLDM3IEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb3RvY29sIG5hbWU9IndsX3drZ3RrIj4K
KworICA8Y29weXJpZ2h0PgorICAgIENvcHlyaWdodCDCqSAyMDEzIElnYWxpYSBTLkwuCisKKyAg
ICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0
aGlzCisgICAgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBp
cyBoZXJlYnkgZ3JhbnRlZAorICAgIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgorICAgIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90
aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgorICAgIG5vdGljZSBh
cHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgor
ICAgIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBw
dWJsaWNpdHkKKyAgICBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYywKKyAgICB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29w
eXJpZ2h0IGhvbGRlcnMgbWFrZSBubworICAgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3Vp
dGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisgICAgcHVycG9zZS4gIEl0IGlzIHBy
b3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKyAgICB3YXJyYW50eS4K
KworICAgIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRI
IFJFR0FSRCBUTyBUSElTCisgICAgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKKyAgICBGSVRORVNTLCBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAgICBTUEVDSUFM
LCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKyAgICBX
SEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdI
RVRIRVIgSU4KKyAgICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIg
VE9SVElPVVMgQUNUSU9OLAorICAgIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCisgICAgVEhJUyBTT0ZUV0FSRS4KKyAgPC9jb3B5
cmlnaHQ+CisKKyAgPGludGVyZmFjZSBuYW1lPSJ3bF93a2d0ayIgdmVyc2lvbj0iMSI+CisgICAg
PHJlcXVlc3QgbmFtZT0ic2V0X3N1cmZhY2VfZm9yX3dpZGdldCI+CisgICAgICA8YXJnIG5hbWU9
InN1cmZhY2UiIHR5cGU9Im9iamVjdCIgaW50ZXJmYWNlPSJ3bF9zdXJmYWNlIi8+CisgICAgICA8
YXJnIG5hbWU9ImlkIiB0eXBlPSJ1aW50Ii8+CisgICAgPC9yZXF1ZXN0PgorCisgIDwvaW50ZXJm
YWNlPgorCis8L3Byb3RvY29sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDlmZTk0NWIuLjNjOTg4M2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIGJvb2wgd2Via2l0V2ViVmll
d1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKgog
CiAjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1dBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQogICAgIGlmIChkaXNw
bGF5VHlwZSA9PSBESVNQTEFZX1RZUEVfV0FZTEFORCkgewotICAgICAgICBwcml2LT53YXlsYW5k
Q29tcG9zaXRvci0+bmV4dEZyYW1lKCk7CisgICAgICAgIHByaXYtPndheWxhbmRDb21wb3NpdG9y
LT5uZXh0RnJhbWUoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogICAgIH0KICNlbmRpZgogCkBA
IC0xMDAxLDkgKzEwMDEsMTkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBXZWJDb24KICAgICBwcml2LT5w
YWdlUHJveHkgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKCpwcml2LT5wYWdlQ2xpZW50LCBwYWdl
R3JvdXApOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAotI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKLSAg
ICBpZiAocHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQocHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+
d2luZG93SWQoKSk7CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIERpc3BsYXlUeXBl
IGRpc3BsYXlUeXBlID0gZ2V0RGlzcGxheVR5cGUoKTsKKyAgICBpZiAoZGlzcGxheVR5cGUgPT0g
RElTUExBWV9UWVBFX1dBWUxBTkQpIHsKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5E
KSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9W
RVJTSU9OXzIpCisgICAgICAgIGlmIChwcml2LT53YXlsYW5kQ29tcG9zaXRvcikKKyAgICAgICAg
ICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHBy
aXYtPndheWxhbmRDb21wb3NpdG9yLT5nZXRXaWRnZXRJZChHVEtfV0lER0VUKHdlYmtpdFdlYlZp
ZXdCYXNlKSkpOworI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJ
TkdfWDExKQorICAgICAgICBpZiAocHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKKyAgICAgICAgICAg
IHByaXYtPnBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHByaXYt
PnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0lkKCkpOworI2VuZGlmCisgICAgfQogI2VuZGlmCiAK
ICAgICB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZVByZWZlcmVuY2VzKHdlYmtpdFdlYlZpZXdCYXNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDU2YTE4NjQuLmM5MTA5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcApAQCAtMTY0LDIwICsxNjQsMjEgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpp
bml0aWFsaXplKCkKICNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVk
KEdES19XSU5ET1dJTkdfV0FZTEFORCkKICAgICAgICAgLy8gUmVxdWVzdCBhIHdheWxhbmQgc3Vy
ZmFjZSBmcm9tIHRoZSBuZXN0ZWQgd2F5bGFuZCBjb21wb3NpdG9yCiAgICAgICAgIFdheWxhbmRE
aXNwbGF5KiBkaXNwbGF5ID0gV2F5bGFuZERpc3BsYXk6Omluc3RhbmNlKCk7Ci0gICAgICAgIG1f
d2xTdXJmYWNlID0gZGlzcGxheS0+Y3JlYXRlU3VyZmFjZSgxLCAxKTsKKyAgICAgICAgbV93bFN1
cmZhY2UgPSBkaXNwbGF5LT5jcmVhdGVTdXJmYWNlKDEsIDEsIG1fd2ViUGFnZS0+bmF0aXZlV2lu
ZG93SGFuZGxlKCkpOwogICAgICAgICBpZiAoIW1fd2xTdXJmYWNlKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIC8vIFJlc2l6ZSB0aGUgc3VyZmFjZSB0byBtYXRjaCB0aGUgc2l6ZSBv
ZiB0aGUgd2ViIHBhZ2UKICAgICAgICAgSW50U2l6ZSB3ZWJQYWdlU2l6ZSA9IG1fd2ViUGFnZS0+
c2l6ZSgpOwogICAgICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dsU3VyZmFjZS0+bmF0aXZl
V2luZG93SGFuZGxlKCksIHdlYlBhZ2VTaXplLndpZHRoKCksIHdlYlBhZ2VTaXplLmhlaWdodCgp
LCAwLCAwKTsKLQotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIG5vbi16ZXJvIHdpbmRvdyBo
YW5kbGUgc28gdGhhdCB3ZWJraXQgcmVhbGl6ZXMgd2UgYXJlIGdvb2QgdG8gZ28gZm9yIEFDLgot
ICAgICAgICAvLyBXZSBjYW4gcHJvYmFibHkgZmluZCBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8g
dGhpcyBmb3IgV2F5bGFuZAotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxl
ID0gbV93bFN1cmZhY2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpID8gMSA6IDA7CiAjZW5kaWYKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9IG1fd2Vi
UGFnZS0+bmF0aXZlV2luZG93SGFuZGxlKCk7CisgICAgfQorCisgICAgLy8gSW4gdGhlIGNhc2Ug
b2YgV2F5bGFuZCB0aGlzIGlzIG5vdCByZWFsbHkgYSBuYXRpdmUgd2luZG93IGhhbmRsZQorICAg
IC8vIGJ1dCBhbiBpbnRlcm5hbCBJRCBnZW5lcmF0ZWQgYnkgdGhlIG5lc3RlZCBjb21wb3NpdG9y
IGZvciB0aGUgd2lkZ2V0CisgICAgLy8gYmFja2VkIGJ5IHRoaXMgc3VyZmFjZS4gV2Ugb25seSBu
ZWVkIGl0IHRvIHRlbGwgV2ViS2l0IHRoYXQgd2UgYXJlCisgICAgLy8gZ29vZCB0byBnbyBmb3Ig
QUMgaGVyZQorICAgIG1fbGF5ZXJUcmVlQ29udGV4dC53aW5kb3dIYW5kbGUgPSBtX3dlYlBhZ2Ut
Pm5hdGl2ZVdpbmRvd0hhbmRsZSgpOwogCiAgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gZ2xDb250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotLSAKMS44LjMuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223442</attachid>
            <date>2014-02-07 02:58:07 -0800</date>
            <delta_ts>2016-08-17 00:28:30 -0700</delta_ts>
            <desc>Patch (multiple surfaces)</desc>
            <filename>multiple-surfaces.patch</filename>
            <type>text/plain</type>
            <size>34773</size>
            <attacher name="Iago Toral">itoral</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggM2Q5NGZlNS4uMmM2NjRhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTEsNSArMSwxMyBAQAogaW5jbHVkZSAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQogCisjaWYgVEFSR0VUX1dBWUxBTkQKK1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9XYXlsYW5kV2Via2l0R3RrJToKKwkkKEFNX1ZfR0VOKQorCSQoQU1fVl9h
dCl3YXlsYW5kLXNjYW5uZXIgc2VydmVyLWhlYWRlciA8ICQoV2ViQ29yZSkvcGxhdGZvcm0vZ3Rr
L3dsLXdrZ3RrLnhtbCA+ICQoV2ViQ29yZSkvcGxhdGZvcm0vZ3RrL1dheWxhbmRXZWJraXRHdGtT
ZXJ2ZXJQcm90b2NvbC5oCisJJChBTV9WX2F0KXdheWxhbmQtc2Nhbm5lciBjbGllbnQtaGVhZGVy
IDwgJChXZWJDb3JlKS9wbGF0Zm9ybS9ndGsvd2wtd2tndGsueG1sID4gJChXZWJDb3JlKS9wbGF0
Zm9ybS9ndGsvV2F5bGFuZFdlYmtpdEd0a0NsaWVudFByb3RvY29sLmgKKwkkKEFNX1ZfYXQpd2F5
bGFuZC1zY2FubmVyIGNvZGUgPCAkKFdlYkNvcmUpL3BsYXRmb3JtL2d0ay93bC13a2d0ay54bWwg
PiAkKFdlYkNvcmUpL3BsYXRmb3JtL2d0ay9XYXlsYW5kV2Via2l0R3RrUHJvdG9jb2wuYworI2Vu
ZGlmCisKIFdFQkNPUkVfQ1NTX1BST1BFUlRZX05BTUVTIDo9ICQoV2ViQ29yZSkvY3NzL0NTU1By
b3BlcnR5TmFtZXMuaW4KIFdFQkNPUkVfQ1NTX1ZBTFVFX0tFWVdPUkRTIDo9ICQoV2ViQ29yZSkv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMDJkYjBkZC4uYjg5N2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02
Mjk1LDcgKzYyOTUsMTAgQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XYXlsYW5kU3VyZmFjZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXls
YW5kU3VyZmFjZS5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRTdXJmYWNl
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kV2Via2l0R3RrU2VydmVy
UHJvdG9jb2wuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRXZWJraXRH
dGtDbGllbnRQcm90b2NvbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFu
ZFdlYmtpdEd0a1Byb3RvY29sLmMKIGVuZGlmICMgRU5EIFVTRV9PUEVOR0wKIGlmIFVTRV9FR0wK
IHdlYmNvcmVndGtfc291cmNlcyArPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCAzZThiZjJmLi42NjA3NTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAg
LTMxLDYgKzMxLDggQEAKIAogI2luY2x1ZGUgIldheWxhbmREaXNwbGF5RXZlbnRTb3VyY2UuaCIK
IAorI2luY2x1ZGUgIldheWxhbmRXZWJraXRHdGtTZXJ2ZXJQcm90b2NvbC5oIgorCiAjaW5jbHVk
ZSA8Z2RrL2dka3dheWxhbmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjUsNiArNjcs
NjcgQEAgc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0gRUdMX09QRU5HTF9FU19BUEk7CiBz
dGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0FQSTsKICNlbmRpZgogCit2
b2lkIFdheWxhbmRDb21wb3NpdG9yOjpuZXN0ZWRCdWZmZXJSZWZlcmVuY2VIYW5kbGVEZXN0cm95
KHN0cnVjdCB3bF9saXN0ZW5lciogbGlzdGVuZXIsIHZvaWQqIGRhdGEpCit7CisgICAgc3RydWN0
IE5lc3RlZEJ1ZmZlclJlZmVyZW5jZSogcmVmID0gMDsKKyAgICByZWYgPSB3bF9jb250YWluZXJf
b2YobGlzdGVuZXIsIHJlZiwgZGVzdHJveUxpc3RlbmVyKTsKKyAgICByZWYtPmJ1ZmZlciA9IDA7
Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6Om5lc3RlZEJ1ZmZlclJlZmVyZW5jZShzdHJ1
Y3QgTmVzdGVkQnVmZmVyUmVmZXJlbmNlKiByZWYsIHN0cnVjdCBOZXN0ZWRCdWZmZXIqIGJ1ZmZl
cikKK3sKKyAgICBpZiAoYnVmZmVyID09IHJlZi0+YnVmZmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAocmVmLT5idWZmZXIpIHsKKyAgICAgICAgcmVmLT5idWZmZXItPmJ1c3lDb3VudC0t
OworICAgICAgICBpZiAocmVmLT5idWZmZXItPmJ1c3lDb3VudCA9PSAwKQorICAgICAgICAgICAg
d2xfcmVzb3VyY2VfcXVldWVfZXZlbnQocmVmLT5idWZmZXItPnJlc291cmNlLCBXTF9CVUZGRVJf
UkVMRUFTRSk7CisgICAgICAgIHdsX2xpc3RfcmVtb3ZlKCZyZWYtPmRlc3Ryb3lMaXN0ZW5lci5s
aW5rKTsKKyAgICB9CisKKyAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgIGJ1ZmZlci0+YnVzeUNv
dW50Kys7CisgICAgICAgIHdsX3NpZ25hbF9hZGQoJmJ1ZmZlci0+ZGVzdHJveVNpZ25hbCwgJnJl
Zi0+ZGVzdHJveUxpc3RlbmVyKTsKKyAgICAgICAgcmVmLT5kZXN0cm95TGlzdGVuZXIubm90aWZ5
ID0gbmVzdGVkQnVmZmVyUmVmZXJlbmNlSGFuZGxlRGVzdHJveTsKKyAgICB9CisKKyAgICByZWYt
PmJ1ZmZlciA9IGJ1ZmZlcjsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZUhh
bmRsZVBlbmRpbmdCdWZmZXJEZXN0cm95KHN0cnVjdCB3bF9saXN0ZW5lciogbGlzdGVuZXIsIHZv
aWQqIGRhdGEpCit7CisgICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIHN1cmZhY2UgPSAwOworICAg
IHN1cmZhY2UgPSB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIHN1cmZhY2UsIGJ1ZmZlckRlc3Ry
b3lMaXN0ZW5lcik7CisgICAgc3VyZmFjZS0+YnVmZmVyID0gMDsKK30KKwordm9pZCBXYXlsYW5k
Q29tcG9zaXRvcjo6bmVzdGVkQnVmZmVyRGVzdHJveUhhbmRsZXIoc3RydWN0IHdsX2xpc3RlbmVy
KiBsaXN0ZW5lciwgdm9pZCogZGF0YSkKK3sKKyAgICBzdHJ1Y3QgTmVzdGVkQnVmZmVyKiBidWZm
ZXIgPSAwOworICAgIGJ1ZmZlciA9IHdsX2NvbnRhaW5lcl9vZihsaXN0ZW5lciwgYnVmZmVyLCBk
ZXN0cm95TGlzdGVuZXIpOworICAgIHdsX3NpZ25hbF9lbWl0KCZidWZmZXItPmRlc3Ryb3lTaWdu
YWwsIGJ1ZmZlcik7CisgICAgZ19mcmVlKGJ1ZmZlcik7Cit9CisKK3N0cnVjdCBOZXN0ZWRCdWZm
ZXIqIFdheWxhbmRDb21wb3NpdG9yOjpuZXN0ZWRCdWZmZXJGcm9tUmVzb3VyY2Uoc3RydWN0IHds
X3Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBzdHJ1Y3QgTmVzdGVkQnVmZmVyKiBidWZmZXI7
CisgICAgc3RydWN0IHdsX2xpc3RlbmVyKiBsaXN0ZW5lcjsKKworICAgIGxpc3RlbmVyID0gd2xf
cmVzb3VyY2VfZ2V0X2Rlc3Ryb3lfbGlzdGVuZXIocmVzb3VyY2UsIG5lc3RlZEJ1ZmZlckRlc3Ry
b3lIYW5kbGVyKTsKKyAgICBpZiAobGlzdGVuZXIpCisgICAgICAgIHJldHVybiB3bF9jb250YWlu
ZXJfb2YobGlzdGVuZXIsIChzdHJ1Y3QgTmVzdGVkQnVmZmVyKikwLCBkZXN0cm95TGlzdGVuZXIp
OworCisgICAgYnVmZmVyID0gZ19uZXcwKHN0cnVjdCBOZXN0ZWRCdWZmZXIsIDEpOworICAgIGJ1
ZmZlci0+cmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICB3bF9zaWduYWxfaW5pdCgmYnVmZmVyLT5k
ZXN0cm95U2lnbmFsKTsKKyAgICBidWZmZXItPmRlc3Ryb3lMaXN0ZW5lci5ub3RpZnkgPSBuZXN0
ZWRCdWZmZXJEZXN0cm95SGFuZGxlcjsKKyAgICB3bF9yZXNvdXJjZV9hZGRfZGVzdHJveV9saXN0
ZW5lcihyZXNvdXJjZSwgJmJ1ZmZlci0+ZGVzdHJveUxpc3RlbmVyKTsKKworICAgIHJldHVybiBi
dWZmZXI7Cit9CisKIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OnN1cHBvcnRzUmVxdWlyZWRFeHRl
bnNpb25zKEVHTERpc3BsYXkgZWdsRGlzcGxheSkKIHsKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2
ZSB0aGUgcmVxdWlyZWQgV2F5bGFuZCBFR0wgZXh0ZW5zaW9uCkBAIC0xOTQsMTEgKzI1NywxMiBA
QCBzdHJ1Y3QgTmVzdGVkRGlzcGxheSogV2F5bGFuZENvbXBvc2l0b3I6OmNyZWF0ZU5lc3RlZERp
c3BsYXkoKQogdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6ZGVzdHJveU5lc3RlZERpc3BsYXkoc3Ry
dWN0IE5lc3RlZERpc3BsYXkqIGRpc3BsYXkpCiB7CiAgICAgaWYgKGRpc3BsYXktPmNoaWxkRGlz
cGxheSkgewotICAgICAgICBpZiAoZGlzcGxheS0+ZXZlbnRTb3VyY2UpIHsKKyAgICAgICAgaWYg
KGRpc3BsYXktPmV2ZW50U291cmNlKQogICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKGdfc291
cmNlX2dldF9pZChkaXNwbGF5LT5ldmVudFNvdXJjZSkpOwotICAgICAgICB9CiAgICAgICAgIGlm
IChkaXNwbGF5LT53bEdsb2JhbCkKICAgICAgICAgICAgIHdsX2dsb2JhbF9kZXN0cm95KGRpc3Bs
YXktPndsR2xvYmFsKTsKKyAgICAgICAgaWYgKGRpc3BsYXktPndrZ3RrR2xvYmFsKQorICAgICAg
ICAgICAgd2xfZ2xvYmFsX2Rlc3Ryb3koZGlzcGxheS0+d2tndGtHbG9iYWwpOwogICAgICAgICB3
bF9kaXNwbGF5X2Rlc3Ryb3koZGlzcGxheS0+Y2hpbGREaXNwbGF5KTsKICAgICB9CiAgICAgc2h1
dGRvd25FR0woZGlzcGxheSk7CkBAIC0yMTksMTIgKzI4Myw3IEBAIHZvaWQgV2F5bGFuZENvbXBv
c2l0b3I6OnN1cmZhY2VEZXN0cm95KHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHds
X3Jlc291CiAKIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VBdHRhY2goc3RydWN0IHds
X2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xf
cmVzb3VyY2UqIGJ1ZmZlclJlc291cmNlLCBpbnQzMl90IHN4LCBpbnQzMl90IHN5KQogewotICAg
IGlmICghYnVmZmVyUmVzb3VyY2UpCi0gICAgICAgIHJldHVybjsKLQogICAgIHN0cnVjdCBOZXN0
ZWRTdXJmYWNlKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8c3RydWN0IE5lc3RlZFN1cmZhY2UqPih3
bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7Ci0gICAgaWYgKCFzdXJmYWNlKQot
ICAgICAgICByZXR1cm47CiAKICAgICBFR0xpbnQgZm9ybWF0OwogICAgIFdheWxhbmRDb21wb3Np
dG9yKiBjb21wb3NpdG9yID0gc3VyZmFjZS0+Y29tcG9zaXRvcjsKQEAgLTIzMyw4ICsyOTIsMTcg
QEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6c3VyZmFjZUF0dGFjaChzdHJ1Y3Qgd2xfY2xpZW50
KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXIKICAgICBpZiAoZm9ybWF0ICE9IEVHTF9URVhUVVJF
X1JHQiAmJiBmb3JtYXQgIT0gRUdMX1RFWFRVUkVfUkdCQSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gV2UgcmVsZWFzZSBidWZmZXIgcmVzb3VyY2VzIHdoZW4gcHJvY2Vzc2luZyBwZW5kaW5n
IGZyYW1lIGNhbGxiYWNrcyAoYmVmb3JlIHRoZSBjbGllbnQgY2FuIGF0dGFjaCBhIG5ldyBidWZm
ZXIpCi0gICAgc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UgPSBidWZmZXJSZXNvdXJjZTsKKyAgICAv
LyBSZW1vdmUgcmVmZXJlbmNlcyB0byBhbnkgcHJldmlvdXMgcGVuZGluZyBidWZmZXIgZm9yIHRo
aXMgc3VyZmFjZQorICAgIGlmIChzdXJmYWNlLT5idWZmZXIpIHsKKyAgICAgICAgc3VyZmFjZS0+
YnVmZmVyID0gMDsKKyAgICAgICAgd2xfbGlzdF9yZW1vdmUoJnN1cmZhY2UtPmJ1ZmZlckRlc3Ry
b3lMaXN0ZW5lci5saW5rKTsKKyAgICB9CisKKyAgICAvLyBNYWtlIHRoZSBuZXcgYnVmZmVyIHRo
ZSBjdXJyZW50IHBlbmRpbmcgYnVmZmVyCisgICAgaWYgKGJ1ZmZlclJlc291cmNlKSB7CisgICAg
ICAgIHN1cmZhY2UtPmJ1ZmZlciA9IG5lc3RlZEJ1ZmZlckZyb21SZXNvdXJjZShidWZmZXJSZXNv
dXJjZSk7CisgICAgICAgIHdsX3NpZ25hbF9hZGQoJnN1cmZhY2UtPmJ1ZmZlci0+ZGVzdHJveVNp
Z25hbCwgJnN1cmZhY2UtPmJ1ZmZlckRlc3Ryb3lMaXN0ZW5lcik7CisgICAgfQogfQogCiB2b2lk
IFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlRGFtYWdlKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVu
dCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu
dDMyX3QgdywgaW50MzJfdCBoKQpAQCAtMjQ4LDggKzMxNiw2IEBAIHZvaWQgV2F5bGFuZENvbXBv
c2l0b3I6OnN1cmZhY2VGcmFtZShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9y
ZXNvdXJjCiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBRdWV1
ZSBmcmFtZSBjYWxsYmFjayB1bnRpbCB3ZSBhcmUgZG9uZSB3aXRoIHRoZSBjdXJyZW50IGZyYW1l
IGFuZCBhcmUgcmVhZHkgdG8gcHJvY2VzcyB0aGUgbmV4dCBvbmUKLSAgICAvLyAoc2VlIG5leHRG
cmFtZSkKICAgICBzdHJ1Y3QgTmVzdGVkRnJhbWVDYWxsYmFjayogY2FsbGJhY2sgPSBnX25ldzAo
c3RydWN0IE5lc3RlZEZyYW1lQ2FsbGJhY2ssIDEpOwogICAgIGNhbGxiYWNrLT5yZXNvdXJjZSA9
IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9jYWxsYmFja19pbnRlcmZhY2UsIDEsIGlk
KTsKICAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24oY2FsbGJhY2stPnJlc291cmNl
LCAwLCBjYWxsYmFjaywgZGVzdHJveU5lc3RlZEZyYW1lQ2FsbGJhY2spOwpAQCAtMjY4LDcgKzMz
NCw3IEBAIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VTZXRJbnB1dFJlZ2lvbihzdHJ1
Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3CiAKIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6
OnN1cmZhY2VDb21taXQoc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqIHJlc291cmNlKQogewotICAgIHN0cnVjdCBOZXN0ZWRTdXJmYWNlKnN1cmZhY2UgPSBzdGF0
aWNfY2FzdDxzdHJ1Y3QgTmVzdGVkU3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEo
cmVzb3VyY2UpKTsKKyAgICBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSogc3VyZmFjZSA9IHN0YXRpY19j
YXN0PHN0cnVjdCBOZXN0ZWRTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNv
dXJjZSkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yODQsOSAr
MzUwLDEyIEBAIHZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnN1cmZhY2VDb21taXQoc3RydWN0IHds
X2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyCiAgICAgICAgIHN1cmZhY2UtPmNhaXJv
U3VyZmFjZSA9IDA7CiAgICAgfQogCisgICAgLy8gTWFrZSB0aGUgcGVuZGluZyBidWZmZXIgY3Vy
cmVudCAKKyAgICBuZXN0ZWRCdWZmZXJSZWZlcmVuY2UoJnN1cmZhY2UtPmJ1ZmZlclJlZiwgc3Vy
ZmFjZS0+YnVmZmVyKTsKKwogICAgIC8vIENyZWF0ZSBhIG5ldyBFR0xJbWFnZSBmcm9tIHRoZSBs
YXN0IGJ1ZmZlciBhdHRhY2hlZCB0byB0aGlzIHN1cmZhY2UKICAgICBFR0xEaXNwbGF5IGVnbERp
c3BsYXkgPSBjb21wb3NpdG9yLT5tX2Rpc3BsYXktPmVnbERpc3BsYXk7Ci0gICAgc3VyZmFjZS0+
aW1hZ2UgPSBzdGF0aWNfY2FzdDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUltYWdlKGVnbERpc3Bs
YXksIEVHTF9OT19DT05URVhULCBFR0xfV0FZTEFORF9CVUZGRVJfV0wsIHN1cmZhY2UtPmJ1ZmZl
clJlc291cmNlLCAwKSk7CisgICAgc3VyZmFjZS0+aW1hZ2UgPSBzdGF0aWNfY2FzdDxFR0xJbWFn
ZUtIUio+KGVnbENyZWF0ZUltYWdlKGVnbERpc3BsYXksIEVHTF9OT19DT05URVhULCBFR0xfV0FZ
TEFORF9CVUZGRVJfV0wsIHN1cmZhY2UtPmJ1ZmZlci0+cmVzb3VyY2UsIDApKTsKICAgICBpZiAo
c3VyZmFjZS0+aW1hZ2UgPT0gRUdMX05PX0lNQUdFX0tIUikKICAgICAgICAgcmV0dXJuOwogCkBA
IC0yOTYsMTUgKzM2NSwzMCBAQCB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlQ29tbWl0
KHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cgogCiAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGNhaXJvIHN1cmZhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdXJmYWNlIHRleHR1
cmUKICAgICBpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBlZ2xRdWVyeUJ1ZmZlcihlZ2xEaXNwbGF5
LCBzdXJmYWNlLT5idWZmZXJSZXNvdXJjZSwgRUdMX1dJRFRILCAmd2lkdGgpOwotICAgIGVnbFF1
ZXJ5QnVmZmVyKGVnbERpc3BsYXksIHN1cmZhY2UtPmJ1ZmZlclJlc291cmNlLCBFR0xfSEVJR0hU
LCAmaGVpZ2h0KTsKKyAgICBlZ2xRdWVyeUJ1ZmZlcihlZ2xEaXNwbGF5LCBzdXJmYWNlLT5idWZm
ZXItPnJlc291cmNlLCBFR0xfV0lEVEgsICZ3aWR0aCk7CisgICAgZWdsUXVlcnlCdWZmZXIoZWds
RGlzcGxheSwgc3VyZmFjZS0+YnVmZmVyLT5yZXNvdXJjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCk7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbXBvc2l0b3ItPm1fZGlzcGxheS0+ZWds
RGV2aWNlOwogICAgIHN1cmZhY2UtPmNhaXJvU3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3Jl
YXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgc3VyZmFj
ZS0+dGV4dHVyZSwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
IChzdXJmYWNlLT5jYWlyb1N1cmZhY2UpOyAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdGhpcz8K
IAorICAgIC8vIFdlIGFyZSBkb25lIHdpdGggdGhpcyBidWZmZXIKKyAgICBpZiAoc3VyZmFjZS0+
YnVmZmVyKSB7CisgICAgICAgIHdsX2xpc3RfcmVtb3ZlKCZzdXJmYWNlLT5idWZmZXJEZXN0cm95
TGlzdGVuZXIubGluayk7CisgICAgICAgIHN1cmZhY2UtPmJ1ZmZlciA9IDA7CisgICAgfQorCiAg
ICAgLy8gUmVkcmF3IHRoZSB3aWRnZXQgYmFja2VkIGJ5IHRoaXMgc3VyZmFjZQotICAgIGlmIChj
b21wb3NpdG9yLT5tX3dpZGdldCkKLSAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KGNvbXBv
c2l0b3ItPm1fd2lkZ2V0KTsKKyAgICBpZiAoc3VyZmFjZS0+d2lkZ2V0KQorICAgICAgICBndGtf
d2lkZ2V0X3F1ZXVlX2RyYXcoc3VyZmFjZS0+d2lkZ2V0KTsKKworICAgIC8vIFByb2Nlc3MgZnJh
bWUgY2FsbGJhY2tzIGZvciB0aGlzIHN1cmZhY2Ugc28gdGhlIGNsaWVudCBjYW4gcmVuZGVyIGEg
bmV3IGZyYW1lCisgICAgc3RydWN0IE5lc3RlZEZyYW1lQ2FsbGJhY2sgKm5jLCAqbmV4dDsKKyAg
ICB3bF9saXN0X2Zvcl9lYWNoX3NhZmUobmMsIG5leHQsICZzdXJmYWNlLT5mcmFtZUNhbGxiYWNr
TGlzdCwgbGluaykgeworICAgICAgICB3bF9jYWxsYmFja19zZW5kX2RvbmUobmMtPnJlc291cmNl
LCAwKTsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShuYy0+cmVzb3VyY2UpOworICAgIH0K
KyAgICB3bF9saXN0X2luaXQoJnN1cmZhY2UtPmZyYW1lQ2FsbGJhY2tMaXN0KTsKKyAgICB3bF9k
aXNwbGF5X2ZsdXNoX2NsaWVudHMoc3VyZmFjZS0+Y29tcG9zaXRvci0+bV9kaXNwbGF5LT5jaGls
ZERpc3BsYXkpOwogfQogCiB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpzdXJmYWNlU2V0QnVmZmVy
VHJhbnNmb3JtKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiBy
ZXNvdXJjZSwgaW50MzJfdCB0cmFuc2Zvcm0pCkBAIC0zMzcsMjQgKzQyMSwyMSBAQCB2b2lkIFdh
eWxhbmRDb21wb3NpdG9yOjpkb0Rlc3Ryb3lOZXN0ZWRTdXJmYWNlKHN0cnVjdCBOZXN0ZWRTdXJm
YWNlKiBzdXJmYWNlKQogICAgICAgICB3bF9yZXNvdXJjZV9kZXN0cm95KGNiLT5yZXNvdXJjZSk7
CiAgICAgd2xfbGlzdF9pbml0KCZzdXJmYWNlLT5mcmFtZUNhbGxiYWNrTGlzdCk7CiAKLSAgICAv
LyBSZWxlYXNlIGxhc3QgYXR0YWNoZWQgYnVmZmVyCi0gICAgaWYgKHN1cmZhY2UtPmJ1ZmZlclJl
c291cmNlKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBxdWVpbmcgYSBidWZmZXIgcmVsZWFzZSBoZXJl
IGNhbiBwcm9kdWNlIHNlZ2ZhdWx0IGluIHNvbWUgc2NuZWFyaW9zLAotICAgICAgICAvLyBidXQg
YXJlIHdlIG5vdCBsZWFraW5nIHRoZSBidWZmZXIgb3RoZXJ3aXNlPyBXZSBtaWdodCBuZWVkIHNv
bWUgbW9yZQotICAgICAgICAvLyBlbGFib3JhdGUgbWVjaGFuaXNtIHRvIHJlbGVhc2UgdGhlIGJ1
ZmZlciAoc2VlIG5lc3RlZCBleGFtcGxlIGluIHdlc3RvbikKLSAgICAgICAgLy8gd2xfcmVzb3Vy
Y2VfcXVldWVfZXZlbnQoc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNF
KTsKLSAgICAgICAgc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UgPSAwOwotICAgIH0KLQogICAgIC8v
IERlc3Ryb3kgRUdMSW1hZ2UKICAgICBpZiAoc3VyZmFjZS0+aW1hZ2UgIT0gRUdMX05PX0lNQUdF
X0tIUikgewogICAgICAgICBlZ2xEZXN0cm95SW1hZ2Uoc3VyZmFjZS0+Y29tcG9zaXRvci0+bV9k
aXNwbGF5LT5lZ2xEaXNwbGF5LCBzdXJmYWNlLT5pbWFnZSk7CiAgICAgICAgIHN1cmZhY2UtPmlt
YWdlID0gMDsKICAgICB9CiAKKyAgICAvLyBSZWxlYXNlIGN1cnJlbnQgYnVmZmVyCisgICAgbmVz
dGVkQnVmZmVyUmVmZXJlbmNlKCZzdXJmYWNlLT5idWZmZXJSZWYsIE5VTEwpOworCiAgICAgLy8g
RGVsZXRlIEdMIHRleHR1cmUKICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzdXJmYWNlLT50ZXh0
dXJlKTsKIAorICAgIC8vIFVubGluayB0aGlzIHNvdXJjZSBmcm9tIHRoZSBjb21wb3NpdG9yJ3Mg
c3VyZmFjZSBsaXN0CisgICAgd2xfbGlzdF9yZW1vdmUoJnN1cmZhY2UtPmxpbmspOworCiAgICAg
Z19mcmVlKHN1cmZhY2UpOwogfQogCkBAIC0zNjksMTQgKzQ1MCwxMSBAQCB2b2lkIFdheWxhbmRD
b21wb3NpdG9yOjpjcmVhdGVTdXJmYWNlKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0
IHdsX3Jlc291cgogewogICAgIFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gc3RhdGlj
X2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3IqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291
cmNlKSk7CiAKLSAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgb25lIHN1cmZh
Y2Uvd2lkZ2V0Ci0gICAgaWYgKGNvbXBvc2l0b3ItPm1fc3VyZmFjZSkgewotICAgICAgICBnX3dh
cm5pbmcoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3Igb25seSBzdXBwb3J0cyBvbmUgc3VyZmFj
ZS4iKTsKLSAgICB9Ci0KICAgICBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSogc3VyZmFjZSA9IGdfbmV3
MChzdHJ1Y3QgTmVzdGVkU3VyZmFjZSwgMSk7CiAgICAgc3VyZmFjZS0+Y29tcG9zaXRvciA9IGNv
bXBvc2l0b3I7CisKICAgICB3bF9saXN0X2luaXQoJnN1cmZhY2UtPmZyYW1lQ2FsbGJhY2tMaXN0
KTsKKyAgICBzdXJmYWNlLT5idWZmZXJEZXN0cm95TGlzdGVuZXIubm90aWZ5ID0gc3VyZmFjZUhh
bmRsZVBlbmRpbmdCdWZmZXJEZXN0cm95OwogCiAgICAgLy8gQ3JlYXRlIGEgR0wgdGV4dHVyZSB0
byBiYWNrIHRoaXMgc3VyZmFjZQogICAgIGdsR2VuVGV4dHVyZXMgKDEsICZzdXJmYWNlLT50ZXh0
dXJlKTsKQEAgLTM5MCw4ICs0NjgsNyBAQCB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpjcmVhdGVT
dXJmYWNlKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cgogICAgIHN0
cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFjZVJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNs
aWVudCwgJndsX3N1cmZhY2VfaW50ZXJmYWNlLCAxLCBpZCk7CiAgICAgd2xfcmVzb3VyY2Vfc2V0
X2ltcGxlbWVudGF0aW9uKHN1cmZhY2VSZXNvdXJjZSwgJnN1cmZhY2VJbnRlcmZhY2UsIHN1cmZh
Y2UsIGRlc3Ryb3lOZXN0ZWRTdXJmYWNlKTsKIAotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIG9u
bHkgc3VwcG9ydCBvbmUgc3VyZmFjZS93aWRnZXQKLSAgICBjb21wb3NpdG9yLT5tX3N1cmZhY2Ug
PSBzdXJmYWNlOworICAgIHdsX2xpc3RfaW5zZXJ0KGNvbXBvc2l0b3ItPm1fc3VyZmFjZXMucHJl
diwgJnN1cmZhY2UtPmxpbmspOwogfQogCiB2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpjcmVhdGVS
ZWdpb24oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291
cmNlLCB1aW50MzJfdCBpZCkKQEAgLTQxMSw2ICs0ODgsMjggQEAgdm9pZCBXYXlsYW5kQ29tcG9z
aXRvcjo6Y29tcG9zaXRvckJpbmQod2xfY2xpZW50KiBjbGllbnQsIHZvaWQqIGRhdGEsIHVpbnQz
Ml90IHYKICAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsICZjb21w
b3NpdG9ySW50ZXJmYWNlLCBjb21wb3NpdG9yLCAwKTsKIH0KIAordm9pZCBXYXlsYW5kQ29tcG9z
aXRvcjo6d2tndGtTZXRTdXJmYWNlRm9yV2lkZ2V0KHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwg
c3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgc3RydWN0IHdsX3Jlc291cmNlKiBzdXJmYWNl
UmVzb3VyY2UsIHVpbnQzMl90IGlkKQoreworICAgIFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3Np
dG9yID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3IqPih3bF9yZXNvdXJjZV9nZXRfdXNl
cl9kYXRhKHJlc291cmNlKSk7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBnZXRXaWRnZXRCeUlk
KGNvbXBvc2l0b3IsIGlkKTsKKyAgICBpZiAoIXdpZGdldCkKKyAgICAgICAgcmV0dXJuOworICAg
IHN0cnVjdCBOZXN0ZWRTdXJmYWNlKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8c3RydWN0IE5lc3Rl
ZFN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHN1cmZhY2VSZXNvdXJjZSkpOwor
ICAgIHNldFN1cmZhY2VGb3JXaWRnZXQoY29tcG9zaXRvciwgd2lkZ2V0LCBzdXJmYWNlKTsKK30K
Kworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF93a2d0a19pbnRlcmZhY2Ugd2tndGtJbnRlcmZhY2Ug
PSB7CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OndrZ3RrU2V0U3VyZmFjZUZvcldpZGdldCwKK307
CisKKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6d2tndGtCaW5kKHN0cnVjdCB3bF9jbGllbnQq
IGNsaWVudCwgdm9pZCogZGF0YSwgdWludDMyX3QgdmVyc2lvbiwgdWludDMyX3QgaWQpCit7Cisg
ICAgV2F5bGFuZENvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29t
cG9zaXRvcio+KGRhdGEpOzsKKyAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlID0gd2xf
cmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX3drZ3RrX2ludGVyZmFjZSwgMSwgaWQpOworICAg
IHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwgJndrZ3RrSW50ZXJmYWNl
LCBjb21wb3NpdG9yLCAwKTsKK30KKwogYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBuZXN0ZWQgZGlzcGxheQpAQCAtNDM2LDYgKzUzNSwx
MyBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIC8vIEJpbmQgdGhlIHdlYmtpdGd0ayBwcm90b2NvbCBleHRl
bnNpb24KKyAgICBtX2Rpc3BsYXktPndrZ3RrR2xvYmFsID0gd2xfZ2xvYmFsX2NyZWF0ZShtX2Rp
c3BsYXktPmNoaWxkRGlzcGxheSwgJndsX3drZ3RrX2ludGVyZmFjZSwgMSwgdGhpcywgd2tndGtC
aW5kKTsKKyAgICBpZiAoIW1fZGlzcGxheS0+d2tndGtHbG9iYWwpIHsKKyAgICAgICAgZ193YXJu
aW5nKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCByZWdpc3RlciB3ZWJraXRn
dGsgZ2xvYmFsIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBpZiAoIWVn
bEJpbmREaXNwbGF5KG1fZGlzcGxheS0+ZWdsRGlzcGxheSwgbV9kaXNwbGF5LT5jaGlsZERpc3Bs
YXkpKSB7CiAgICAgICAgIGdfd2FybmluZygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3Vs
ZCBub3QgYmluZCBuZXN0ZWQgZGlzcGxheSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
NjYsNjIgKzU3Miw3NCBAQCBXYXlsYW5kQ29tcG9zaXRvciogV2F5bGFuZENvbXBvc2l0b3I6Omlu
c3RhbmNlKCkKIAogV2F5bGFuZENvbXBvc2l0b3I6OldheWxhbmRDb21wb3NpdG9yKCkKICAgICA6
IG1fZGlzcGxheSgwKQotICAgICwgbV9zdXJmYWNlKDApCi0gICAgLCBtX3dpZGdldCgwKQogewor
ICAgIHdsX2xpc3RfaW5pdCgmbV9zdXJmYWNlcyk7CiB9CiAKIFdheWxhbmRDb21wb3NpdG9yOjp+
V2F5bGFuZENvbXBvc2l0b3IoKQogewotICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgIGRvRGVz
dHJveU5lc3RlZFN1cmZhY2UobV9zdXJmYWNlKTsKKyAgICBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSAq
c3VyZmFjZSwgKm5leHQ7CisgICAgd2xfbGlzdF9mb3JfZWFjaF9zYWZlKHN1cmZhY2UsIG5leHQs
ICZtX3N1cmZhY2VzLCBsaW5rKQorICAgICAgICBkb0Rlc3Ryb3lOZXN0ZWRTdXJmYWNlKHN1cmZh
Y2UpOworICAgIHdsX2xpc3RfaW5pdCgmbV9zdXJmYWNlcyk7CiAKICAgICBpZiAobV9kaXNwbGF5
KQogICAgICAgICBkZXN0cm95TmVzdGVkRGlzcGxheShtX2Rpc3BsYXkpOwogfQogCi0vLyBGSVhN
RTogRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgb25lIHdpZGdldC9zdXJmYWNlLCBpbiB0aGUgZnV0
dXJlCi0vLyB3ZSBzaG91bGQgYmUgYWJsZSB0byBtYXAgbXVsdGlwbGUgd2lkZ2V0cyB0byBtdWx0
aXBsZSBzdXJmYWNlcwogdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6YWRkV2lkZ2V0KEd0a1dpZGdl
dCogd2lkZ2V0KQogewotICAgIGlmIChtX3dpZGdldCkKLSAgICAgICAgZ193YXJuaW5nKCJOZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIG9ubHkgc3VwcG9ydHMgb25lIHdpZGdldC4iKTsKLSAgICBt
X3dpZGdldCA9IHdpZGdldDsKKyAgICBzdGF0aWMgaW50IG5leHRXaWRnZXRJZCA9IDA7CisgICAg
Z19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qod2lkZ2V0KSwgIndheWxhbmQtY29tcG9zaXRvci13
aWRnZXQtaWQiLCBHSU5UX1RPX1BPSU5URVIoKytuZXh0V2lkZ2V0SWQpKTsKKyAgICBzZXRTdXJm
YWNlRm9yV2lkZ2V0KHRoaXMsIHdpZGdldCwgMCk7CiB9CiAKLS8vIEZJWE1FOiBGb3Igbm93IHdl
IG9ubHkgc3VwcG9ydCBvbmUgd2lkZ2V0L3N1cmZhY2UsIGluIHRoZSBmdXR1cmUKLS8vIHdlIHNo
b3VsZCBiZSBhYmxlIHRvIG1hcCBtdWx0aXBsZSB3aWRnZXRzIHRvIG11bHRpcGxlIHN1cmZhY2Vz
Ci1jYWlyb19zdXJmYWNlX3QqIFdheWxhbmRDb21wb3NpdG9yOjpjYWlyb1N1cmZhY2VGb3JXaWRn
ZXQoR3RrV2lkZ2V0ICp3aWRnZXQpCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpyZW1vdmVXaWRn
ZXQoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKHdpZGdldCAhPSBtX3dpZGdldCB8fCAh
bV9zdXJmYWNlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jYWly
b1N1cmZhY2U7CisgICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIHN1cmZhY2UgPSBnZXRTdXJmYWNl
Rm9yV2lkZ2V0KHRoaXMsIHdpZGdldCk7CisgICAgaWYgKHN1cmZhY2UpCisgICAgICAgIHN1cmZh
Y2UtPndpZGdldCA9IDA7CisKKyAgICBpbnQgd2lkZ2V0SWQgPSBnZXRXaWRnZXRJZCh3aWRnZXQp
OworICAgIGlmICh3aWRnZXRJZCkgeworICAgICAgICBtX3dpZGdldEhhc2hNYXAucmVtb3ZlKHdp
ZGdldCk7CisgICAgICAgIGdfb2JqZWN0X3N0ZWFsX2RhdGEoR19PQkpFQ1Qod2lkZ2V0KSwgIndh
eWxhbmQtY29tcG9zaXRvci13aWRnZXQtaWQiKTsKKyAgICB9CiB9CiAKLXZvaWQgV2F5bGFuZENv
bXBvc2l0b3I6Om5leHRGcmFtZSgpCitpbnQgV2F5bGFuZENvbXBvc2l0b3I6OmdldFdpZGdldElk
KEd0a1dpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghbV9zdXJmYWNlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogV2hlbiB3ZSBzdXBwb3J0IG11bHRpcGxlIHN1cmZhY2VzL3dp
ZGdldHMgd2UgcHJvYmFibHkgd2FudCB0byByZXF1ZXN0Ci0gICAgLy8gdGhlIG5leHQgZnJhbWUg
Zm9yIGEgc3BlY2lmaWMgd2lkZ2V0IG9ubHkgc28gd2UgY2FuIHRocm90dGxlIGZyYW1lIGNhbGxi
YWNrcwotICAgIC8vIGZvciB0aGF0IHN1cmZhY2UgYWxvbmUKKyAgICByZXR1cm4gR1BPSU5URVJf
VE9fSU5UKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHdpZGdldCksICJ3YXlsYW5kLWNvbXBv
c2l0b3Itd2lkZ2V0LWlkIikpOworfQogCi0gICAgLy8gUHJvY2VzcyBmcmFtZSBjYWxsYmFja3Mg
Zm9yIHRoZSBzdXJmYWNlCi0gICAgc3RydWN0IE5lc3RlZEZyYW1lQ2FsbGJhY2sgKm5jLCAqbmV4
dDsKLSAgICB3bF9saXN0X2Zvcl9lYWNoX3NhZmUgKG5jLCBuZXh0LCAmbV9zdXJmYWNlLT5mcmFt
ZUNhbGxiYWNrTGlzdCwgbGluaykgewotICAgICAgICB3bF9jYWxsYmFja19zZW5kX2RvbmUgKG5j
LT5yZXNvdXJjZSwgMCk7Ci0gICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kgKG5jLT5yZXNvdXJj
ZSk7Ci0gICAgfQorc3RydWN0IE5lc3RlZFN1cmZhY2UqIFdheWxhbmRDb21wb3NpdG9yOjpnZXRT
dXJmYWNlRm9yV2lkZ2V0KFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBHdGtXaWRnZXQq
IHdpZGdldCkKK3sKKyAgICByZXR1cm4gY29tcG9zaXRvci0+bV93aWRnZXRIYXNoTWFwLmdldCh3
aWRnZXQpOworfQogCi0gICAgd2xfbGlzdF9pbml0ICgmbV9zdXJmYWNlLT5mcmFtZUNhbGxiYWNr
TGlzdCk7Ci0gICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzIChtX2Rpc3BsYXktPmNoaWxkRGlz
cGxheSk7Cit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpzZXRTdXJmYWNlRm9yV2lkZ2V0KFdheWxh
bmRDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBHdGtXaWRnZXQqIHdpZGdldCwgc3RydWN0IE5lc3Rl
ZFN1cmZhY2UqIHN1cmZhY2UpCit7CisgICAgLy8gQXNzb2NpYXRlIHRoZSBuZXcgc3VyZmFjZSB3
aXRoIHRoZSB3aWRnZXQsIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUKKyAgICAvLyBmb3IgZGVz
dHJveWluZyBhbnkgcHJldmlvdXMgc3VyZmFjZSBjcmVhdGVkIGZvciB0aGlzIHdpZGdldAorICAg
IGNvbXBvc2l0b3ItPm1fd2lkZ2V0SGFzaE1hcC5zZXQod2lkZ2V0LCBzdXJmYWNlKTsKKyAgICBp
ZiAoc3VyZmFjZSkKKyAgICAgICAgc3VyZmFjZS0+d2lkZ2V0ID0gd2lkZ2V0OworfQogCi0gICAg
Ly8gUmVsZWFzZSB0aGUgbGFzdCBidWZmZXIgYXR0YWNoZWQgZm9yIHRoaXMgc3VyZmFjZQotICAg
IGlmIChtX3N1cmZhY2UtPmJ1ZmZlclJlc291cmNlKSB7Ci0gICAgICAgIHdsX3Jlc291cmNlX3F1
ZXVlX2V2ZW50IChtX3N1cmZhY2UtPmJ1ZmZlclJlc291cmNlLCBXTF9CVUZGRVJfUkVMRUFTRSk7
Ci0gICAgICAgIG1fc3VyZmFjZS0+YnVmZmVyUmVzb3VyY2UgPSAwOworR3RrV2lkZ2V0KiBXYXls
YW5kQ29tcG9zaXRvcjo6Z2V0V2lkZ2V0QnlJZChXYXlsYW5kQ29tcG9zaXRvciogY29tcG9zaXRv
ciwgaW50IGlkKQoreworICAgIGZvciAoSGFzaE1hcDxHdGtXaWRnZXQqLCBzdHJ1Y3QgTmVzdGVk
U3VyZmFjZSo+OjppdGVyYXRvciBpdCA9IGNvbXBvc2l0b3ItPm1fd2lkZ2V0SGFzaE1hcC5iZWdp
bigpOyBpdCAhPSBjb21wb3NpdG9yLT5tX3dpZGdldEhhc2hNYXAuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBpdC0+a2V5OworICAgICAgICBpZiAoaWQgPT0gR1BP
SU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHdpZGdldCksICJ3YXlsYW5k
LWNvbXBvc2l0b3Itd2lkZ2V0LWlkIikpKQorICAgICAgICAgICAgcmV0dXJuIHdpZGdldDsKICAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2NhaXJvX3N1cmZhY2VfdCogV2F5bGFuZENvbXBvc2l0
b3I6OmNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBzdHJ1
Y3QgTmVzdGVkU3VyZmFjZSogc3VyZmFjZSA9IGdldFN1cmZhY2VGb3JXaWRnZXQodGhpcywgd2lk
Z2V0KTsKKyAgICByZXR1cm4gc3VyZmFjZSA/IHN1cmZhY2UtPmNhaXJvU3VyZmFjZSA6IDA7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmgKaW5kZXggYTM1ODNiMi4uOWRkZTU2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKQEAgLTQzLDQy
ICs0Myw2MCBAQAogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KIAor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKICNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdHJ1Y3QgTmVzdGVkU3VyZmFjZTsKIGNsYXNzIFdheWxhbmRDb21wb3NpdG9y
OwogCiAvLyBOZXN0ZWQgY29tcG9zaXRvciBkaXNwbGF5CiBzdHJ1Y3QgTmVzdGVkRGlzcGxheSB7
Ci0gIEdka0Rpc3BsYXkqIGdka0Rpc3BsYXk7ICAgICAgICAgICAgICAgLy8gR2RrIGRpc3BsYXkK
LSAgc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheTsgICAgICAgICAvLyBNYWluIFdheWxhbmQg
ZGlzcGxheQotICBzdHJ1Y3Qgd2xfZGlzcGxheSogY2hpbGREaXNwbGF5OyAgICAgIC8vIE5lc3Rl
ZCBkaXNwbGF5Ci0gIEVHTERpc3BsYXkgZWdsRGlzcGxheTsgICAgICAgICAgICAgICAgLy8gRUdM
IGRpc3BsYXkKLSAgRUdMQ29uZmlnIGVnbENvbmZpZzsgICAgICAgICAgICAgICAgICAvLyBFR0wg
Y29uZmlndXJhdGlvbgotICBFR0xDb250ZXh0IGVnbEN0eDsgICAgICAgICAgICAgICAgICAgIC8v
IEVHTCBjb250ZXh0Ci0gIGNhaXJvX2RldmljZV90KiBlZ2xEZXZpY2U7ICAgICAgICAgICAgLy8g
RUdMIGNhaXJvIGRldmljZQotICBzdHJ1Y3Qgd2xfZ2xvYmFsKiB3bEdsb2JhbDsgICAgICAgICAg
IC8vIFdheWxhbmQgZ2xvYmFsCi0gIEdTb3VyY2UqIGV2ZW50U291cmNlOyAgICAgICAgICAgICAg
ICAgLy8gRGlzcGxheSBldmVudCBzb3VyY2UKKyAgICBHZGtEaXNwbGF5KiBnZGtEaXNwbGF5OyAg
ICAgICAgICAgICAgIC8vIEdkayBkaXNwbGF5CisgICAgc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlz
cGxheTsgICAgICAgICAvLyBNYWluIFdheWxhbmQgZGlzcGxheQorICAgIHN0cnVjdCB3bF9kaXNw
bGF5KiBjaGlsZERpc3BsYXk7ICAgICAgLy8gTmVzdGVkIGRpc3BsYXkKKyAgICBFR0xEaXNwbGF5
IGVnbERpc3BsYXk7ICAgICAgICAgICAgICAgIC8vIEVHTCBkaXNwbGF5CisgICAgRUdMQ29uZmln
IGVnbENvbmZpZzsgICAgICAgICAgICAgICAgICAvLyBFR0wgY29uZmlndXJhdGlvbgorICAgIEVH
TENvbnRleHQgZWdsQ3R4OyAgICAgICAgICAgICAgICAgICAgLy8gRUdMIGNvbnRleHQKKyAgICBj
YWlyb19kZXZpY2VfdCogZWdsRGV2aWNlOyAgICAgICAgICAgIC8vIEVHTCBjYWlybyBkZXZpY2UK
KyAgICBzdHJ1Y3Qgd2xfZ2xvYmFsKiB3bEdsb2JhbDsgICAgICAgICAgIC8vIFdheWxhbmQgZGlz
cGxheSBnbG9iYWwKKyAgICBzdHJ1Y3Qgd2xfZ2xvYmFsKiB3a2d0a0dsb2JhbDsgICAgICAgIC8v
IFdheWxhbmQgd2Via2l0Z3RrIGludGVyZmFjZSBnbG9iYWwKKyAgICBHU291cmNlKiBldmVudFNv
dXJjZTsgICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgZXZlbnQgc291cmNlCit9OworCitzdHJ1
Y3QgTmVzdGVkQnVmZmVyIHsKKyAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlOworICAg
IHN0cnVjdCB3bF9zaWduYWwgZGVzdHJveVNpZ25hbDsKKyAgICBzdHJ1Y3Qgd2xfbGlzdGVuZXIg
ZGVzdHJveUxpc3RlbmVyOworICAgIHVpbnQzMl90IGJ1c3lDb3VudDsKK307CisKK3N0cnVjdCBO
ZXN0ZWRCdWZmZXJSZWZlcmVuY2UgeworICAgIHN0cnVjdCBOZXN0ZWRCdWZmZXIqIGJ1ZmZlcjsK
KyAgICBzdHJ1Y3Qgd2xfbGlzdGVuZXIgZGVzdHJveUxpc3RlbmVyOwogfTsKIAogLy8gTmVzdGVk
IFdheWxhbmQgY29tcG9zaXRvciBzdXJmYWNlCiBzdHJ1Y3QgTmVzdGVkU3VyZmFjZSB7Ci0gIFdh
eWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yOyAgICAgICAgLy8gTmVzdGVkIGNvbXBvc2l0b3Ig
aW5zdGFuY2UKLSAgc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXJSZXNvdXJjZTsgICAvLyBMYXN0
IGF0dGFjaGVkIGJ1ZmZlcgotICBHTHVpbnQgdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAg
IC8vIEdMIHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlCi0gIEVHTEltYWdlS0hSKiBpbWFnZTsgICAg
ICAgICAgICAgICAgICAgLy8gRUdMIEltYWdlIGZvciB0ZXh0dXJlCi0gIGNhaXJvX3N1cmZhY2Vf
dCogY2Fpcm9TdXJmYWNlOyAgICAgICAgLy8gQ2Fpcm8gc3VyZmFjZSBmb3IgR0wgdGV4dHVyZQot
ICBzdHJ1Y3Qgd2xfbGlzdCBmcmFtZUNhbGxiYWNrTGlzdDsgICAgIC8vIFBlbmRpbmcgZnJhbWUg
Y2FsbGJhY2sgbGlzdAorICAgIFdheWxhbmRDb21wb3NpdG9yKiBjb21wb3NpdG9yOyAgICAgICAg
Ly8gTmVzdGVkIGNvbXBvc2l0b3IgaW5zdGFuY2UKKyAgICBzdHJ1Y3QgTmVzdGVkQnVmZmVyKiBi
dWZmZXI7ICAgICAgICAgIC8vIExhc3QgYXR0YWNoZWQgYnVmZmVyIChwZW5kaW5nIGJ1ZmZlcikK
KyAgICBHTHVpbnQgdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEdMIHRleHR1cmUg
Zm9yIHRoZSBzdXJmYWNlCisgICAgRUdMSW1hZ2VLSFIqIGltYWdlOyAgICAgICAgICAgICAgICAg
ICAvLyBFR0wgSW1hZ2UgZm9yIHRleHR1cmUKKyAgICBjYWlyb19zdXJmYWNlX3QqIGNhaXJvU3Vy
ZmFjZTsgICAgICAgIC8vIENhaXJvIHN1cmZhY2UgZm9yIEdMIHRleHR1cmUKKyAgICBzdHJ1Y3Qg
d2xfbGlzdCBmcmFtZUNhbGxiYWNrTGlzdDsgICAgIC8vIFBlbmRpbmcgZnJhbWUgY2FsbGJhY2sg
bGlzdAorICAgIEd0a1dpZGdldCogd2lkZ2V0OyAgICAgICAgICAgICAgICAgICAgLy8gd2lkZ2V0
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1cmZhY2UKKyAgICBzdHJ1Y3Qgd2xfbGlzdGVuZXIgYnVm
ZmVyRGVzdHJveUxpc3RlbmVyOyAvLyBQZW5kaW5nIGJ1ZmZlciBkZXN0cm95IGxpc3RlbmVyCisg
ICAgc3RydWN0IE5lc3RlZEJ1ZmZlclJlZmVyZW5jZSBidWZmZXJSZWY7ICAgLy8gQ3VycmVudCBi
dWZmZXIKKyAgICBzdHJ1Y3Qgd2xfbGlzdCBsaW5rOwogfTsKIAogLy8gTGlzdCBvZiBwZW5kaW5n
IGZyYW1lIGNhbGxiYWNrcyBvbiBhIG5lc3RlZCBzdXJmYWNlCiBzdHJ1Y3QgTmVzdGVkRnJhbWVD
YWxsYmFjayB7Ci0gIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2U7Ci0gIHN0cnVjdCB3bF9s
aXN0IGxpbms7CisgICAgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZTsKKyAgICBzdHJ1Y3Qg
d2xfbGlzdCBsaW5rOwogfTsKIAogY2xhc3MgV2F5bGFuZENvbXBvc2l0b3IgewpAQCAtODgsOSAr
MTA2LDEzIEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYktpdCBpbnRlZ3JhdGlvbgogICAgIHZvaWQg
YWRkV2lkZ2V0KEd0a1dpZGdldCopOwotICAgIHZvaWQgbmV4dEZyYW1lKCk7CisgICAgdm9pZCBy
ZW1vdmVXaWRnZXQoR3RrV2lkZ2V0Kik7CisgICAgaW50IGdldFdpZGdldElkKEd0a1dpZGdldCop
OwogICAgIGNhaXJvX3N1cmZhY2VfdCogY2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCop
OwogCisgICAgLy8gV2F5bGFuZCBXZWJraXQgZXh0ZW5zaW9uIGludGVyZmFjZQorICAgIHN0YXRp
YyB2b2lkIHdrZ3RrU2V0U3VyZmFjZUZvcldpZGdldChzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0
IHdsX3Jlc291cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKiwgdWludDMyX3QpOworCiAgICAgLy8g
V2F5bGFuZCBjb21wb3NpdG9yIGludGVyZmFjZQogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVN1cmZh
Y2Uoc3RydWN0IHdsX2NsaWVudCosIHdsX3Jlc291cmNlKiwgdWludDMyX3QpOwogICAgIHN0YXRp
YyB2b2lkIGNyZWF0ZVJlZ2lvbihzdHJ1Y3Qgd2xfY2xpZW50Kiwgd2xfcmVzb3VyY2UqLCB1aW50
MzJfdCk7CkBAIC0xMTcsMTcgKzEzOSwzMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3lOZXN0ZWREaXNwbGF5KHN0cnVjdCBOZXN0ZWREaXNwbGF5Kik7CiAgICAgYm9vbCBpbml0
aWFsaXplKCk7CiAKLSAgICAvLyBXYXlsYW5kIGNhbGxiYWNrcworICAgIC8vIEdsb2JhbCBiaW5k
aW5nCisgICAgc3RhdGljIHZvaWQgd2tndGtCaW5kKHN0cnVjdCB3bF9jbGllbnQqLCB2b2lkKiwg
dWludDMyX3QsIHVpbnQzMl90KTsKICAgICBzdGF0aWMgdm9pZCBjb21wb3NpdG9yQmluZChzdHJ1
Y3Qgd2xfY2xpZW50Kiwgdm9pZCosIHVpbnQzMl90LCB1aW50MzJfdCk7CisKKyAgICAvLyBXaWRn
ZXQvU3VyZmFjZSBtYXBwaW5nCisgICAgc3RhdGljIHN0cnVjdCBOZXN0ZWRTdXJmYWNlKiBnZXRT
dXJmYWNlRm9yV2lkZ2V0KFdheWxhbmRDb21wb3NpdG9yKiwgR3RrV2lkZ2V0Kik7CisgICAgc3Rh
dGljIHZvaWQgc2V0U3VyZmFjZUZvcldpZGdldChXYXlsYW5kQ29tcG9zaXRvciosIEd0a1dpZGdl
dCosIHN0cnVjdCBOZXN0ZWRTdXJmYWNlKik7CisgICAgc3RhdGljIEd0a1dpZGdldCogZ2V0V2lk
Z2V0QnlJZChXYXlsYW5kQ29tcG9zaXRvciosIGludCk7CisKKyAgICAvLyBTdXJmYWNlIG1hbmFn
ZW1lbnQKICAgICBzdGF0aWMgdm9pZCBkb0Rlc3Ryb3lOZXN0ZWRTdXJmYWNlKHN0cnVjdCBOZXN0
ZWRTdXJmYWNlKik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveU5lc3RlZFN1cmZhY2UgKHN0cnVj
dCB3bF9yZXNvdXJjZSopOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lOZXN0ZWRGcmFtZUNhbGxi
YWNrIChzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95TmVzdGVk
U3VyZmFjZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95TmVz
dGVkRnJhbWVDYWxsYmFjayhzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKworICAgIC8vIEJ1ZmZlciBt
YW5hZ2VtZW50CisgICAgc3RhdGljIHZvaWQgbmVzdGVkQnVmZmVyRGVzdHJveUhhbmRsZXIoc3Ry
dWN0IHdsX2xpc3RlbmVyKiwgdm9pZCopOworICAgIHN0YXRpYyBzdHJ1Y3QgTmVzdGVkQnVmZmVy
KiBuZXN0ZWRCdWZmZXJGcm9tUmVzb3VyY2Uoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgc3Rh
dGljIHZvaWQgc3VyZmFjZUhhbmRsZVBlbmRpbmdCdWZmZXJEZXN0cm95KHN0cnVjdCB3bF9saXN0
ZW5lciosIHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBuZXN0ZWRCdWZmZXJSZWZlcmVuY2Uoc3Ry
dWN0IE5lc3RlZEJ1ZmZlclJlZmVyZW5jZSosIHN0cnVjdCBOZXN0ZWRCdWZmZXIqKTsKKyAgICBz
dGF0aWMgdm9pZCBuZXN0ZWRCdWZmZXJSZWZlcmVuY2VIYW5kbGVEZXN0cm95KHN0cnVjdCB3bF9s
aXN0ZW5lciosIHZvaWQqKTsKIAorICAgIC8vIEdsb2JhbCBpbnN0YW5jZQogICAgIHN0YXRpYyBX
YXlsYW5kQ29tcG9zaXRvciogbV9pbnN0YW5jZTsKIAogICAgIHN0cnVjdCBOZXN0ZWREaXNwbGF5
KiBtX2Rpc3BsYXk7Ci0gICAgc3RydWN0IE5lc3RlZFN1cmZhY2UqIG1fc3VyZmFjZTsKLSAgICBH
dGtXaWRnZXQqIG1fd2lkZ2V0OworICAgIEhhc2hNYXA8R3RrV2lkZ2V0Kiwgc3RydWN0IE5lc3Rl
ZFN1cmZhY2UqPiBtX3dpZGdldEhhc2hNYXA7CisgICAgc3RydWN0IHdsX2xpc3QgbV9zdXJmYWNl
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2F5bGFuZERpc3BsYXkuY3BwCmluZGV4IGU1NzI5YzAuLjBhNTU3YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmNwcApAQCAtNDQs
NiArNDQsOSBAQCB2b2lkIFdheWxhbmREaXNwbGF5OjpyZWdpc3RyeUhhbmRsZUdsb2JhbCh2b2lk
ICpkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdAogICAgIGlmIChzdHJjbXAoaW50ZXJm
YWNlLCAid2xfY29tcG9zaXRvciIpID09IDApCiAgICAgICAgIGRpc3BsYXktPm1fY29tcG9zaXRv
ciA9CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3Jl
Z2lzdHJ5X2JpbmQocmVnaXN0cnksIG5hbWUsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSkp
OworICAgIGVsc2UgaWYgKHN0cmNtcChpbnRlcmZhY2UsICJ3bF93a2d0ayIpID09IDApCisgICAg
ICAgIGRpc3BsYXktPm1fd2tndGsgPQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RydWN0IHds
X3drZ3RrKj4od2xfcmVnaXN0cnlfYmluZChyZWdpc3RyeSwgbmFtZSwgJndsX3drZ3RrX2ludGVy
ZmFjZSwgMSkpOwogfQogCiB2b2lkIFdheWxhbmREaXNwbGF5OjpyZWdpc3RyeUhhbmRsZUdsb2Jh
bFJlbW92ZSh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LCB1aW50MzJf
dCBuYW1lKQpAQCAtODIsMTEgKzg1LDEyIEBAIFdheWxhbmREaXNwbGF5OjpXYXlsYW5kRGlzcGxh
eShzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5KQogICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlw
KG1fZGlzcGxheSk7CiB9CiAKLVBhc3NPd25QdHI8V2F5bGFuZFN1cmZhY2U+IFdheWxhbmREaXNw
bGF5OjpjcmVhdGVTdXJmYWNlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK1Bhc3NPd25QdHI8V2F5
bGFuZFN1cmZhY2U+IFdheWxhbmREaXNwbGF5OjpjcmVhdGVTdXJmYWNlKGludCB3aWR0aCwgaW50
IGhlaWdodCwgaW50IHdpZGdldElkKQogewotICAgIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNl
ID0gd2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0b3IpOworICAgIHN0cnVj
dCB3bF9zdXJmYWNlKiBzdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2Nv
bXBvc2l0b3IpOwogICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlID0gd2xfZWdsX3dpbmRv
d19jcmVhdGUoc3VyZmFjZSwgd2lkdGgsIGhlaWdodCk7CiAgICAgT3duUHRyPFdheWxhbmRTdXJm
YWNlPiB3bFN1cmZhY2UgPSBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2UsIG5hdGl2ZSk7
CisgICAgd2xfd2tndGtfc2V0X3N1cmZhY2VfZm9yX3dpZGdldChtX3drZ3RrLCBzdXJmYWNlLCB3
aWRnZXRJZCk7CiAgICAgcmV0dXJuIHdsU3VyZmFjZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XYXlsYW5kRGlzcGxheS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmgKaW5kZXggMGJkY2NjZS4uMjA5
MDFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNw
bGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmREaXNwbGF5LmgK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgogCiAjaW5jbHVk
ZSAiV2F5bGFuZFN1cmZhY2UuaCIKKyNpbmNsdWRlICJXYXlsYW5kV2Via2l0R3RrQ2xpZW50UHJv
dG9jb2wuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3RyeUhhbmRsZUdsb2JhbFJlbW92ZSh2b2lkKiwgc3Ry
dWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QpOwogCiAgICAgLy8gRGlzcGxheSBpbnRlcmZhY2UK
LSAgICBQYXNzT3duUHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKGludCwgaW50KTsK
KyAgICBQYXNzT3duUHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKGludCwgaW50LCBp
bnQpOwogICAgIHZvaWQgZGVzdHJveVN1cmZhY2UoV2F5bGFuZFN1cmZhY2UqKTsKICAgICBzdHJ1
Y3Qgd2xfZGlzcGxheSogbmF0aXZlRGlzcGxheSgpIHsgcmV0dXJuIG1fZGlzcGxheTsgfQogCkBA
IC02Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG1fZGlzcGxh
eTsKICAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkqIG1fcmVnaXN0cnk7CiAgICAgc3RydWN0IHdsX2Nv
bXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKKyAgICBzdHJ1Y3Qgd2xfd2tndGsqIG1fd2tndGs7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRTdXJmYWNlLmNw
cAppbmRleCBkYzg5ZjhiLi4wZjgzZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XYXlsYW5kU3VyZmFjZS5jcHAKQEAgLTMzLDIzICszMyw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBXYXlsYW5kU3VyZmFjZTo6ZnJhbWVDYWxsYmFjayh2b2lkKiBkYXRh
LCBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGNhbGxiYWNrLCB1aW50MzJfdCB0aW1lKQotewotICAgIC8v
IEZJWE1FOiBMb29rcyBsaWtlIHRoaXMgaXMgbmV2ZXIgY2FsbGVkLiBXaHk/Ci0gICAgaWYgKGNh
bGxiYWNrKQotICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKLX0KLQotc3Rh
dGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBmcmFtZUxpc3RlbmVyID0gewot
ICAgIFdheWxhbmRTdXJmYWNlOjpmcmFtZUNhbGxiYWNrCi19OwotCi12b2lkIFdheWxhbmRTdXJm
YWNlOjpyZXF1ZXN0RnJhbWUoKQotewotICAgIHN0cnVjdCB3bF9jYWxsYmFjayogd2xDYWxsYmFj
ayA9IHdsX3N1cmZhY2VfZnJhbWUobV9zdXJmYWNlKTsKLSAgICB3bF9jYWxsYmFja19hZGRfbGlz
dGVuZXIod2xDYWxsYmFjaywgJmZyYW1lTGlzdGVuZXIsIHRoaXMpOwotfQotCiBQYXNzT3duUHRy
PFdheWxhbmRTdXJmYWNlPiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlKHN0cnVjdCB3bF9zdXJmYWNl
KiBzdXJmYWNlLCBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZSkKIHsKICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdheWxhbmRTdXJmYWNlKHN1cmZhY2UsIG5hdGl2ZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dheWxhbmRTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuaAppbmRleCA2NTNiMjFlLi4zMWU0ZGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2F5bGFuZFN1cmZhY2UuaApAQCAt
NDUsMTMgKzQ1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdheWxhbmRTdXJm
YWNlPiBjcmVhdGUoc3RydWN0IHdsX3N1cmZhY2UqLCBFR0xOYXRpdmVXaW5kb3dUeXBlKTsKICAg
ICB2aXJ0dWFsIH5XYXlsYW5kU3VyZmFjZSgpOwogCi0gICAgLy8gV2F5bGFuZCBzdXJmYWNlIGlu
dGVyZmFjZSBjYWxsYmFja3MKLSAgICBzdGF0aWMgdm9pZCBmcmFtZUNhbGxiYWNrKHZvaWQqLCBz
dHJ1Y3Qgd2xfY2FsbGJhY2sqLCB1aW50MzJfdCk7Ci0KICAgICAvLyBTdXJmYWNlIGludGVyZmFj
ZQogICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4g
bV9uYXRpdmU7IH0KICAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSgpIHsgcmV0dXJuIG1f
c3VyZmFjZTsgfQotICAgIHZvaWQgcmVxdWVzdEZyYW1lKCk7CiAKIHByaXZhdGU6CiAgICAgV2F5
bGFuZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqLCBFR0xOYXRpdmVXaW5kb3dUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay93bC13a2d0ay54bWwgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvd2wtd2tndGsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmMyNjQ4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvd2wtd2tndGsueG1sCkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvdG9jb2wgbmFtZT0id2xfd2tndGsiPgor
CisgIDxjb3B5cmlnaHQ+CisgICAgQ29weXJpZ2h0IMKpIDIwMTMgSWdhbGlhIFMuTC4KKworICAg
IFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRo
aXMKKyAgICBzb2Z0d2FyZSBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlz
IGhlcmVieSBncmFudGVkCisgICAgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluCisgICAgYWxsIGNvcGllcyBhbmQgdGhhdCBib3Ro
IHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCisgICAgbm90aWNlIGFw
cGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mCisg
ICAgdGhlIGNvcHlyaWdodCBob2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1
YmxpY2l0eQorICAgIHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljLAorICAgIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5
cmlnaHQgaG9sZGVycyBtYWtlIG5vCisgICAgcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0
YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAgICBwdXJwb3NlLiAgSXQgaXMgcHJv
dmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorICAgIHdhcnJhbnR5Lgor
CisgICAgVEhFIENPUFlSSUdIVCBIT0xERVJTIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEgg
UkVHQVJEIFRPIFRISVMKKyAgICBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAorICAgIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICAgIFNQRUNJQUws
IElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUworICAgIFdI
QVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hF
VEhFUiBJTgorICAgIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBU
T1JUSU9VUyBBQ1RJT04sCisgICAgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YKKyAgICBUSElTIFNPRlRXQVJFLgorICA8L2NvcHly
aWdodD4KKworICA8aW50ZXJmYWNlIG5hbWU9IndsX3drZ3RrIiB2ZXJzaW9uPSIxIj4KKyAgICA8
cmVxdWVzdCBuYW1lPSJzZXRfc3VyZmFjZV9mb3Jfd2lkZ2V0Ij4KKyAgICAgIDxhcmcgbmFtZT0i
c3VyZmFjZSIgdHlwZT0ib2JqZWN0IiBpbnRlcmZhY2U9IndsX3N1cmZhY2UiLz4KKyAgICAgIDxh
cmcgbmFtZT0iaWQiIHR5cGU9InVpbnQiLz4KKyAgICA8L3JlcXVlc3Q+CisKKyAgPC9pbnRlcmZh
Y2U+CisKKzwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggOWZlOTQ1Yi4uOTQ1YmFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcApAQCAtNDc4LDEyICs0NzgsNiBAQCBzdGF0aWMgYm9vbCB3ZWJraXRXZWJWaWV3
UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UqCiAg
ICAgICAgIGNhaXJvX2ZpbGwoY3IpOwogICAgIH0KIAotI2lmIFVTRShFR0wpICYmIFBMQVRGT1JN
KFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiAhZGVmaW5lZChH
VEtfQVBJX1ZFUlNJT05fMikKLSAgICBpZiAoZGlzcGxheVR5cGUgPT0gRElTUExBWV9UWVBFX1dB
WUxBTkQpIHsKLSAgICAgICAgcHJpdi0+d2F5bGFuZENvbXBvc2l0b3ItPm5leHRGcmFtZSgpOwot
ICAgIH0KLSNlbmRpZgotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTkxNSw3ICs5
MDksMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEZXN0cm95KEd0a1dpZGdldCog
d2lkZ2V0KQogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJf
VklFV19CQVNFKHdpZGdldCktPnByaXY7CiAgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlh
bG9nKQogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocHJpdi0+YXV0aGVudGljYXRpb25EaWFs
b2cpOwotCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBVU0UoRUdMKSAmJiBQTEFURk9S
TShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgIWRlZmluZWQo
R1RLX0FQSV9WRVJTSU9OXzIpCisgICAgaWYgKHByaXYtPndheWxhbmRDb21wb3NpdG9yKQorICAg
ICAgICBwcml2LT53YXlsYW5kQ29tcG9zaXRvci0+cmVtb3ZlV2lkZ2V0KHdpZGdldCk7CisjZW5k
aWYKICAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFz
cyktPmRlc3Ryb3kod2lkZ2V0KTsKIH0KIApAQCAtMTAwMSw5ICs5OTgsMTkgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZp
ZXdCYXNlLCBXZWJDb24KICAgICBwcml2LT5wYWdlUHJveHkgPSBjb250ZXh0LT5jcmVhdGVXZWJQ
YWdlKCpwcml2LT5wYWdlQ2xpZW50LCBwYWdlR3JvdXApOwogICAgIHByaXYtPnBhZ2VQcm94eS0+
aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVm
aW5lZChHREtfV0lORE9XSU5HX1gxMSkKLSAgICBpZiAocHJpdi0+cmVkaXJlY3RlZFdpbmRvdykK
LSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93
SWQocHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+d2luZG93SWQoKSk7CisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQorICAgIERpc3BsYXlUeXBlIGRpc3BsYXlUeXBlID0gZ2V0RGlzcGxheVR5cGUo
KTsKKyAgICBpZiAoZGlzcGxheVR5cGUgPT0gRElTUExBWV9UWVBFX1dBWUxBTkQpIHsKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZ
TEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCisgICAgICAgIGlmIChwcml2LT53
YXlsYW5kQ29tcG9zaXRvcikKKyAgICAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHByaXYtPndheWxhbmRDb21wb3NpdG9yLT5nZXRXaWRn
ZXRJZChHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSkpOworI2VuZGlmCisgICAgfSBlbHNl
IHsKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQorICAgICAgICBpZiAocHJpdi0+cmVk
aXJlY3RlZFdpbmRvdykKKyAgICAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0lkKCkp
OworI2VuZGlmCisgICAgfQogI2VuZGlmCiAKICAgICB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZVBy
ZWZlcmVuY2VzKHdlYmtpdFdlYlZpZXdCYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDU2
YTE4NjQuLmY0ZmI3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMTYzLDIxICsxNjMsMTkg
QEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbml0aWFsaXplKCkKICAgICBpZiAobV9kaXNwbGF5
VHlwZSA9PSBESVNQTEFZX1RZUEVfV0FZTEFORCkgewogI2lmIFVTRShFR0wpICYmIFBMQVRGT1JN
KFdBWUxBTkQpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQogICAgICAgICAvLyBS
ZXF1ZXN0IGEgd2F5bGFuZCBzdXJmYWNlIGZyb20gdGhlIG5lc3RlZCB3YXlsYW5kIGNvbXBvc2l0
b3IKKyAgICAgICAgSW50U2l6ZSB3ZWJQYWdlU2l6ZSA9IG1fd2ViUGFnZS0+c2l6ZSgpOwogICAg
ICAgICBXYXlsYW5kRGlzcGxheSogZGlzcGxheSA9IFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgp
OwotICAgICAgICBtX3dsU3VyZmFjZSA9IGRpc3BsYXktPmNyZWF0ZVN1cmZhY2UoMSwgMSk7Cisg
ICAgICAgIG1fd2xTdXJmYWNlID0gZGlzcGxheS0+Y3JlYXRlU3VyZmFjZSh3ZWJQYWdlU2l6ZS53
aWR0aCgpLCB3ZWJQYWdlU2l6ZS5oZWlnaHQoKSwgbV93ZWJQYWdlLT5uYXRpdmVXaW5kb3dIYW5k
bGUoKSk7CiAgICAgICAgIGlmICghbV93bFN1cmZhY2UpCiAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLy8gUmVzaXplIHRoZSBzdXJmYWNlIHRvIG1hdGNoIHRoZSBzaXplIG9mIHRoZSB3
ZWIgcGFnZQotICAgICAgICBJbnRTaXplIHdlYlBhZ2VTaXplID0gbV93ZWJQYWdlLT5zaXplKCk7
Ci0gICAgICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2xTdXJmYWNlLT5uYXRpdmVXaW5kb3dI
YW5kbGUoKSwgd2ViUGFnZVNpemUud2lkdGgoKSwgd2ViUGFnZVNpemUuaGVpZ2h0KCksIDAsIDAp
OwotCi0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgbm9uLXplcm8gd2luZG93IGhhbmRsZSBz
byB0aGF0IHdlYmtpdCByZWFsaXplcyB3ZSBhcmUgZ29vZCB0byBnbyBmb3IgQUMuCi0gICAgICAg
IC8vIFdlIGNhbiBwcm9iYWJseSBmaW5kIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzIGZv
ciBXYXlsYW5kCi0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC53aW5kb3dIYW5kbGUgPSBtX3ds
U3VyZmFjZS0+bmF0aXZlV2luZG93SGFuZGxlKCkgPyAxIDogMDsKICNlbmRpZgotICAgIH0gZWxz
ZQotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5u
YXRpdmVXaW5kb3dIYW5kbGUoKTsKKyAgICB9CisKKyAgICAvLyBJbiB0aGUgY2FzZSBvZiBXYXls
YW5kIHRoaXMgaXMgbm90IHJlYWxseSBhIG5hdGl2ZSB3aW5kb3cgaGFuZGxlCisgICAgLy8gYnV0
IGFuIGludGVybmFsIElEIGdlbmVyYXRlZCBieSB0aGUgbmVzdGVkIGNvbXBvc2l0b3IgZm9yIHRo
ZSB3aWRnZXQKKyAgICAvLyBiYWNrZWQgYnkgdGhpcyBzdXJmYWNlLiBXZSBvbmx5IG5lZWQgaXQg
dG8gdGVsbCBXZWJLaXQgdGhhdCB3ZSBhcmUKKyAgICAvLyBnb29kIHRvIGdvIGZvciBBQyBoZXJl
CisgICAgbV9sYXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9IG1fd2ViUGFnZS0+bmF0aXZl
V2luZG93SGFuZGxlKCk7CiAKICAgICBHTENvbnRleHQqIGNvbnRleHQgPSBnbENvbnRleHQoKTsK
ICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNjUsMTIgKzM2Myw2IEBAIGdib29sZWFuIExheWVyVHJl
ZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2soTGF5ZXJUcmVlSG9zdEd0ayog
bGF5ZXJUCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cXVldWVMYXllckZsdXNoKHVuc2lnbmVk
IGludGVydmFsKQogewotICAgIGlmIChtX2Rpc3BsYXlUeXBlID09IERJU1BMQVlfVFlQRV9XQVlM
QU5EKSB7Ci0jaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgZGVmaW5lZChHREtf
V0lORE9XSU5HX1dBWUxBTkQpCi0gICAgICAgIC8vIExldCB0aGUgY29tcG9zaXRvciBrbm93IHRo
YXQgd2Ugd2FudCB0byByZW5kZXIgYSBuZXcgZnJhbWUKLSAgICAgICAgbV93bFN1cmZhY2UtPnJl
cXVlc3RGcmFtZSgpOwotI2VuZGlmCi0gICAgfQogICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJh
Y2tJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHREtfUFJJT1JJVFlfRVZFTlRTLCBpbnRlcnZhbCwg
cmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obGF5ZXJGbHVzaFRpbWVyRmlyZWRDYWxsYmFj
ayksIHRoaXMsIDApOwogICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fbGF5ZXJGbHVzaFRp
bWVyQ2FsbGJhY2tJZCwgIltXZWJLaXRdIGxheWVyRmx1c2hUaW1lckZpcmVkQ2FsbGJhY2siKTsK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>255744</attachid>
            <date>2015-06-29 04:52:08 -0700</date>
            <delta_ts>2015-06-29 04:52:08 -0700</delta_ts>
            <desc>video playback ended.</desc>
            <filename>video_play.log</filename>
            <type>text/plain</type>
            <size>885</size>
            <attacher name="nick">unixman</attacher>
            
              <data encoding="base64">KGVwaXBoYW55OjcyNik6IEdMaWItR09iamVjdC1XQVJOSU5HICoqOiBUaGUgcHJvcGVydHkgR3Rr
U2V0dGluZ3M6Z3RrLXNob3ctaW5wdXQtbWV0aG9kLW1lbnUgaXMgZGVwcmVjYXRlZCBhbmQgc2hv
dWxkbid0IGJlIHVzZWQgYW55bW9yZS4gSXQgd2lsbCBiZSAKcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2
ZXJzaW9uLgoKKFdlYktpdFdlYlByb2Nlc3M6MTAxMSk6IEdkay1DUklUSUNBTCAqKjogZ2RrX3Nj
cmVlbl9nZXRfbW9uaXRvcl9zY2FsZV9mYWN0b3I6IGFzc2VydGlvbiAnbW9uaXRvcl9udW0gPCBn
ZGtfc2NyZWVuX2dldF9uX21vbml0b3JzIChzY3JlZW4pJyBmYWlsZWQKCihlcGlwaGFueTo3MjYp
OiBHZGstQ1JJVElDQUwgKio6IGdka19kZXZpY2VfZ2V0X3dpbmRvd19hdF9wb3NpdGlvbl9kb3Vi
bGU6IGFzc2VydGlvbiAnR0RLX0lTX0RFVklDRSAoZGV2aWNlKScgZmFpbGVkCgooZXBpcGhhbnk6
NzI2KTogR2RrLUNSSVRJQ0FMICoqOiBnZGtfd2luZG93X2dldF90b3BsZXZlbDogYXNzZXJ0aW9u
ICdHREtfSVNfV0lORE9XICh3aW5kb3cpJyBmYWlsZWQKCihlcGlwaGFueTo3MjYpOiBHZGstQ1JJ
VElDQUwgKio6IGdka193aW5kb3dfZ2V0X2RldmljZV9wb3NpdGlvbl9kb3VibGU6IGFzc2VydGlv
biAnR0RLX0lTX1dJTkRPVyAod2luZG93KScgZmFpbGVkCmxpYnZhIGluZm86IFZBLUFQSSB2ZXJz
aW9uIDAuMzcuMApsaWJ2YSBpbmZvOiB2YV9nZXREcml2ZXJOYW1lKCkgcmV0dXJucyAwCmxpYnZh
IGluZm86IFRyeWluZyB0byBvcGVuIC91c3IvbGliL2RyaS9pOTY1X2Rydl92aWRlby5zbwpsaWJ2
YSBpbmZvOiBGb3VuZCBpbml0IGZ1bmN0aW9uIF9fdmFEcml2ZXJJbml0XzBfMzcKbGlidmEgaW5m
bzogdmFfb3BlbkRyaXZlcigpIHJldHVybnMgMAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286288</attachid>
            <date>2016-08-17 00:28:30 -0700</date>
            <delta_ts>2016-08-17 00:55:31 -0700</delta_ts>
            <desc>New complete patch</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>207278</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYWNkY2FmLi5kNDBlMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTE2ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBzaG91
bGQgcmV0cmlldmUgbGlmZWN5Y2xlIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCBmZWEyYzJjLi5jN2FkYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTQ0
LDYgKzE0NCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCiAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKQEAgLTM0OCwyNCArMzUwLDYgQEAgaWYg
KEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XQVlM
QU5EX1RBUkdFVCkKLSAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgotICAgIGFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICAgICBERVBFTkRTICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBzZXJ2ZXIt
aGVhZGVyIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L1dlYktpdEd0a1dheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCi0gICAgICAgIENPTU1BTkQgd2F5
bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLmgK
LSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnht
bCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50
UHJvdG9jb2wuYwotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3Bw
Ci0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNw
cAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAot
ICAgICkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwotICAgICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3Rv
Y29sLmMKLSAgICApCi0KICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgICAgICR7V0FZTEFORF9JTkNMVURFX0RJUlN9CiAgICAgKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggZGU2MTI0
OC4uNjNkN2ZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuY3BwCkBAIC0xOSwxMCArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYg
RU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0KICNpbmNsdWRlICJHTENvbnRleHQuaCIKLQot
I2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZp
Yy5oPgogCiAjaWYgVVNFKEVHTCkKQEAgLTU3LDEyICs1NCw2IEBAIGlubGluZSBUaHJlYWRHbG9i
YWxHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0KCkKICAgICByZXR1cm4gKlRocmVhZEdsb2JhbEdM
Q29udGV4dDo6c3RhdGljR0xDb250ZXh0OwogfQogCi1HTENvbnRleHQqIEdMQ29udGV4dDo6c2hh
cmluZ0NvbnRleHQoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0Piwgc2hhcmluZywgKGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQo
KSkpOwotICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwotfQotCiAjaWYgUExBVEZPUk0oWDExKQog
Ly8gQmVjYXVzZSBvZiBkcml2ZXIgYnVncywgZXhpdGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJl
IGFyZSBhY3RpdmUgcGJ1ZmZlcnMKIC8vIGNhbiBjcmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFz
IGJlZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgTnZpZGlhIGRyaXZlcnMpLgpAQCAtMTEx
LDEzICsxMDIsMzEgQEAgdm9pZCBHTENvbnRleHQ6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhp
dCgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oWDExKQogCitzdGF0aWMgYm9vbCBpbml0aWFsaXpl
T3BlbkdMU2hpbXNJZk5lZWRlZCgpCit7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVy
biB0cnVlOworI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAg
IHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAg
ICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOworICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBzdWNjZXNzOworI2VuZGlmCit9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRv
dyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0
Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxh
eSogcGxhdGZvcm1EaXNwbGF5KQogeworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZO
ZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBQbGF0Zm9ybURpc3BsYXkm
IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkgPyAqcGxhdGZvcm1EaXNwbGF5IDogUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CiAjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVH
TCkKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewotICAgICAgICBpZiAoYXV0byBlZ2xDb250
ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0Nv
bnRleHQpKQotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZWdsQ29udGV4dCk7CisgICAgaWYg
KGRpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAg
ICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdp
bmRvd0hhbmRsZSwgZGlzcGxheSkpCisgICAgICAgICAgICByZXR1cm4gZWdsQ29udGV4dDsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2VuZGlmCkBAIC0xMjgsMzQgKzEzNyw2MyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiAjZWxzZQogICAgIFhJRCBHTFhXaW5kb3dIYW5kbGUg
PSBzdGF0aWNfY2FzdDxYSUQ+KHdpbmRvd0hhbmRsZSk7CiAjZW5kaWYKLSAgICBpZiAoYXV0byBn
bHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdMWFdpbmRvd0hhbmRsZSwg
c2hhcmluZ0NvbnRleHQpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhDb250ZXh0KTsKKyAg
ICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdMWFdp
bmRvd0hhbmRsZSwgZGlzcGxheSkpCisgICAgICAgIHJldHVybiBnbHhDb250ZXh0OwogI2VuZGlm
CiAjaWYgVVNFKEVHTCkKLSAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpj
cmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQotICAgICAgICByZXR1
cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKKyAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250
ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgZGlzcGxheSkpCisgICAgICAgIHJl
dHVybiBlZ2xDb250ZXh0OwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdMQ29u
dGV4dDo6R0xDb250ZXh0KCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6
Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChQbGF0Zm9ybURpc3BsYXkqIHBsYXRmb3JtRGlzcGxheSkK
IHsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgYWRkQWN0aXZlQ29udGV4dCh0aGlzKTsKKyAgICBp
ZiAoIWluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coMCwgcGxhdGZvcm1EaXNw
bGF5ID8gcGxhdGZvcm1EaXNwbGF5IDogJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVTaGFy
aW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkpCit7CisgICAgaWYgKCFpbml0aWFs
aXplT3BlbkdMU2hpbXNJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKGRpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlz
cGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xD
b250ZXh0RUdMOjpjcmVhdGVTaGFyaW5nQ29udGV4dChkaXNwbGF5KSkKKyAgICAgICAgICAgIHJl
dHVybiBlZ2xDb250ZXh0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAjZW5kaWYK
KyNpZiBVU0UoR0xYKQorICAgIGlmIChhdXRvIGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNy
ZWF0ZVNoYXJpbmdDb250ZXh0KGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gZ2x4Q29udGV4dDsK
KyNlbmRpZgorI2lmIFVTRShFR0wpCisgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4
dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlzcGxheSkpCisgICAgICAgIHJldHVybiBlZ2xD
b250ZXh0OworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KQorR0xDb250ZXh0OjpHTENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBk
aXNwbGF5KQorICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNv
bnRleHRGb3JXaW5kb3coMCwgc2hhcmluZ0NvbnRleHQpOworI2lmIFBMQVRGT1JNKFgxMSkKKyAg
ICBpZiAoZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAg
ICAgIGFkZEFjdGl2ZUNvbnRleHQodGhpcyk7CisjZW5kaWYKIH0KIAogR0xDb250ZXh0Ojp+R0xD
b250ZXh0KCkKIHsKICAgICBpZiAodGhpcyA9PSBjdXJyZW50Q29udGV4dCgpLT5jb250ZXh0KCkp
Ci0gICAgICAgIGN1cnJlbnRDb250ZXh0KCktPnNldENvbnRleHQoMCk7CisgICAgICAgIGN1cnJl
bnRDb250ZXh0KCktPnNldENvbnRleHQobnVsbHB0cik7CiAjaWYgUExBVEZPUk0oWDExKQotICAg
IHJlbW92ZUFjdGl2ZUNvbnRleHQodGhpcyk7CisgICAgaWYgKG1fZGlzcGxheS50eXBlKCkgPT0g
UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJlbW92ZUFjdGl2ZUNvbnRleHQo
dGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTY1LDcgKzIwMyw3IEBAIGJvb2wgR0xDb250ZXh0Ojpt
YWtlQ29udGV4dEN1cnJlbnQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1HTENvbnRleHQqIEdM
Q29udGV4dDo6Z2V0Q3VycmVudCgpCitHTENvbnRleHQqIEdMQ29udGV4dDo6Y3VycmVudCgpCiB7
CiAgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0KCktPmNvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKaW5kZXggZDQzOTQ1NC4uMWI4NmEz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKQEAg
LTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgR0xDb250ZXh0X2gKIAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNw
bGF5LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNpZiBVU0UoRUdMKSAmJiAh
UExBVEZPUk0oR1RLKQpAQCAtMzksMjEgKzM5LDE4IEBAIHR5cGVkZWYgdWludDY0X3QgR0xOYXRp
dmVXaW5kb3dUeXBlOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX2RldmljZSBjYWlyb19kZXZpY2Vf
dDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oWDExKQotdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5
IERpc3BsYXk7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHTENvbnRl
eHQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dCk7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR0xDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZUNvbnRleHRGb3JX
aW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZU9m
ZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nID0gMCk7Ci0gICAgc3RhdGljIEdMQ29u
dGV4dCogZ2V0Q3VycmVudCgpOwotICAgIHN0YXRpYyBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0
KCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZUNvbnRleHRG
b3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgUGxhdGZvcm1EaXNwbGF5
KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVh
dGVPZmZzY3JlZW5Db250ZXh0KFBsYXRmb3JtRGlzcGxheSogPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZv
cm1EaXNwbGF5Jik7CisgICAgc3RhdGljIEdMQ29udGV4dCogY3VycmVudCgpOworCisgICAgUGxh
dGZvcm1EaXNwbGF5JiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CiAKLSAg
ICBHTENvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHQoKTsKICAgICB2aXJ0dWFsIGJv
b2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkg
PSAwOwpAQCAtNjcsMjYgKzY0LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNhaXJvX2Rldmlj
ZV90KiBjYWlyb0RldmljZSgpID0gMDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oWDExKQotICAg
IHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFEaXNwbGF5KCk7Ci0gICAgc3RhdGljIHZvaWQgY2xl
YW51cFNoYXJlZFgxMURpc3BsYXkoKTsKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkK
KyAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCkg
PSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShYMTEpCitwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
QWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwQWN0aXZl
Q29udGV4dHNBdEV4aXQoKTsKLQotI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQotICAg
IHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSA9IDA7
CiAjZW5kaWYKIAotICAgIGNsYXNzIERhdGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVh
bCB+RGF0YSgpID0gZGVmYXVsdDsKLSAgICB9OwotCiBwcm90ZWN0ZWQ6Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPERhdGE+IG1fY29udGV4dERhdGE7CisgICAgR0xDb250ZXh0KFBsYXRmb3JtRGlzcGxh
eSYpOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBtX2Rpc3BsYXk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAxNWNkNGRmLi42YTcz
MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIEcKIHsKICAgICBzd2l0Y2ggKHJlbmRlclN0eWxlKSB7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgotICAgICAgICBtX2dsQ29udGV4
dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRleHQ6OnNoYXJpbmdD
b250ZXh0KCkpOworICAgICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2Ny
ZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmco
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRv
Q3VycmVudEdMQ29udGV4dDoKICAgICAgICAgYnJlYWs7CkBAIC04NSw3ICs4NSw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQoKQogCiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxhdGZvcm1Db250
ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9nbENvbnRleHQgPyBtX2dsQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCkgOiBHTENvbnRleHQ6OmdldEN1cnJlbnQoKS0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDog
R0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwogfQogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgaWYgKG1f
Y29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0LT5tX3N0YXRlLmJvdW5kRkJP
ID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBHTENvbnRleHQqIHBy
ZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpOworICAgICAgICBH
TENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwog
ICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQog
ICAgICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5k
ZXggMmU5MWFhMy4uZTljY2MwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCiAKKyNpbmNsdWRlICJH
TENvbnRleHQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPG11dGV4PgogCkBAIC01
OSw2ICs2MCw4IEBACiAKICNpZiBVU0UoRUdMKQogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc5LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0Zm9ybURpc3Bs
YXkoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBpZiAoR0RLX0lTX1dBWUxB
TkRfRElTUExBWShkaXNwbGF5KSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheVdheWxh
bmQ6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kPihnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkp
KTsKICNlbmRpZgogI2VuZGlmCiAjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9F
Q09SRV9YKQpAQCAtMTAzLDYgKzEwNiwxOCBAQCBQbGF0Zm9ybURpc3BsYXkmIFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpCiAgICAgcmV0dXJuICpkaXNwbGF5OwogfQogCitzdGF0aWMg
UGxhdGZvcm1EaXNwbGF5KiBzX3NoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZzsKKworUGxhdGZv
cm1EaXNwbGF5JiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygp
Cit7CisgICAgcmV0dXJuIHNfc2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nID8gKnNfc2hhcmVk
RGlzcGxheUZvckNvbXBvc2l0aW5nIDogc2hhcmVkRGlzcGxheSgpOworfQorCit2b2lkIFBsYXRm
b3JtRGlzcGxheTo6c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKFBsYXRmb3JtRGlzcGxh
eSYgZGlzcGxheSkKK3sKKyAgICBzX3NoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyA9ICZkaXNw
bGF5OworfQorCiBQbGF0Zm9ybURpc3BsYXk6OlBsYXRmb3JtRGlzcGxheSgpCiAjaWYgVVNFKEVH
TCkKICAgICA6IG1fZWdsRGlzcGxheShFR0xfTk9fRElTUExBWSkKQEAgLTExNyw3ICsxMzIsMjAg
QEAgUGxhdGZvcm1EaXNwbGF5Ojp+UGxhdGZvcm1EaXNwbGF5KCkKICNlbmRpZgogfQogCitHTENv
bnRleHQqIFBsYXRmb3JtRGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCgpCit7CisgICAgaWYgKCFt
X3NoYXJpbmdHTENvbnRleHQpCisgICAgICAgIG1fc2hhcmluZ0dMQ29udGV4dCA9IEdMQ29udGV4
dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoKnRoaXMpOworICAgIHJldHVybiBtX3NoYXJpbmdHTENv
bnRleHQuZ2V0KCk7Cit9CisKICNpZiBVU0UoRUdMKQorc3RhdGljIEhhc2hTZXQ8UGxhdGZvcm1E
aXNwbGF5Kj4mIGVnbERpc3BsYXlzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxQbGF0Zm9ybURpc3BsYXkqPj4gZGlzcGxheXM7CisgICAgcmV0dXJuIGRpc3BsYXlzOwor
fQorCiBFR0xEaXNwbGF5IFBsYXRmb3JtRGlzcGxheTo6ZWdsRGlzcGxheSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2VnbERpc3BsYXlJbml0aWFsaXplZCkKQEAgLTEzMCw3ICsxNTgsNyBAQCB2b2lk
IFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgIG1fZWdsRGlzcGxh
eUluaXRpYWxpemVkID0gdHJ1ZTsKIAogICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJ
U1BMQVkpIHsKLS8vIEVHTCBpcyBvcHRpb25hbGx5IHNvZnQgbGlua2VkIG9uIFdpbmRvd3MuCisg
ICAgICAgIC8vIEVHTCBpcyBvcHRpb25hbGx5IHNvZnQgbGlua2VkIG9uIFdpbmRvd3MuCiAjaWYg
UExBVEZPUk0oV0lOKQogICAgICAgICBhdXRvIGVnbEdldERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5
UHRyKCk7CiAgICAgICAgIGlmICghZWdsR2V0RGlzcGxheSkKQEAgLTE0NywzMCArMTc1LDMxIEBA
IHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgc3RhdGljIGNvbnN0IEVH
TGVudW0gZWdsQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfRVNfQVBJOwotI2Vsc2UKLSAgICBzdGF0
aWMgY29uc3QgRUdMZW51bSBlZ2xBUElWZXJzaW9uID0gRUdMX09QRU5HTF9BUEk7Ci0jZW5kaWYK
LSAgICBpZiAoZWdsQmluZEFQSShlZ2xBUElWZXJzaW9uKSA9PSBFR0xfRkFMU0UpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IEVHTCBBUEkoJWQpLiIsIGVnbEdldEVycm9yKCkp
OwotICAgICAgICB0ZXJtaW5hdGVFR0xEaXNwbGF5KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBl
Z2xEaXNwbGF5cygpLmFkZCh0aGlzKTsKKworICAgIHN0YXRpYyBib29sIGVnbEF0ZXhpdEhhbmRs
ZXJJbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghZWdsQXRleGl0SGFuZGxlckluaXRpYWxp
emVkKSB7CisgICAgICAgIC8vIEVHTCByZWdpc3RlcnMgYXRleGl0IGhhbmRsZXJzIHRvIGNsZWFu
dXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCisgICAgICAgIC8vIFNpbmNlIHRoZSBnbG9iYWwg
UGxhdGZvcm1EaXNwbGF5IGluc3RhbmNlIGlzIGNyZWF0ZWQgYmVmb3JlLAorICAgICAgICAvLyB3
aGVuIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVzdHJ1Y3RvciBpcyBjYWxsZWQsIEVHTCBoYXMgYWxy
ZWFkeSByZW1vdmVkIHRoZQorICAgICAgICAvLyBkaXNwbGF5IGZyb20gdGhlIGxpc3QsIGNhdXNp
bmcgZWdsVGVybWluYXRlKCkgdG8gY3Jhc2guIFNvLCBoZXJlIHdlIHJlZ2lzdGVyCisgICAgICAg
IC8vIG91ciBvd24gYXRleGl0IGhhbmRsZXIsIGFmdGVyIEVHTCBoYXMgYmVlbiBpbml0aWFsaXpl
ZCBhbmQgYWZ0ZXIgdGhlIGdsb2JhbAorICAgICAgICAvLyBpbnN0YW5jZSBoYXMgYmVlbiBjcmVh
dGVkIHRvIGVuc3VyZSB3ZSBjYWxsIGVnbFRlcm1pbmF0ZSgpIGJlZm9yZSB0aGUgb3RoZXIKKyAg
ICAgICAgLy8gRUdMIGF0ZXhpdCBoYW5kbGVycyBhbmQgdGhlIFBsYXRmb3JtRGlzcGxheSBkZXN0
cnVjdG9yLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1Nzk3My4KKyAgICAgICAgZWdsQXRleGl0SGFuZGxlckluaXRpYWxpemVkID0gdHJ1
ZTsKKyAgICAgICAgc3RkOjphdGV4aXQoW10geworICAgICAgICAgICAgd2hpbGUgKCFlZ2xEaXNw
bGF5cygpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGRpc3BsYXkgPSBlZ2xE
aXNwbGF5cygpLnRha2VBbnkoKTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5LT50ZXJtaW5hdGVF
R0xEaXNwbGF5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwogICAgIH0KLQotICAgIC8v
IEVHTCByZWdpc3RlcnMgYXRleGl0IGhhbmRsZXJzIHRvIGNsZWFudXAgaXRzIGdsb2JhbCBkaXNw
bGF5IGxpc3QuCi0gICAgLy8gU2luY2UgdGhlIGdsb2JhbCBQbGF0Zm9ybURpc3BsYXkgaW5zdGFu
Y2UgaXMgY3JlYXRlZCBiZWZvcmUsCi0gICAgLy8gd2hlbiB0aGUgUGxhdGZvcm1EaXNwbGF5IGRl
c3RydWN0b3IgaXMgY2FsbGVkLCBFR0wgaGFzIGFscmVhZHkgcmVtb3ZlZCB0aGUKLSAgICAvLyBk
aXNwbGF5IGZyb20gdGhlIGxpc3QsIGNhdXNpbmcgZWdsVGVybWluYXRlKCkgdG8gY3Jhc2guIFNv
LCBoZXJlIHdlIHJlZ2lzdGVyCi0gICAgLy8gb3VyIG93biBhdGV4aXQgaGFuZGxlciwgYWZ0ZXIg
RUdMIGhhcyBiZWVuIGluaXRpYWxpemVkIGFuZCBhZnRlciB0aGUgZ2xvYmFsCi0gICAgLy8gaW5z
dGFuY2UgaGFzIGJlZW4gY3JlYXRlZCB0byBlbnN1cmUgd2UgY2FsbCBlZ2xUZXJtaW5hdGUoKSBi
ZWZvcmUgdGhlIG90aGVyCi0gICAgLy8gRUdMIGF0ZXhpdCBoYW5kbGVycyBhbmQgdGhlIFBsYXRm
b3JtRGlzcGxheSBkZXN0cnVjdG9yLgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTczLgotICAgIHN0ZDo6YXRleGl0KFtdIHsgUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudGVybWluYXRlRUdMRGlzcGxheSgpOyB9KTsKIH0KIAog
dm9pZCBQbGF0Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkoKQogeworICAgIG1fc2hh
cmluZ0dMQ29udGV4dCA9IG51bGxwdHI7CiAgICAgQVNTRVJUKG1fZWdsRGlzcGxheUluaXRpYWxp
emVkKTsKICAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybURpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5oCmluZGV4IDkyMDlmNDUuLjlkMDkwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCkBAIC0zNSwxMCArMzUsMTMg
QEAgdHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEdMQ29udGV4dDsKKwogY2xhc3MgUGxhdGZvcm1EaXNwbGF5IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQbGF0Zm9ybURpc3BsYXkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5JiBzaGFyZWREaXNwbGF5KCk7CisgICAg
c3RhdGljIFBsYXRmb3JtRGlzcGxheSYgc2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCk7CiAg
ICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5KCk7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgewpA
QCAtNTUsNiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
ID0gMDsKIAorICAgIEdMQ29udGV4dCogc2hhcmluZ0dMQ29udGV4dCgpOworCiAjaWYgVVNFKEVH
TCkKICAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkoKSBjb25zdDsKICNlbmRpZgpAQCAtNjIsNiAr
NjcsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1EaXNwbGF5KCk7CiAKKyAg
ICBzdGF0aWMgdm9pZCBzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoUGxhdGZvcm1EaXNw
bGF5Jik7CisKICNpZiBVU0UoRUdMKQogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplRUdMRGlz
cGxheSgpOwogCkBAIC03Niw2ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fZWdsRGlz
cGxheUluaXRpYWxpemVkIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHQ+IG1fc2hhcmluZ0dMQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOGY0OGMyMC4uM2NkMmFiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKQEAgLTg4LDggKzg4LDggQEAgSW1hZ2VCdWZmZXJEYXRhOjp+SW1hZ2VC
dWZmZXJEYXRhKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4
dDo6Z2V0Q3VycmVudCgpOwotICAgIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBH
TENvbnRleHQ6OmN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlG
b3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKICAgICBpZiAobV90ZXh0dXJlKQogICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3Rl
eHR1cmUpOwpAQCAtMTA4LDcgKzEwOCw4IEBAIEltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVy
RGF0YSgpCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogdm9pZCBJbWFn
ZUJ1ZmZlckRhdGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKQogewotICAgIEdMQ29udGV4dDo6
c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgYXV0byogY29udGV4
dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmlu
Z0dMQ29udGV4dCgpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKQEAgLTExOSwxNSArMTIwLDE0
IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCkKICAgICBn
bFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOwogICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwICwgR0xfUkdCQSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQo
KSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKLSAgICBjYWlyb19kZXZpY2Vf
dCogZGV2aWNlID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5jYWlyb0RldmljZSgpOwot
ICAgIG1fY29tcG9zaXRvclN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0
ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9z
aXRvclRleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICBtX2Nv
bXBvc2l0b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3Rl
eHR1cmUoY29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwg
bV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOwog
ICAgIG1fY29tcG9zaXRvckNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fY29tcG9zaXRvclN1
cmZhY2UuZ2V0KCkpKTsKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fY29tcG9zaXRvckNyLmdl
dCgpLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpz
d2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29u
dGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpOworICAgIEdMQ29udGV4dCogcHJldmlvdXNB
Y3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CiAKICAgICBpZiAoIW1fY29tcG9z
aXRvclRleHR1cmUpIHsKICAgICAgICAgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpOwpAQCAtMTU5
LDcgKzE1OSw4IEBAIHZvaWQgY2xlYXJTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkK
IAogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNhaXJvR0xTdXJmYWNlKCkKIHsKLSAgICBH
TENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGF1
dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGlu
ZygpLnNoYXJpbmdHTENvbnRleHQoKTsKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKIAogICAgIC8vIFdlIG11c3QgZ2VuZXJhdGUgdGhlIHRleHR1cmUgb3Vyc2VsdmVzLCBiZWNh
dXNlIHRoZXJlIGlzIG5vIENhaXJvIEFQSSBmb3IgZXh0cmFjdGluZyBpdAogICAgIC8vIGZyb20g
YSBwcmUtZXhpc3Rpbmcgc3VyZmFjZS4KQEAgLTE3NCw3ICsxNzUsNiBAQCB2b2lkIEltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UoKQogCiAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAgLyogbGV2ZWwgKi8sIEdMX1JHQkEsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCksIDAgLyogYm9yZGVyICovLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsK
IAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsK
ICAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKIAog
ICAgIC8vIFRocmVhZC1hd2FyZW5lc3MgaXMgYSBodWdlIHBlcmZvcm1hbmNlIGhpdCBvbiBub24t
SW50ZWwgZHJpdmVycy4KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3Qg
RgogICAgIEFTU0VSVChtX3RleHR1cmUpOwogCiAgICAgLy8gQ2Fpcm8gbWF5IGNoYW5nZSB0aGUg
YWN0aXZlIGNvbnRleHQsIHNvIHdlIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgYmFjayBhZnRlciBm
bHVzaGluZy4KLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4
dDo6Z2V0Q3VycmVudCgpOworICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0g
R0xDb250ZXh0OjpjdXJyZW50KCk7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX3N1cmZhY2Uu
Z2V0KCkpOwogICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKQEAgLTYwOSw3ICs2MDksNyBAQCBib29sIEltYWdlQnVmZmVyOjpjb3B5VG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QmLCBHQzNEZW51bSB0YXJnZXQsIFBsYQogCiAgICAgY2Fp
cm9fc3VyZmFjZV9mbHVzaChtX2RhdGEubV9zdXJmYWNlLmdldCgpKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3coMCwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0
KCZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKICAgICBj
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB1aW50MzJfdCBmYm87CiAgICAgZ2xH
ZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IGEyYmM3NWIuLjBhZTMxYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaWYgVVNFKEVHTCkKIAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCiAKICNp
ZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAgLTQwLDYgKzM5LDExIEBACiAjaW5j
bHVkZSA8WDExL1hsaWIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgiCisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKIC8vIGNhaXJvLWds
LmggaW5jbHVkZXMgc29tZSBkZWZpbml0aW9ucyBmcm9tIEdMWCB0aGF0IGNvbmZsaWN0IHdpdGgK
IC8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHVzLiBTaW5jZSBHTENvbnRleHRFR0wgZG9lc24ndCB1
c2UgYW55IEdMWApAQCAtNTAsMTEgKzU0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpOwotfQotCiBzdGF0aWMgY29u
c3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRlc1tdID0gewogI2lmIFVTRShPUEVOR0xfRVNfMikK
ICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKQEAgLTYyLDcgKzYxLDEzIEBAIHN0
YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7CiAgICAgRUdMX05PTkUK
IH07CiAKLXN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250
ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkKKyNpZiBVU0UoT1BFTkdMX0VTXzIp
CitzdGF0aWMgY29uc3QgRUdMZW51bSBnRUdMQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfRVNfQVBJ
OworI2Vsc2UKK3N0YXRpYyBjb25zdCBFR0xlbnVtIGdFR0xBUElWZXJzaW9uID0gRUdMX09QRU5H
TF9BUEk7CisjZW5kaWYKKworYm9vbCBHTENvbnRleHRFR0w6OmdldEVHTENvbmZpZyhFR0xEaXNw
bGF5IGRpc3BsYXksIEVHTENvbmZpZyogY29uZmlnLCBFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlw
ZSkKIHsKICAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0gewogI2lmIFVTRShPUEVOR0xfRVNf
MikKQEAgLTg3LDI3ICs5MiwyMyBAQCBzdGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMQ29uZmln
KiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUgc3VyZmFjZQogICAgICAgICBh
dHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEdMQ29udGV4dEVHTDo6V2luZG93U3VyZmFjZToKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6
U3VyZmFjZWxlc3M6CiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEVHTGludCBudW1iZXJDb25maWdzUmV0dXJu
ZWQ7Ci0gICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhzaGFyZWRFR0xEaXNwbGF5KCksIGF0dHJp
YnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29u
Zmlnc1JldHVybmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoZGlzcGxheSwgYXR0cmli
dXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25m
aWdzUmV0dXJuZWQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dDo6RGF0YT4m
JiBjb250ZXh0RGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxhdGZv
cm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7
Ci0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwot
Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChk
aXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQorICAg
IEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAg
RUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dT
dXJmYWNlKSkKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBXaW5kb3dT
dXJmYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQs
IGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0
ZXMpOwogICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMTE3LDE5ICsxMTgsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1QK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBnbENvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgV2luZG93U3Vy
ZmFjZSk7Ci0gICAgZ2xDb250ZXh0LT5tX2NvbnRleHREYXRhID0gV1RGTW92ZShjb250ZXh0RGF0
YSk7Ci0gICAgcmV0dXJuIGdsQ29udGV4dDsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1
cmZhY2UsIFdpbmRvd1N1cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVh
dGVQYnVmZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRF
R0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNw
bGF5LmVnbERpc3BsYXkoKTsKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdM
Q29uZmlnKCZjb25maWcsIFBidWZmZXJTdXJmYWNlKSkKKyAgICBpZiAoIWdldEVHTENvbmZpZyhk
aXNwbGF5LCAmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBj
b25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwpAQCAtMTQzLDE4ICsx
MzksMzYgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVh
dGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihjb250
ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0
LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOwogfQogCi0jaWYgUExBVEZPUk0oWDExKQotc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250
ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChQbGF0Zm9ybURpc3Bs
YXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBF
R0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgRUdMRGlzcGxheSBk
aXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKTsKICAgICBpZiAoZGlzcGxheSA9
PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBjb25zdCBj
aGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMp
OworICAgIGlmICghc3Ryc3RyKGV4dGVuc2lvbnMsICJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRl
eHQiKSAmJiAhc3Ryc3RyKGV4dGVuc2lvbnMsICJFR0xfS0hSX3N1cmZhY2VsZXNzX29wZW5nbCIp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAg
aWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCisgICAgaWYgKCFnZXRF
R0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgU3VyZmFjZWxlc3MpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlz
cGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBp
ZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVH
TChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVzcykp
OworfQorCisjaWYgUExBVEZPUk0oWDExKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZv
cm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CisgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBQaXhtYXBTdXJm
YWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBFR0xDb250ZXh0IGNvbnRleHQg
PSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250
ZXh0QXR0cmlidXRlcyk7CkBAIC0xNjcsNyArMTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hh
cmkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgRGlzcGxheSogeDExRGlz
cGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAgWFVu
aXF1ZVBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHgxMURpc3BsYXksIERlZmF1bHRSb290
V2luZG93KHgxMURpc3BsYXkpLCAxLCAxLCBkZXB0aCk7CiAgICAgaWYgKCFwaXhtYXApIHsKICAg
ICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CkBAIC0xODAsNDkgKzE5
NCwxMDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVh
dGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihjb250
ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHBpeG1hcCkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4
dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXApKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oWDEx
KQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRl
eHQpCisjaWYgUExBVEZPUk0oV0FZTEFORCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0
Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgaWYgKCFzaGFy
ZWRFR0xEaXNwbGF5KCkpCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5
LmVnbERpc3BsYXkoKTsKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmICghZ2V0RUdMQ29u
ZmlnKGRpc3BsYXksICZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3RhdGlj
IGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotI2lmICFVU0Uo
T1BFTkdMX0VTXzIpCi0gICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsK
LSNlbmRpZgotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgRUdMQ29udGV4dCBjb250
ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBn
Q29udGV4dEF0dHJpYnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJm
YWNlPiB3bFN1cmZhY2UoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4ocGxhdGZvcm1E
aXNwbGF5KS5jcmVhdGVTdXJmYWNlKCkpOworICAgIGlmICghd2xTdXJmYWNlKSB7CisgICAgICAg
IGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgaWYgKCFzdWNjZXNzKQorCisgICAgRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UuZ2V0KCksIDEsIDEpOwor
ICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwg
Y29uZmlnLCB3aW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7
CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICB3
bF9lZ2xfd2luZG93X2Rlc3Ryb3kod2luZG93KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCi0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0
ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQg
OiAwOwotICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2lu
ZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4
dCwgc3VyZmFjZSwgV1RGTW92ZSh3bFN1cmZhY2UpLCB3aW5kb3cpKTsKK30KKyNlbmRpZgorCitz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNw
bGF5KQoreworICAgIGlmIChwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpID09IEVHTF9OT19E
SVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChlZ2xCaW5kQVBJKGdF
R0xBUElWZXJzaW9uKSA9PSBFR0xfRkFMU0UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHBsYXRmb3JtRGlzcGxheS5zaGFyaW5n
R0xDb250ZXh0KCkgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihwbGF0Zm9ybURpc3BsYXku
c2hhcmluZ0dMQ29udGV4dCgpKS0+bV9jb250ZXh0IDogRUdMX05PX0NPTlRFWFQ7CisgICAgYXV0
byBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHBsYXRmb3Jt
RGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQocGxhdGZvcm1EaXNw
bGF5LCBlZ2xTaGFyaW5nQ29udGV4dCk7CisgICAgaWYgKCFjb250ZXh0KSB7CiAjaWYgUExBVEZP
Uk0oWDExKQorICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250
ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworI2VuZGlmCisjaWYgUExB
VEZPUk0oV0FZTEFORCkKKyAgICAgICAgaWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxh
dGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAgICAgICAgY29udGV4dCA9IGNyZWF0
ZVdheWxhbmRDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworI2Vu
ZGlmCisgICAgfQogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBp
eG1hcENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOworICAgICAgICBjb250ZXh0ID0gY3JlYXRl
UGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCk7CisKKyAg
ICByZXR1cm4gY29udGV4dDsKK30KKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3Jt
RGlzcGxheSkKK3sKKyAgICBpZiAocGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKSA9PSBFR0xf
Tk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoZWdsQmluZEFQ
SShnRUdMQVBJVmVyc2lvbikgPT0gRUdMX0ZBTFNFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChwbGF0Zm9ybURp
c3BsYXkpOworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAg
aWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEp
CisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURpc3Bs
YXkpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICAgICAgaWYgKHBsYXRmb3Jt
RGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAg
ICAgICAgY29udGV4dCA9IGNyZWF0ZVdheWxhbmRDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7Cisj
ZW5kaWYKKyAgICB9CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOworICAgICAgICBjb250ZXh0ID0gY3Jl
YXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKIAogICAgIHJldHVybiBjb250ZXh0
OwogfQogCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKLSAgICA6IG1fY29udGV4dChj
b250ZXh0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBkaXNw
bGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5
cGUgdHlwZSkKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKICAgICAsIG1fdHlwZSh0eXBlKQogewogICAg
IEFTU0VSVCh0eXBlICE9IFBpeG1hcFN1cmZhY2UpOworICAgIEFTU0VSVCh0eXBlID09IFN1cmZh
Y2VsZXNzIHx8IHN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOwogfQogCiAjaWYgUExBVEZPUk0o
WDExKQotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xT
dXJmYWNlIHN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJiBwaXhtYXApCi0gICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlz
cGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFhVbmlxdWVQaXht
YXAmJiBwaXhtYXApCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChj
b250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUoUGl4bWFwU3Vy
ZmFjZSkKICAgICAsIG1fcGl4bWFwKFdURk1vdmUocGl4bWFwKSkKQEAgLTIzMCw2ICszMDIsMTgg
QEAgR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJm
YWNlIHN1cmZhY2UsIFhVbmlxdWVQaXhtYXAKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZ
TEFORCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxh
eSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFdsVW5pcXVlUHRyPHN0
cnVjdCB3bF9zdXJmYWNlPiYmIHdsU3VyZmFjZSwgRUdMTmF0aXZlV2luZG93VHlwZSB3bFdpbmRv
dykKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKKyAgICAsIG1fdHlwZShXaW5kb3dTdXJmYWNlKQorICAg
ICwgbV93bFN1cmZhY2UoV1RGTW92ZSh3bFN1cmZhY2UpKQorICAgICwgbV93bFdpbmRvdyh3bFdp
bmRvdykKK3sKK30KKyNlbmRpZgorCiBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQogewog
I2lmIFVTRShDQUlSTykKQEAgLTIzNyw3ICszMjEsNyBAQCBHTENvbnRleHRFR0w6On5HTENvbnRl
eHRFR0woKQogICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsKICNl
bmRpZgogCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAg
IEVHTERpc3BsYXkgZGlzcGxheSA9IG1fZGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgaWYgKG1f
Y29udGV4dCkgewogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7
CiAgICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
U1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwpAQCAtMjQ2LDYgKzMzMCwxMSBAQCBHTENvbnRleHRF
R0w6On5HTENvbnRleHRFR0woKQogCiAgICAgaWYgKG1fc3VyZmFjZSkKICAgICAgICAgZWdsRGVz
dHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisgICAgaWYgKG1fd2xXaW5kb3cpCisgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveShtX3ds
V2luZG93KTsKKyNlbmRpZgogfQogCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZh
dWx0RnJhbWVidWZmZXIoKQpAQCAtMjU4LDkgKzM0NywxMCBAQCBJbnRTaXplIEdMQ29udGV4dEVH
TDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgaWYgKCFjYW5SZW5kZXJUb0RlZmF1bHRG
cmFtZWJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCisgICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gbV9kaXNwbGF5LmVnbERpc3BsYXkoKTsKICAgICBFR0xpbnQgd2lkdGgsIGhl
aWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3Vy
ZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2Uoc2hh
cmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQorICAgIGlm
ICghZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgp
CisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xfSEVJ
R0hULCAmaGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJ
bnRTaXplKHdpZHRoLCBoZWlnaHQpOwpAQCAtMjY4LDE5ICszNTgsMTkgQEAgSW50U2l6ZSBHTENv
bnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogCiBib29sIEdMQ29udGV4dEVHTDo6
bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0ICYmIG1fc3VyZmFj
ZSk7CisgICAgQVNTRVJUKG1fY29udGV4dCk7CiAKICAgICBHTENvbnRleHQ6Om1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIGlmIChlZ2xHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZWdsTWFrZUN1cnJlbnQoc2hhcmVk
RUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKKyAgICByZXR1
cm4gZWdsTWFrZUN1cnJlbnQobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1
cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycygp
CiB7CiAgICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hhcmVkRUdM
RGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIGVnbFN3YXBCdWZmZXJzKG1fZGlzcGxheS5lZ2xE
aXNwbGF5KCksIG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZl
KCkKQEAgLTI5NSw3ICszODUsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0RUdMOjpjYWly
b0RldmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2Rldmlj
ZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgIG1fY2Fpcm9EZXZp
Y2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX2Nv
bnRleHQpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA4
NjU3NWE5Li5lMDYzOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0yOSw0OSArMjksNjcgQEAKICNpbmNsdWRlICJY
VW5pcXVlUmVzb3VyY2UuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNs
dWRlICJXbFVuaXF1ZVB0ci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR0xDb250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7CitjbGFzcyBHTENvbnRleHRFR0wg
ZmluYWwgOiBwdWJsaWMgR0xDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENv
bnRleHRFR0wpOwogcHVibGljOgotICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3Vy
ZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSB9OwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUs
IEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBl
LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0OjpE
YXRhPiYmID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgUGxhdGZvcm1EaXNwbGF5Jik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVNoYXJpbmdD
b250ZXh0KFBsYXRmb3JtRGlzcGxheSYpOwogCi0gICAgR0xDb250ZXh0RUdMKEVHTENvbnRleHQs
IEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgR0xD
b250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJik7Ci0jZW5k
aWYKICAgICB2aXJ0dWFsIH5HTENvbnRleHRFR0woKTsKLSAgICB2aXJ0dWFsIGJvb2wgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZh
dWx0RnJhbWVidWZmZXIoKTsKLSAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVy
U2l6ZSgpOworCisgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN3YXBCdWZmZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3YWl0TmF0aXZlKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpIG92ZXJyaWRlOwor
ICAgIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpIG92ZXJyaWRlOwogI2lmIFVTRShD
QUlSTykKLSAgICB2aXJ0dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpOworICAgIGNh
aXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVh
bCBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlz
RUdMQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUXzNEKQotICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBs
YXRmb3JtQ29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVy
U3VyZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSwgU3VyZmFjZWxlc3MgfTsKKwor
ICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNl
LCBFR0xTdXJmYWNlVHlwZSk7CiAjaWYgUExBVEZPUk0oWDExKQotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQpOworICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250
ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYpOworI2VuZGlmCisjaWYgUExBVEZPUk0o
V0FZTEFORCkKKyAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwg
RUdMU3VyZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIEVHTE5hdGl2ZVdp
bmRvd1R5cGUpOworI2VuZGlmCisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBQbGF0Zm9ybURp
c3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4
dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NP
TlRFWFQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVT
dXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29u
dGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyNpZiBQTEFURk9STShYMTEpCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENvbnRleHQoUGxhdGZvcm1E
aXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CiAjZW5kaWYKIAotICAgIHN0
YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0RUdMKik7Ci0gICAgc3RhdGljIHZv
aWQgY2xlYW51cFNoYXJlZEVHTERpc3BsYXkodm9pZCk7CisgICAgc3RhdGljIGJvb2wgZ2V0RUdM
Q29uZmlnKEVHTERpc3BsYXksIEVHTENvbmZpZyosIEVHTFN1cmZhY2VUeXBlKTsKIAotICAgIEVH
TENvbnRleHQgbV9jb250ZXh0OwotICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOworICAgIEVHTENv
bnRleHQgbV9jb250ZXh0IHsgRUdMX05PX0NPTlRFWFQgfTsKKyAgICBFR0xTdXJmYWNlIG1fc3Vy
ZmFjZSB7IEVHTF9OT19TVVJGQUNFIH07CiAgICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOwogI2lm
IFBMQVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oV0FZTEFORCkKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gbV93
bFN1cmZhY2U7CisgICAgc3RydWN0IHdsX2VnbF93aW5kb3cqIG1fd2xXaW5kb3cgeyBudWxscHRy
IH07CisjZW5kaWYKICNpZiBVU0UoQ0FJUk8pCiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9E
ZXZpY2UgeyBudWxscHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggMTRiYjUzOS4uNDE1MDdj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRv
d0NvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChY
SUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxh
dGZvcm1EaXNwbGF5KS5uYXRpdmUoKTsKICAgICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheSwgd2luZG93LCAmYXR0cmli
dXRlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsMTUgKzQ1LDE0IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4
dChYSUQgd2luZG93LCBHTENvCiAgICAgaW50IG51bVJldHVybmVkID0gMDsKICAgICBYVW5pcXVl
UHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvTGlzdChYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBW
aXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0dXJuZWQpKTsKIAotICAgIEdMWENvbnRl
eHQgZ2x4U2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29u
dGV4dEdMWCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0LmdldCgpIDogbnVsbHB0cjsKLSAg
ICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwgdmlz
dWFsSW5mb0xpc3QuZ2V0KCksIGdseFNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CisgICAgWFVuaXF1
ZUdMWENvbnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9M
aXN0LmdldCgpLCBzaGFyaW5nQ29udGV4dCwgVHJ1ZSkpOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENv
bnRleHRHTFg+KFdURk1vdmUoY29udGV4dCksIHdpbmRvdyk7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5LCBX
VEZNb3ZlKGNvbnRleHQpLCB3aW5kb3cpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJp
bmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpj
cmVhdGVQYnVmZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgR0xY
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IGZiQ29uZmln
QXR0cmlidXRlc1tdID0gewogICAgICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1BCVUZGRVJf
QklULApAQCAtNjcsNyArNjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENv
bnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogICAgIH07CiAK
ICAgICBpbnQgcmV0dXJuZWRFbGVtZW50czsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4ocGxhdGZvcm1EaXNwbGF5KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUHRyPEdMWEZCQ29u
ZmlnPiBjb25maWdzKGdsWENob29zZUZCQ29uZmlnKGRpc3BsYXksIDAsIGZiQ29uZmlnQXR0cmli
dXRlcywgJnJldHVybmVkRWxlbWVudHMpKTsKICAgICBpZiAoIXJldHVybmVkRWxlbWVudHMpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsMTAgKzgxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29u
dGV4dCBzaGFyCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGTW92ZShjb250ZXh0
KSwgV1RGTW92ZShwYnVmZmVyKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRHTFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5LCBXVEZNb3ZlKGNvbnRleHQp
LCBXVEZNb3ZlKHBidWZmZXIpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+
IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250
ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQ
aXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBHTFhDb250ZXh0
IHNoYXJpbmdDb250ZXh0KQogewogICAgIHN0YXRpYyBpbnQgdmlzdWFsQXR0cmlidXRlc1tdID0g
ewogICAgICAgICBHTFhfUkdCQSwKQEAgLTk2LDcgKzk1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQg
c2hhcmkKICAgICAgICAgMAogICAgIH07CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4ocGxhdGZvcm1EaXNwbGF5KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJ
bmZvPiB2aXN1YWxJbmZvKGdsWENob29zZVZpc3VhbChkaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRp
c3BsYXkpLCB2aXN1YWxBdHRyaWJ1dGVzKSk7CiAgICAgaWYgKCF2aXN1YWxJbmZvKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMyw0NiArMTEyLDQ2IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0
IHNoYXJpCiAgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQp
LCBXVEZNb3ZlKHBpeG1hcCksIFdURk1vdmUoZ2x4UGl4bWFwKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5
LCBXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBpeG1hcCksIFdURk1vdmUoZ2x4UGl4bWFwKSkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0
ZUNvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2lu
ZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSkKIHsKLSAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwot
ICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVu
R0xTaGltcygpOwotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHTFhDb250ZXh0IGdseFNo
YXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgq
PihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7Ci0gICAgYXV0byBj
b250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250
ZXh0KSA6IG51bGxwdHI7CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHBsYXRm
b3JtRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCkgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgq
PihwbGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpKS0+bV9jb250ZXh0LmdldCgpIDog
bnVsbHB0cjsKKyAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0
KHdpbmRvdywgcGxhdGZvcm1EaXNwbGF5LCBnbHhTaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwog
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0
KGdseFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250
ZXh0KHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpOwogICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQoZ2x4U2hhcmluZ0NvbnRl
eHQpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmlu
Z0NvbnRleHQpOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xD
b250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWElEIHdpbmRvdykKLSAgICA6
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdM
WD4gR0xDb250ZXh0R0xYOjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBs
YXRmb3JtRGlzcGxheSkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4
dChwbGF0Zm9ybURpc3BsYXkpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9
IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyAgICByZXR1cm4gY29udGV4
dDsKK30KKworR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNw
bGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cpCisgICAgOiBHTENv
bnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwg
bV93aW5kb3cod2luZG93KQogewogfQogCi1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5p
cXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVmZmVyJiYgcGJ1ZmZlcikKLSAg
ICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRH
TFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQs
IFhVbmlxdWVHTFhQYnVmZmVyJiYgcGJ1ZmZlcikKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQor
ICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3BidWZmZXIoV1RGTW92
ZShwYnVmZmVyKSkKIHsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdM
WENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4
bWFwJiYgZ2x4UGl4bWFwKQotICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitHTENv
bnRleHRHTFg6OkdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIFhVbmlxdWVH
TFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCwgWFVuaXF1ZUdMWFBp
eG1hcCYmIGdseFBpeG1hcCkKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250
ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCiAg
ICAgLCBtX2dseFBpeG1hcChXVEZNb3ZlKGdseFBpeG1hcCkpCiB7CkBAIC0xNjYsOSArMTY1LDgg
QEAgR0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKCkKICAgICBpZiAobV9jb250ZXh0KSB7CiAg
ICAgICAgIC8vIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcmV2ZW50IGNyYXNoZXMgd2l0aCBO
VmlkaWEncyBjbG9zZWQgc291cmNlIGRyaXZlcnMuIE9yaWdpbmFsbHkKICAgICAgICAgLy8gZnJv
bSBNb3ppbGxhJ3MgM0QgY2FudmFzIGltcGxlbWVudGF0aW9uIGF0OiBodHRwOi8vYml0YnVja2V0
Lm9yZy9pbG1hcmkvY2FudmFzM2QvCi0gICAgICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5u
YXRpdmUoKTsKICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCAwKTsKLSAgICAgICAgZ2xYTWFrZUN1cnJlbnQoZGlzcGxheSwgTm9uZSwgTm9uZSk7CisgICAg
ICAgIGdsWE1ha2VDdXJyZW50KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5
KS5uYXRpdmUoKSwgTm9uZSwgTm9uZSk7CiAgICAgfQogfQogCkBAIC0xODUsOCArMTgzLDcgQEAg
SW50U2l6ZSBHTENvbnRleHRHTFg6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgIGludCB4
LCB5OwogICAgIFdpbmRvdyByb290V2luZG93OwogICAgIHVuc2lnbmVkIGludCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXJXaWR0aCwgZGVwdGg7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpOwotICAgIGlmICghWEdldEdlb21ldHJ5KGRpc3BsYXksIG1fd2luZG93LCAmcm9vdFdp
bmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsICZib3JkZXJXaWR0aCwgJmRlcHRoKSkKKyAg
ICBpZiAoIVhHZXRHZW9tZXRyeShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxh
eSkubmF0aXZlKCksIG1fd2luZG93LCAmcm9vdFdpbmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWln
aHQsICZib3JkZXJXaWR0aCwgJmRlcHRoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAog
ICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwpAQCAtMjAwLDcgKzE5Nyw3IEBAIGJv
b2wgR0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgIGlmIChnbFhHZXRDdXJy
ZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxheSogZGlz
cGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKTsK
ICAgICBpZiAobV93aW5kb3cpCiAgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5
LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIApAQCAtMjEzLDcgKzIxMCw3IEBAIGJvb2wg
R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQoKQogdm9pZCBHTENvbnRleHRHTFg6OnN3
YXBCdWZmZXJzKCkKIHsKICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIGdsWFN3YXBCdWZmZXJz
KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkpLm5hdGl2ZSgpLCBtX3dpbmRvdyk7CisgICAgICAgIGdsWFN3YXBCdWZmZXJzKGRvd25j
YXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgbV93aW5kb3cpOwog
fQogCiB2b2lkIEdMQ29udGV4dEdMWDo6d2FpdE5hdGl2ZSgpCkBAIC0yMjcsNyArMjI0LDcgQEAg
Y2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEdMWDo6Y2Fpcm9EZXZpY2UoKQogICAgICAgICByZXR1
cm4gbV9jYWlyb0RldmljZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYm
IENBSVJPX0hBU19HTFhfRlVOQ1RJT05TCi0gICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9k
ZXZpY2VfY3JlYXRlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fY2Fp
cm9EZXZpY2UgPSBjYWlyb19nbHhfZGV2aWNlX2NyZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3Bs
YXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCksIG1fY29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIAog
ICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCmluZGV4IDY0N2Y5OTguLjM0Y2I1MzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRH
TFguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmgKQEAgLTMyLDMxICszMiwzNCBAQCB0eXBlZGVmIHZvaWQqIENvbnRleHRLZXlUeXBlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdMQ29udGV4dEdMWCA6IHB1YmxpYyBHTENv
bnRleHQgeworY2xhc3MgR0xDb250ZXh0R0xYIGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0R0xYKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93
LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEdMWD4gY3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdM
WD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlU2hhcmluZ0NvbnRleHQoUGxh
dGZvcm1EaXNwbGF5Jik7CiAKLSAgICBHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwg
WElEKTsKLSAgICBHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBi
dWZmZXImJik7Ci0gICAgR0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVQ
aXhtYXAmJiwgWFVuaXF1ZUdMWFBpeG1hcCYmKTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHRHTFgo
KTsKLSAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHN3YXBCdWZmZXJzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsKLSAgICB2aXJ0dWFs
IEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwotICAgIHZpcnR1YWwgY2Fpcm9fZGV2
aWNlX3QqIGNhaXJvRGV2aWNlKCk7Ci0gICAgdmlydHVhbCBib29sIGlzRUdMQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIG92
ZXJyaWRlOworICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRO
YXRpdmUoKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVy
KCkgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3ZlcnJp
ZGU7CisgICAgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0VHTENvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYg
RU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0gICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgcGxhdGZvcm1Db250ZXh0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQo
R0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRHTFg+IGNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4
dCk7CisgICAgR0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0
JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhD
b250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChQbGF0Zm9y
bURpc3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVH
TFhQaXhtYXAmJik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4g
Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmLCBHTFhDb250
ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEdM
WENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkm
LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0cik7CiAKICAgICBYVW5pcXVlR0xY
Q29udGV4dCBtX2NvbnRleHQ7CiAgICAgWElEIG1fd2luZG93IHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGIyOTIz
OWUuLmZjZmY0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKQEAgLTIzNSw4ICsyMzUsOCBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OmVuc3VyZUdzdEdMQ29udGV4dCgpCiAgICAgaWYgKG1fZ2xDb250
ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGNvbnN0IGF1dG8mIHNoYXJlZERpc3Bs
YXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpOwogICAg
IGlmICghbV9nbERpc3BsYXkpIHsKLSAgICAgICAgY29uc3QgYXV0byYgc2hhcmVkRGlzcGxheSA9
IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOwogI2lmIFBMQVRGT1JNKFgxMSkKICAg
ICAgICAgbV9nbERpc3BsYXkgPSBHU1RfR0xfRElTUExBWShnc3RfZ2xfZGlzcGxheV94MTFfbmV3
X3dpdGhfZGlzcGxheShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkp
Lm5hdGl2ZSgpKSk7CiAjZWxpZiBQTEFURk9STShXQVlMQU5EKQpAQCAtMjQ0LDcgKzI0NCw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0
KCkKICNlbmRpZgogICAgIH0KIAotICAgIEdMQ29udGV4dCogd2Via2l0Q29udGV4dCA9IEdMQ29u
dGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIHdlYmtpdENvbnRleHQgPSBz
aGFyZWREaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKTsKICAgICAvLyBFR0wgYW5kIEdMWCBhcmUg
bXV0dWFsbHkgZXhjbHVzaXZlLCBubyBuZWVkIGZvciBpZmRlZnMgaGVyZS4KICAgICBHc3RHTFBs
YXRmb3JtIGdsUGxhdGZvcm0gPSB3ZWJraXRDb250ZXh0LT5pc0VHTENvbnRleHQoKSA/IEdTVF9H
TF9QTEFURk9STV9FR0wgOiBHU1RfR0xfUExBVEZPUk1fR0xYOwogCkBAIC03MDIsNyArNzAyLDcg
QEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRl
b0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1Rf
TUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
R0xDb250ZXh0KiBjb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIEdM
Q29udGV4dCogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBv
c2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpOwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250ZXh0LT5jYWlyb0Rldmlj
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAppbmRleCBkMzMwNWUx
Li40NzkyNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKQEAgLTI5
LDEyNiArMjksNTUgQEAKICNpZiBQTEFURk9STShXQVlMQU5EKQogCiAjaW5jbHVkZSAiR0xDb250
ZXh0RUdMLmgiCi0jaW5jbHVkZSAiV2F5bGFuZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxjc3RyaW5n
PgotI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3Qgc3RydWN0
IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Om1fcmVnaXN0cnlM
aXN0ZW5lciA9IHsKLSAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxDYWxsYmFjaywK
LSAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxSZW1vdmVDYWxsYmFjaworY29uc3Qg
c3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnNfcmVn
aXN0cnlMaXN0ZW5lciA9IHsKKyAgICAvLyBnbG9iYWxDYWxsYmFjaworICAgIFtdKHZvaWQqIGRh
dGEsIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90IG5hbWUsIGNvbnN0IGNoYXIqIGludGVy
ZmFjZSwgdWludDMyX3QpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5
bGFuZCo+KGRhdGEpLT5yZWdpc3RyeUdsb2JhbChpbnRlcmZhY2UsIG5hbWUpOworICAgIH0sCisg
ICAgLy8gZ2xvYmFsUmVtb3ZlQ2FsbGJhY2sKKyAgICBbXSh2b2lkKiwgc3RydWN0IHdsX3JlZ2lz
dHJ5KiwgdWludDMyX3QpCisgICAgeworICAgIH0KIH07CiAKLXZvaWQgUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZDo6Z2xvYmFsQ2FsbGJhY2sodm9pZCogZGF0YSwgc3RydWN0IHdsX3JlZ2lzdHJ5KiBy
ZWdpc3RyeSwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCkK
K1BsYXRmb3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHds
X2Rpc3BsYXkqIGRpc3BsYXkpCiB7Ci0gICAgYXV0byBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZCo+KGRhdGEpOwotICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJm
YWNlLCAid2xfY29tcG9zaXRvciIpKQotICAgICAgICBkaXNwbGF5LT5tX2NvbXBvc2l0b3IgPSBz
dGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0
cnksIG5hbWUsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSkpOwotICAgIGVsc2UgaWYgKCFz
dGQ6OnN0cmNtcChpbnRlcmZhY2UsICJ3bF93ZWJraXRndGsiKSkKLSAgICAgICAgZGlzcGxheS0+
bV93ZWJraXRndGsgPSBzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfd2Via2l0Z3RrKj4od2xfcmVnaXN0
cnlfYmluZChyZWdpc3RyeSwgbmFtZSwgJndsX3dlYmtpdGd0a19pbnRlcmZhY2UsIDEpKTsKKyAg
ICBpbml0aWFsaXplKGRpc3BsYXkpOwogfQogCi12b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6
Omdsb2JhbFJlbW92ZUNhbGxiYWNrKHZvaWQqLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJf
dCkKLXsKLSAgICAvLyBGSVhNRTogaWYgdGhpcyBjYW4gaGFwcGVuIHdpdGhvdXQgdGhlIFVJIFBy
b2Nlc3MgZ2V0dGluZyBzaHV0IGRvd24KLSAgICAvLyB3ZSBzaG91bGQgcHJvYmFibHkgZGVzdHJv
eSBvdXIgY2FjaGVkIGRpc3BsYXkgaW5zdGFuY2UuCi19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUoKQorUGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6flBsYXRmb3JtRGlzcGxheVdheWxhbmQoKQogewotICAgIHN0
cnVjdCB3bF9kaXNwbGF5KiB3bERpc3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QobnVsbHB0cik7
Ci0gICAgaWYgKCF3bERpc3BsYXkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgV2F5
bGFuZCBzZXJ2ZXIgc29ja2V0LiBDaGVjayB5b3VyIFdBWUxBTkRfRElTUExBWSBvciBXQVlMQU5E
X1NPQ0tFVCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIGF1dG8gZGlzcGxheSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kPihuZXcgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCh3bERpc3BsYXkpKTsKLSAg
ICBpZiAoIWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMo
IlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb21wbGV0
ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRpc3BsYXkuIik7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBkaXNwbGF5OwogfQogCi1QbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiB3bERp
c3BsYXkpCi0gICAgOiBtX2Rpc3BsYXkod2xEaXNwbGF5KQotICAgICwgbV9yZWdpc3RyeSh3bF9k
aXNwbGF5X2dldF9yZWdpc3RyeShtX2Rpc3BsYXkpKQotICAgICwgbV9lZ2xDb25maWdDaG9zZW4o
ZmFsc2UpCit2b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUod2xfZGlzcGxh
eSogZGlzcGxheSkKIHsKLSAgICB3bF9yZWdpc3RyeV9hZGRfbGlzdGVuZXIobV9yZWdpc3RyeSwg
Jm1fcmVnaXN0cnlMaXN0ZW5lciwgdGhpcyk7CisgICAgbV9kaXNwbGF5ID0gZGlzcGxheTsKKyAg
ICBtX3JlZ2lzdHJ5LnJlc2V0KHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KG1fZGlzcGxheSkpOwor
ICAgIHdsX3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihtX3JlZ2lzdHJ5LmdldCgpLCAmc19yZWdpc3Ry
eUxpc3RlbmVyLCB0aGlzKTsKICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtX2Rpc3BsYXkpOwog
Ci0gICAgc3RhdGljIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAg
IEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9XSU5ET1dfQklULAotICAgICAgICBFR0xfUkVEX1NJWkUs
IDEsCi0gICAgICAgIEVHTF9HUkVFTl9TSVpFLCAxLAotICAgICAgICBFR0xfQkxVRV9TSVpFLCAx
LAotICAgICAgICBFR0xfQUxQSEFfU0laRSwgMSwKLSAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQ
RSwgRUdMX09QRU5HTF9FUzJfQklULAotICAgICAgICBFR0xfTk9ORQotICAgIH07Ci0KICAgICBt
X2VnbERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KG1fZGlzcGxheSk7CiAgICAgUGxhdGZvcm1EaXNw
bGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpOwotICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVHTGludCBudW1iZXJPZkNvbmZp
Z3M7Ci0gICAgaWYgKCFlZ2xDaG9vc2VDb25maWcobV9lZ2xEaXNwbGF5LCBjb25maWdBdHRyaWJ1
dGVzLCAmbV9lZ2xDb25maWcsIDEsICZudW1iZXJPZkNvbmZpZ3MpIHx8IG51bWJlck9mQ29uZmln
cyAhPSAxKSB7Ci0gICAgICAgIGdfd2FybmluZygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0
aWFsaXphdGlvbjogZmFpbGVkIHRvIGZpbmQgdGhlIGRlc2lyZWQgRUdMIGNvbmZpZ3VyYXRpb24u
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2VnbENvbmZpZ0Nob3NlbiA9IHRy
dWU7CiB9CiAKLVBsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5k
KCkKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwoY29uc3QgY2hh
ciogaW50ZXJmYWNlLCB1aW50MzJfdCBuYW1lKQogewotICAgIGlmIChtX3dlYmtpdGd0aykKLSAg
ICAgICAgd2xfd2Via2l0Z3RrX2Rlc3Ryb3kobV93ZWJraXRndGspOwotICAgIGlmIChtX2NvbXBv
c2l0b3IpCi0gICAgICAgIHdsX2NvbXBvc2l0b3JfZGVzdHJveShtX2NvbXBvc2l0b3IpOwotICAg
IGlmIChtX3JlZ2lzdHJ5KQotICAgICAgICB3bF9yZWdpc3RyeV9kZXN0cm95KG1fcmVnaXN0cnkp
OwotICAgIGlmIChtX2Rpc3BsYXkpCi0gICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtX2Rp
c3BsYXkpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZFN1cmZhY2U+IFBsYXRmb3JtRGlz
cGxheVdheWxhbmQ6OmNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgaW50IHdpZGdl
dElkKQotewotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UgPSB3bF9jb21wb3NpdG9y
X2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7Ci0gICAgLy8gV2Uga2VlcCB0aGUgbWluaW11
bSBzaXplIGF0IDF4MXB4IHNpbmNlIE1lc2EgcmV0dXJucyBudWxsIHZhbHVlcyBpbiB3bF9lZ2xf
d2luZG93X2NyZWF0ZSgpIGZvciB6ZXJvIHdpZHRoIG9yIGhlaWdodC4KLSAgICBFR0xOYXRpdmVX
aW5kb3dUeXBlIG5hdGl2ZVdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSwg
c3RkOjptYXgoMSwgc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkpOwot
Ci0gICAgd2xfd2Via2l0Z3RrX3NldF9zdXJmYWNlX2Zvcl93aWRnZXQobV93ZWJraXRndGssIHds
U3VyZmFjZSwgd2lkZ2V0SWQpOwotICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1fZGlzcGxheSk7
Ci0KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXlsYW5kU3VyZmFjZT4od2xTdXJmYWNl
LCBuYXRpdmVXaW5kb3cpOworICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAid2xfY29t
cG9zaXRvciIpKQorICAgICAgICBtX2NvbXBvc2l0b3IucmVzZXQoc3RhdGljX2Nhc3Q8c3RydWN0
IHdsX2NvbXBvc2l0b3IqPih3bF9yZWdpc3RyeV9iaW5kKG1fcmVnaXN0cnkuZ2V0KCksIG5hbWUs
ICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU2hhcmluZ0dMQ29udGV4
dCgpCitXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZDo6Y3JlYXRlU3VyZmFjZSgpIGNvbnN0CiB7Ci0gICAgY2xhc3MgT2Zmc2NyZWVuQ29udGV4dERh
dGEgOiBwdWJsaWMgR0xDb250ZXh0OjpEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1
YWwgfk9mZnNjcmVlbkNvbnRleHREYXRhKCkKLSAgICAgICAgewotICAgICAgICAgICAgd2xfZWds
X3dpbmRvd19kZXN0cm95KG5hdGl2ZVdpbmRvdyk7Ci0gICAgICAgICAgICB3bF9zdXJmYWNlX2Rl
c3Ryb3koc3VyZmFjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSog
c3VyZmFjZTsKLSAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3c7Ci0gICAg
fTsKLQotICAgIGF1dG8gY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9mZnNjcmVlbkNv
bnRleHREYXRhPigpOwotICAgIGNvbnRleHREYXRhLT5zdXJmYWNlID0gd2xfY29tcG9zaXRvcl9j
cmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0b3IpOwotICAgIGNvbnRleHREYXRhLT5uYXRpdmVXaW5k
b3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZShjb250ZXh0RGF0YS0+c3VyZmFjZSwgMSwgMSk7Cisg
ICAgaWYgKCFtX2NvbXBvc2l0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBuYXRpdmVXaW5kb3cgPSBjb250ZXh0RGF0YS0+bmF0aXZlV2luZG93OwotICAgIHJldHVybiBH
TENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQobmF0aXZlV2luZG93LCBudWxscHRyLCBX
VEZNb3ZlKGNvbnRleHREYXRhKSk7CisgICAgcmV0dXJuIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9z
dXJmYWNlPih3bF9jb21wb3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvci5nZXQoKSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZC5oCmluZGV4IDRjYzkwNDQuLmMxNjU4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5oCkBAIC0yOSw0OCArMjksMzQgQEAKICNpZiBQTEFURk9STShXQVlMQU5EKQogCiAj
aW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCi0jaW5jbHVkZSAiV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgIldsVW5pcXVlUHRy
LmgiCiAjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLSNpbmNsdWRlIDx3YXlsYW5kLWVnbC5o
PgotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBH
TENvbnRleHRFR0w7Ci1jbGFzcyBJbnRTaXplOwotY2xhc3MgV2F5bGFuZFN1cmZhY2U7Ci0KLWNs
YXNzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQgZmluYWw6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkg
eworY2xhc3MgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkg
ewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5
bGFuZD4gY3JlYXRlKCk7CisgICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlz
cGxheSopOwogICAgIHZpcnR1YWwgflBsYXRmb3JtRGlzcGxheVdheWxhbmQoKTsKIAogICAgIHN0
cnVjdCB3bF9kaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kU3VyZmFjZT4gY3JlYXRlU3VyZmFjZShjb25zdCBJ
bnRTaXplJiwgaW50IHdpZGdldElEKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IGNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKTsKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xf
c3VyZmFjZT4gY3JlYXRlU3VyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgbV9yZWdpc3RyeUxpc3RlbmVyOwotICAg
IHN0YXRpYyB2b2lkIGdsb2JhbENhbGxiYWNrKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9yZWdpc3Ry
eSosIHVpbnQzMl90IG5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgdmVyc2lv
bik7Ci0gICAgc3RhdGljIHZvaWQgZ2xvYmFsUmVtb3ZlQ2FsbGJhY2sodm9pZCogZGF0YSwgc3Ry
dWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSk7CisgICAgc3RhdGljIGNvbnN0IHN0cnVj
dCB3bF9yZWdpc3RyeV9saXN0ZW5lciBzX3JlZ2lzdHJ5TGlzdGVuZXI7CiAKLSAgICBQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAgVHlwZSB0eXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kOyB9CiAK
LSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY2hlY2sgYWxzbyBmb3IgbV93ZWJraXRndGsgb25j
ZSB0aGUgVUlQcm9jZXNzIGVtYmVkZGVkIFdheWxhbmQgc3ViY29tcG9zaXRlciBpcyBpbXBsZW1l
bnRlZC4KLSAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX2NvbXBvc2l0b3IgJiYg
bV9lZ2xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmIG1fZWdsQ29uZmlnQ2hvc2VuOyB9Citw
cm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpID0gZGVmYXVsdDsKKyAgICB2
b2lkIGluaXRpYWxpemUoc3RydWN0IHdsX2Rpc3BsYXkqKTsKIAotICAgIFR5cGUgdHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZDsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RyeUdsb2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVp
bnQzMl90IG5hbWUpOwogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG1fZGlzcGxheTsKLSAgICBz
dHJ1Y3Qgd2xfcmVnaXN0cnkqIG1fcmVnaXN0cnk7Ci0gICAgc3RydWN0IHdsX2NvbXBvc2l0b3Iq
IG1fY29tcG9zaXRvcjsKLSAgICBzdHJ1Y3Qgd2xfd2Via2l0Z3RrKiBtX3dlYmtpdGd0azsKLQot
ICAgIEVHTENvbmZpZyBtX2VnbENvbmZpZzsKLSAgICBib29sIG1fZWdsQ29uZmlnQ2hvc2VuOwor
ICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9yZWdpc3RyeT4gbV9yZWdpc3RyeTsKKyAgICBXbFVu
aXF1ZVB0cjxzdHJ1Y3Qgd2xfY29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2YjJhZDJmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldheWxhbmRFdmVu
dFNvdXJjZS5oIgotCi0jaWYgUExBVEZPUk0oV0FZTEFORCkKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHTGliU291cmNlIHsKLXB1YmxpYzoKLSAgICB2b2lkIGluaXRpYWxpemUoc3Ry
dWN0IHdsX2Rpc3BsYXkqKTsKLQotICAgIGdib29sZWFuIGNoZWNrKCk7Ci0gICAgZ2Jvb2xlYW4g
ZGlzcGF0Y2goKTsKLQotcHJpdmF0ZToKLSAgICBHU291cmNlIG1fc291cmNlOwotICAgIEdQb2xs
RkQgbV9wb2xsRmlsZURlc2NyaXB0b3I7Ci0gICAgc3RydWN0IHdsX2Rpc3BsYXkqIG1fZGlzcGxh
eTsKLX07Ci0KLXZvaWQgR0xpYlNvdXJjZTo6aW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSog
ZGlzcGxheSkKLXsKLSAgICBtX2Rpc3BsYXkgPSBkaXNwbGF5OwotICAgIHN0cnVjdCB3bF9ldmVu
dF9sb29wKiBsb29wID0gd2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChkaXNwbGF5KTsKLSAgICBt
X3BvbGxGaWxlRGVzY3JpcHRvci5mZCA9IHdsX2V2ZW50X2xvb3BfZ2V0X2ZkKGxvb3ApOwotICAg
IG1fcG9sbEZpbGVEZXNjcmlwdG9yLmV2ZW50cyA9IEdfSU9fSU4gfCBHX0lPX0VSUiB8IEdfSU9f
SFVQOwotICAgIGdfc291cmNlX2FkZF9wb2xsKCZtX3NvdXJjZSwgJm1fcG9sbEZpbGVEZXNjcmlw
dG9yKTsKLQotICAgIGdfc291cmNlX3NldF9uYW1lKCZtX3NvdXJjZSwgIk5lc3RlZCBXYXlsYW5k
IGNvbXBvc2l0b3IgZGlzcGxheSBldmVudCBzb3VyY2UiKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJp
b3JpdHkoJm1fc291cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX3NldF9j
YW5fcmVjdXJzZSgmbV9zb3VyY2UsIFRSVUUpOwotICAgIGdfc291cmNlX2F0dGFjaCgmbV9zb3Vy
Y2UsIG51bGxwdHIpOwotfQotCi1nYm9vbGVhbiBHTGliU291cmNlOjpjaGVjaygpCi17Ci0gICAg
cmV0dXJuIG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHM7Ci19Ci0KLWdib29sZWFuIEdMaWJT
b3VyY2U6OmRpc3BhdGNoKCkKLXsKLSAgICBpZiAobV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50
cyAmIEdfSU9fSU4pIHsKLSAgICAgICAgc3RydWN0IHdsX2V2ZW50X2xvb3AqIGxvb3AgPSB3bF9k
aXNwbGF5X2dldF9ldmVudF9sb29wKG1fZGlzcGxheSk7Ci0gICAgICAgIHdsX2V2ZW50X2xvb3Bf
ZGlzcGF0Y2gobG9vcCwgLTEpOwotICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoX2NsaWVudHMobV9k
aXNwbGF5KTsKLSAgICAgICAgbV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50cyA9IDA7Ci0gICAg
fQotCi0gICAgaWYgKG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHMgJiAoR19JT19FUlIgfCBH
X0lPX0hVUCkpCi0gICAgICAgIGdfd2FybmluZygiV2F5bGFuZCBEaXNwbGF5IEV2ZW50IFNvdXJj
ZTogbG9zdCBjb25uZWN0aW9uIHRvIG5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IiKTsKLQotICAg
IHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gcHJlcGFyZUNhbGxiYWNrKEdTb3Vy
Y2UqLCBnaW50KiB0aW1lb3V0KQotewotICAgICp0aW1lb3V0ID0gLTE7Ci0gICAgcmV0dXJuIEZB
TFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gY2hlY2tDYWxsYmFjayhHU291cmNlKiBiYXNlKQot
ewotICAgIGF1dG8gc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxHTGliU291cmNlKj4oYmFzZSk7
Ci0gICAgcmV0dXJuIHNvdXJjZS0+Y2hlY2soKTsKLX0KLQotc3RhdGljIGdib29sZWFuIGRpc3Bh
dGNoQ2FsbGJhY2soR1NvdXJjZSogYmFzZSwgR1NvdXJjZUZ1bmMsIGdwb2ludGVyKQotewotICAg
IGF1dG8gc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxHTGliU291cmNlKj4oYmFzZSk7Ci0gICAg
cmV0dXJuIHNvdXJjZS0+ZGlzcGF0Y2goKTsKLX0KLQotc3RhdGljIEdTb3VyY2VGdW5jcyB3YXls
YW5kR0xpYlNvdXJjZUZ1bmNzID0gewotICAgIHByZXBhcmVDYWxsYmFjaywKLSAgICBjaGVja0Nh
bGxiYWNrLAotICAgIGRpc3BhdGNoQ2FsbGJhY2ssCi0gICAgbnVsbHB0ciwgLy8gZmluYWxpemUK
LSAgICBudWxscHRyLCAvLyBjbG9zdXJlX2NhbGxiYWNrCi0gICAgbnVsbHB0ciwgLy8gY2xvc3Vy
ZV9tYXJzaGFsbAotfTsKLQotR1NvdXJjZSogV2F5bGFuZEV2ZW50U291cmNlOjpjcmVhdGVEaXNw
bGF5RXZlbnRTb3VyY2Uoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCi17Ci0gICAgR1NvdXJj
ZSogYmFzZSA9IGdfc291cmNlX25ldygmd2F5bGFuZEdMaWJTb3VyY2VGdW5jcywgc2l6ZW9mKEdM
aWJTb3VyY2UpKTsKLQotICAgIGF1dG8gc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxHTGliU291
cmNlKj4oYmFzZSk7Ci0gICAgc291cmNlLT5pbml0aWFsaXplKGRpc3BsYXkpOwotCi0gICAgcmV0
dXJuIGJhc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmVkMTY2Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2F5bGFuZEV2ZW50U291cmNlX2gKLSNkZWZpbmUgV2F5bGFuZEV2ZW50U291
cmNlX2gKLQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5j
bHVkZSA8d2F5bGFuZC1zZXJ2ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBX
YXlsYW5kRXZlbnRTb3VyY2UgewotcHVibGljOgotICAgIHN0YXRpYyBHU291cmNlKiBjcmVhdGVE
aXNwbGF5RXZlbnRTb3VyY2Uoc3RydWN0IHdsX2Rpc3BsYXkqKTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNlbmRpZiAvLyBX
YXlsYW5kRXZlbnRTb3VyY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTcxYWIxOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2F5bGFuZFN1cmZhY2UuaCIKLQot
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKLSNpbmNs
dWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oIgotI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIGZyYW1lQ2Fs
bGJhY2sodm9pZCosIHN0cnVjdCB3bF9jYWxsYmFjayogY2FsbGJhY2ssIHVpbnQzMl90KQotewot
ICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7
Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgZnJhbWVMaXN0
ZW5lciA9IHsKLSAgICBmcmFtZUNhbGxiYWNrCi19OwotCi1XYXlsYW5kU3VyZmFjZTo6V2F5bGFu
ZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqIHdsU3VyZmFjZSwgRUdMTmF0aXZlV2luZG93VHlw
ZSBuYXRpdmVXaW5kb3cpCi0gICAgOiBtX3dsU3VyZmFjZSh3bFN1cmZhY2UpCi0gICAgLCBtX25h
dGl2ZVdpbmRvdyhuYXRpdmVXaW5kb3cpCi17Ci19Ci0KLVdheWxhbmRTdXJmYWNlOjp+V2F5bGFu
ZFN1cmZhY2UoKQotewotICAgIC8vIFRoZSBzdXJmYWNlIGNvdWxkbid0IGhhdmUgYmVlbiBjcmVh
dGVkIGluIHRoZSBmaXJzdCBwbGFjZSBpZiBXYXlsYW5kRGlzcGxheSB3YXNuJ3QgcHJvcGVybHkg
aW5pdGlhbGl6ZWQuCi0gICAgY29uc3QgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCYgd2F5bGFuZERp
c3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSk7Ci0gICAgQVNTRVJUKHdheWxhbmREaXNwbGF5Lm5hdGl2ZSgpKTsK
LSAgICBlZ2xNYWtlQ3VycmVudCh3YXlsYW5kRGlzcGxheS5uYXRpdmUoKSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICB3bF9lZ2xfd2luZG93
X2Rlc3Ryb3kobV9uYXRpdmVXaW5kb3cpOwotICAgIHdsX3N1cmZhY2VfZGVzdHJveShtX3dsU3Vy
ZmFjZSk7Ci19Ci0KLXZvaWQgV2F5bGFuZFN1cmZhY2U6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQotewotICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fbmF0aXZlV2luZG93LCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlR0xDb250ZXh0KCkKLXsKLSAgICByZXR1cm4g
R0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG1fbmF0aXZlV2luZG93LCBHTENvbnRl
eHQ6OnNoYXJpbmdDb250ZXh0KCkpOwotfQotCi12b2lkIFdheWxhbmRTdXJmYWNlOjpyZXF1ZXN0
RnJhbWUoKQotewotICAgIHN0cnVjdCB3bF9jYWxsYmFjayogZnJhbWVDYWxsYmFjayA9IHdsX3N1
cmZhY2VfZnJhbWUobV93bFN1cmZhY2UpOwotICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihm
cmFtZUNhbGxiYWNrLCAmZnJhbWVMaXN0ZW5lciwgdGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5ZjIyYjEuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgIFdheWxhbmRTdXJmYWNlX2gKLSNkZWZpbmUgIFdh
eWxhbmRTdXJmYWNlX2gKLQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRlIDx3YXls
YW5kLWNsaWVudC5oPgotCi0jaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KLSNpbmNsdWRlIDxFR0wv
ZWdscGxhdGZvcm0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHTENvbnRleHRF
R0w7Ci1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBXYXlsYW5kU3VyZmFjZSB7Ci1wdWJsaWM6Ci0g
ICAgV2F5bGFuZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqLCBFR0xOYXRpdmVXaW5kb3dUeXBl
KTsKLSAgICB+V2F5bGFuZFN1cmZhY2UoKTsKLQotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJm
YWNlKCkgeyByZXR1cm4gbV93bFN1cmZhY2U7IH0KLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5h
dGl2ZVdpbmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93OyB9Ci0KLSAgICB2b2lk
IHJlc2l6ZShjb25zdCBJbnRTaXplJik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVHTENvbnRleHQoKTsKLQotICAgIHZvaWQgcmVxdWVzdEZyYW1lKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgc3RydWN0IHdsX3N1cmZhY2UqIG1fd2xTdXJmYWNlOwotICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgbV9uYXRpdmVXaW5kb3c7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQotCi0jZW5kaWYgLy8gV2F5bGFuZFN1cmZh
Y2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFhOTNjLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvdG9jb2wgbmFtZT0id2xfd2Via2l0
Z3RrIj4KLQotICA8Y29weXJpZ2h0PgotICAgIENvcHlyaWdodCDCqSAyMDE0IElnYWxpYSBTLkwu
Ci0KLSAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQg
c2VsbCB0aGlzCi0gICAgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVy
cG9zZSBpcyBoZXJlYnkgZ3JhbnRlZAotICAgIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgotICAgIGFsbCBjb3BpZXMgYW5kIHRo
YXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgotICAgIG5v
dGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFt
ZSBvZgotICAgIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2lu
ZyBvciBwdWJsaWNpdHkKLSAgICBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYywKLSAgICB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBU
aGUgY29weXJpZ2h0IGhvbGRlcnMgbWFrZSBubwotICAgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0
aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0gICAgcHVycG9zZS4gIEl0
IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKLSAgICB3YXJy
YW50eS4KLQotICAgIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElF
UyBXSVRIIFJFR0FSRCBUTyBUSElTCi0gICAgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKLSAgICBGSVRORVNTLCBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAgICBT
UEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMK
LSAgICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJ
VFMsIFdIRVRIRVIgSU4KLSAgICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Ig
T1RIRVIgVE9SVElPVVMgQUNUSU9OLAotICAgIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCi0gICAgVEhJUyBTT0ZUV0FSRS4KLSAg
PC9jb3B5cmlnaHQ+Ci0KLSAgPGludGVyZmFjZSBuYW1lPSJ3bF93ZWJraXRndGsiIHZlcnNpb249
IjEiPgotICAgIDxyZXF1ZXN0IG5hbWU9InNldF9zdXJmYWNlX2Zvcl93aWRnZXQiPgotICAgICAg
PGFyZyBuYW1lPSJzdXJmYWNlIiB0eXBlPSJvYmplY3QiIGludGVyZmFjZT0id2xfc3VyZmFjZSIv
PgotICAgICAgPGFyZyBuYW1lPSJpZCIgdHlwZT0idWludCIvPgotICAgIDwvcmVxdWVzdD4KLQot
ICA8L2ludGVyZmFjZT4KLQotPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2xVbmlxdWVQdHIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2xVbmlxdWVQdHIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZWMzMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSA8d2F5bGFuZC1jbGll
bnQtcHJvdG9jb2wuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci1jb3JlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBXbFB0ckRlbGV0
ZXIgeworICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwdHIpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBXbFVuaXF1ZVB0ciA9
IHN0ZDo6dW5pcXVlX3B0cjxULCBXbFB0ckRlbGV0ZXI8VD4+OworCisjZGVmaW5lIEZPUl9FQUNI
X1dBWUxBTkRfREVMRVRFUihtYWNybykgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9kaXNwbGF5LCB3
bF9kaXNwbGF5X2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfZ2xvYmFsLCB3bF9nbG9i
YWxfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9zdXJmYWNlLCB3bF9zdXJmYWNlX2Rl
c3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfY29tcG9zaXRvciwgd2xfY29tcG9zaXRvcl9k
ZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX3JlZ2lzdHJ5LCB3bF9yZWdpc3RyeV9kZXN0
cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX3Byb3h5LCB3bF9wcm94eV9kZXN0cm95KQorCisj
ZGVmaW5lIERFRklORV9XQVlMQU5EX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgV2xQdHJEZWxldGVyPHR5cGVOYW1lPiBcCisgICAgeyBcCisg
ICAgICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAorICAgICAgICB7
IFwKKyAgICAgICAgICAgIGlmIChwdHIpIFwKKyAgICAgICAgICAgICAgICBkZWxldGVyRnVuYyhw
dHIpOyBcCisgICAgICAgIH0gXAorICAgIH07CisKK0ZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUihE
RUZJTkVfV0FZTEFORF9ERUxFVEVSKQorI3VuZGVmIEZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUgor
I3VuZGVmIERFRklORV9XQVlMQU5EX0RFTEVURVIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBhOGU0ZjMz
Li42YzQ3Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDgtMTYg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGRvZXMgbm90IHdvcmsgaW4gV2F5bGFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRvIHRo
ZSBuZXcgR0xDb250ZXh0IEFQSS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKToKKwogMjAxNi0wOC0xNSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1
bnVzZWQgaW5jbHVkZXMgb2Ygd3RmIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmNwcAppbmRleCA5YTI2ZDkyLi4xNzgxN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSgpCiAKICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIFRl
eHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5HTCBjb250ZXh0LgogICAgIGlmICghbV9j
b250ZXh0KQotICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgICAgIG1f
Y29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhtX3dpbmRvdyk7CiAK
ICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyLDcgKzI4Miw3IEBA
IGJvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBdmFpbGFibGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDcmVhdGUgR0wg
Y29udGV4dC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBjb250ZXh0
ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHRlc3RXaW5kb3csIEdMQ29udGV4
dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29u
dGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh0ZXN0V2lu
ZG93KTsKIAogICAgIGlmICghY29udGV4dCkgewogICAgICAgICA6OkRlc3Ryb3lXaW5kb3codGVz
dFdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVhMGVhMy4uMGZhMjcyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1NSBAQAorMjAxNi0wOC0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZG9l
cyBub3Qgd29yayBpbiBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTU4MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGlzIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIHN1cHBvcnQgaW4gV2F5bGFuZCBmb3IgdGhlIEdUSysgcG9ydC4g
SXQncyBiYXNlZAorICAgICAgICBvbiBwcmV2aW91cyBwYXRjaGVzIHdyaXR0ZW4gYnkgSWFnbyBU
b3JhbCwgxb1hbiBEb2JlcsWhZWssIEVtYW51ZWxlIEFpbmEgYW5kIEVtaWxpbyBQb3p1ZWxvIE1v
bmZvcnQuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIFdlYktpdEdUSysgV2F5bGFuZCBpbnRlcmZh
Y2UgcHJldmlvdXNseSBhZGRlZCBmb3IgdGhpcyB0byBXZWJDb3JlIGhhcyBiZWVuIG1vdmVkIHRv
IHRoZSBXZWJLaXQyCisgICAgICAgIGxheWVyLCBzaW5jZSBpdCdzIGFjdHVhbGx5IHNwZWNpZmlj
IHRvIFdlYktpdDIsIGFuZCBpdCdzIG5vdyBhY3R1YWxseSB1c2VkLiBUaGUgVUkgcHJvY2VzcyBy
dW5zIGEgbmVzdGVkIFdheWxhbmQKKyAgICAgICAgY29tcG9zaXRvciB0aGF0IHdlYiBwcm9jZXNz
ZXMgY29ubmVjdCB0by4gV2ViIHByb2Nlc3NlcyBjcmVhdGUgYSBXYXlsYW5kIHN1cmZhY2UgaW4g
dGhlIG5lc3RlZCBjb21wb3NpdG9yIGZvcgorICAgICAgICB0aGUgd2ViIHBhZ2UsIGFuZCB1c2lu
ZyB0aGUgV2ViS2l0R1RLKyBXYXlsYW5kIHByb3RvY29sIGludGVyZmFjZSB0aGV5IHRlbGwgdGhl
IG5lc3RlZCBjb21wb3NpdG9yIHRoZSB3ZWIgcGFnZQorICAgICAgICBhc3NvY2lhdGVkIHRvIHRo
ZSBzdXJmYWNlLiBBIFdheWxhbmQgd2luZG93IGlzIGNyZWF0ZWQgZm9yIHRoYXQgc3VyZmFjZSB0
aGF0IGlzIHRoZW4gdXNlZCBhcyB0aGUgbmF0aXZlIHdpbmRvdworICAgICAgICBoYW5kbGUgZm9y
IGNvbXBvc2l0aW5nLiBUbyBjb21tdW5pY2F0ZSB3aXRoIHRoZSBuZXN0ZWQgY29tcG9zaXRvciBh
bmQgdG8gZW5zdXJlIGFsbCBHTCBvcGVyYXRpb25zIGhhcHBlbiBpbiB0aGUKKyAgICAgICAgbmVz
dGVkIGNvbXBvc2l0b3IgZGlzcGxheSwgdGhlIHdlYiBwcm9jZXNzIGNyZWF0ZXMgYSBXYXlsYW5k
IGRpc3BsYXkgdGhhdCBjb25uZWN0cyB0byB0aGUgbmVzdGVkIGNvbXBvc2l0b3IsCisgICAgICAg
IHVzZXMgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBpbnRlcmZhY2UgYW5kIGl0J3Mgc2V0IGFzIHRo
ZSBnbG9iYWwgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nLgorCisgICAgICAgIFRoZSBu
ZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNyZWF0ZXMgYSBuZXcgZGlzcGxheSB3aXRoIGEgdW5p
cXVlIG5hbWUgdGhhdCBpcyBzZW50IHRvIHRoZSB3ZWIgcHJvY2Vzc2VzIGF0CisgICAgICAgIHN0
YXJ0IHVwLiBJdCBpbXBsZW1lbnRzIHRoZSBXYXlsYW5kIHN1cmZhY2UgaW50ZXJmYWNlIHRvIGhh
bmRsZSB0aGUgV2F5bGFuZCBidWZmZXJzIGNyZWF0ZWQgZm9yIGV2ZXJ5IHN1cmZhY2UKKyAgICAg
ICAgYW5kIHNjaGVkdWxpbmcgcmVkcmF3cyBvbiB0aGUgd2ViIHBhZ2VzIHdoZW4gdXBkYXRlcyBh
cmUgYXZhaWxhYmxlLiBJdCB1c2VzIHRoZSBXZWJLaXRHVEsrIFdheWxhbmQgaW50ZXJmYWNlIHRv
CisgICAgICAgIGFzc29jaWF0ZSB0aGUgc3VyZmFjZXMgdG8gYSBwYXJ0aWN1bGFyIHdlYiBwYWdl
LiBBIHRleHR1cmUgaXMgY3JlYXRlZCBmb3IgZXZlcnkgc3VyZmFjZSBhbmQgdXBkYXRlZCB3aXRo
IHRoZQorICAgICAgICBXYXlsYW5kIGJ1ZmZlciBjb250ZW50cyB1c2luZyBhbiBFR0xJbWFnZUtI
UiBhbmQgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMmQgQVBJLgorCisgICAgICAgIFRvIGFic3RyYWN0
IHRoZSBwbGF0Zm9ybSBkaWZmZXJlbmNlcyBhbmQgYXZvaWQgaWZkZWZzIGFzIG11Y2ggYXMgcG9z
c2libGUsIG5ldyBhYnN0cmFjdCBjbGFzc2VzIGhhdmUgYmVlbiBhZGRlZAorICAgICAgICB0byBy
ZXByZXNlbnQgdGhlIHN1cmZhY2VzIHVzZWQgaW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIEFj
Y2VsZXJhdGVkU3VyZmFjZSBpcyB1c2VkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhbmQKKyAgICAgICAg
cmVwcmVzZW50cyB0aGUgc3VyZmFjZSB3aGVyZSBjb250ZW50cyBhcmUgcmVuZGVyZWQgaW50by4g
VGhlIFgxMSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgcmVkaXJlY3RlZCBYQ29tcG9zaXRlCisgICAg
ICAgIHdpbmRvdywgYW5kIHRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGlzIGVxdWl2YWxlbnQg
dG8gdGhlIHByZXZpb3VzIFdheWxhbmQgc3VyZmFjZSBhZGRlZCB0byBXZWJDb3JlIGJ1dCBuZXZl
cgorICAgICAgICB1c2VkLiBJbiB0aGUgVUkgcHJvY2VzcyB0aGUgd2ViIHZpZXcgY3JlYXRlcyBh
biBhYnN0cmFjdCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSB0aGF0IGlzIHVzZWQgdG8gcmVuZGVy
IHRoZQorICAgICAgICBBY2NlbGVyYXRlZFN1cmZhY2UgaW50byB0aGUgd2ViIHZpZXcgdXNpbmcg
Y2Fpcm8uIFRoZSBYMTEgaW1wbGVtZW50YXRpb24gY3JlYXRlcyB0aGUgY2Fpcm8gc3VyZmFjZSBm
b3IgdGhlCisgICAgICAgIHJlZGlyZWN0ZWQgWENvbXBvc2l0ZSB3aW5kb3cgcGl4bWFwIGFuZCB1
c2VzIFhEYW1hZ2UgZXh0ZW5zaW9uIHRvIHNjaGVkdWxlIHJlZHJhd3MuIFRoZSBXYXlsYW5kIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGFza3MgdGhlIG5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3Ig
Zm9yIHRoZSB0ZXh0dXJlIGFzc29jaWF0ZWQgdG8gdGhlIHdlYiB2aWV3IHBhZ2UuCisKKyAgICAg
ICAgQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm93IGFsd2F5cyBlbmFibGVkIGJ5IGRlZmF1
bHQgaW4gYm90aCBYMTEgYW5kIFdheWxhbmQsIHVubGVzcyBpdCdzIGV4cGxpY2l0bHkKKyAgICAg
ICAgZGlzYWJsZWQgYnkgdGhlIHVzZXIgdXNpbmcgdGhlIFdFQktJVF9ESVNBQkxFX0NPTVBPU0lU
SU5HX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIGlmIGFueSBleHRlbnNpb24gb3IKKyAg
ICAgICAgZmVhdHVyZSByZXF1aXJ0ZWQgYnkgWDExIG9yIFdheWxhbmQgaW1wbGVtZW50YXRpb25z
IGFyZSBub3QgYXZhaWxhYmxlLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6
Z2xDb250ZXh0KTogUGFzcyB0aGUgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRvIEdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdygpCisgICAgICAgICogU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOiBFbmNvZGUgd2F5bGFuZCBjb21wb3NpdG9yIGRp
c3BsYXkgbmFtZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGVjb2RlIHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IG5hbWUuCisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWRkIHdheWxhbmQg
Y29tcG9zaXRvciBkaXNwbGF5IG5hbWUgaW5pdGlhbCBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhdyk6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VFeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
TmV3V2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgdGhlIHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5
IG5hbWUgaW5pdGlhbCBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludCk6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZDo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24pOgor
ICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6
OlhEYW1hZ2VOb3RpZmllcjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlm
aWVyOjpmaWx0ZXJYRGFtYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZp
ZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDEx
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKToKKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWludCk6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpX
YXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OkJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Oldh
eWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6On5CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXYXls
YW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpkZXN0cm95TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVzZSk6CisgICAgICAgIChXZWJL
aXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVudXNlKToKKyAgICAgICAgKFdlYktpdDo6
V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6V2F5
bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OlN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXYXls
YW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6flN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXYXls
YW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6bWFrZVBlbmRpbmdCdWZmZXJDdXJyZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OmF0dGFjaEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpyZXF1ZXN0RnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6cHJlcGFyZVRl
eHR1cmVGb3JQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpT
dXJmYWNlOjpjb21taXQpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6aW5p
dGlhbGl6ZUVHTCk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVdheWxhbmRMb29wU291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OldheWxhbmRDb21wb3NpdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmdldFRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6YmluZFN1cmZhY2VUb1dlYlBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6cmVnaXN0ZXJXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpjcmVhdGVXZWFrUHRyKToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnNldFdlYlBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6aXNSdW5uaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1hEYW1hZ2VOb3RpZmllci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6c2l6ZURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6QWNjZWxlcmF0ZWRTdXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjp+QWNjZWxlcmF0ZWRTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OndpbmRvdyk6CisgICAgICAgIChXZWJL
aXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6c3VyZmFjZUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6d2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6On5BY2NlbGVyYXRlZFN1cmZh
Y2VXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6
cmVzaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZVdheWxhbmQuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAuCisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpBY2NlbGVyYXRlZFN1cmZhY2VYMTEpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6On5BY2NlbGVyYXRlZFN1cmZhY2VY
MTEpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OnJlc2l6ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3Rr
OjpMYXllclRyZWVIb3N0R3RrKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNpemVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpS
ZW5kZXJGcmFtZVNjaGVkdWxlcjo6UmVuZGVyRnJhbWVTY2hlZHVsZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB0aGUgd2F5bGFuZCBjb21wb3Np
dG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6d2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSk6
IFJldHVybiB0aGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZS4KKwogMjAxNi0wOC0x
NiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
IFdLMl0gRG9uJ3QgdGhyb3cgdG91Y2hNb3ZlIGV2ZW50cyBvbiB0aGUgZmxvb3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggNzg4OTY2NC4uMmZlOWY0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UKQEAgLTI5NSwxMyArMjk1LDE2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdT
dHJlYW1lci5jcHAKIAorICAgIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUu
Y3BwCisgICAgVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
CisgICAgVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKICAgICBV
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0V4
cGVyaW1lbnRhbEZlYXR1cmVzLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xs
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKICAgICBVSVBy
b2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvVGV4
dENoZWNrZXJHdGsuY3BwCi0gICAgVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwCisg
ICAgVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKICAgICBVSVByb2Nlc3MvZ3Rr
L1dlYkNvbG9yUGlja2VyR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQ
cm94eUd0ay5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGllbnRHdGsuY3Bw
CkBAIC0zNTAsOCArMzUzLDEwIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAogCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmNwcApAQCAtMzY4LDYgKzM3Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfREVSSVZF
RF9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L0luc3BlY3Rv
ckdSZXNvdXJjZUJ1bmRsZS5jCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9
L1dlYktpdDJJbnNwZWN0b3JHUmVzb3VyY2VCdW5kbGUuYwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X1dFQktJVDJHVEtfRElSfS9XZWJLaXQyUmVzb3VyY2VzR1Jlc291cmNlQnVuZGxlLmMKKyAgICAk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MldheWxhbmRDbGllbnRQcm90
b2NvbC5jCiAKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9L1dlYktp
dEVudW1UeXBlcy5jcHAKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9
L1dlYktpdE1hcnNoYWwuY3BwCkBAIC02ODQsNiArNjkwLDE3IEBAIGFkZF9jdXN0b21fY29tbWFu
ZCgKICAgICBWRVJCQVRJTQogKQogCitpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQorICAgICMg
V2F5bGFuZCBwcm90b2NvbCBleHRlbnNpb24uCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAg
ICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXls
YW5kQ2xpZW50UHJvdG9jb2wuYworICAgICAgICBERVBFTkRTICR7V0VCS0lUMl9ESVJ9L1NoYXJl
ZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwKKyAgICAgICAgQ09NTUFORCB3YXlsYW5k
LXNjYW5uZXIgc2VydmVyLWhlYWRlciA8ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0
MldheWxhbmRQcm90b2NvbC54bWwgPiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0v
V2ViS2l0MldheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCisgICAgICAgIENPTU1BTkQgd2F5bGFuZC1z
Y2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dlYktpdDJX
YXlsYW5kUHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dl
YktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaAorICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nh
bm5lciBjb2RlIDwgJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3Rv
Y29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5bGFu
ZENsaWVudFByb3RvY29sLmMKKyAgICApCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1BMVUdJTl9Q
Uk9DRVNTX0dUSzIpCiAgICAgc2V0KFBsdWdpblByb2Nlc3NHVEsyX0VYRUNVVEFCTEVfTkFNRSBX
ZWJLaXRQbHVnaW5Qcm9jZXNzMikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCAzNDUyNDI4Li4zYTFiNWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKIAogI2luY2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oPgogCiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtMTkwLDcgKzE5
MSw3IEBAIEdMQ29udGV4dCogVGhyZWFkZWRDb21wb3NpdG9yOjpnbENvbnRleHQoKQogICAgIGlm
ICghbV9uYXRpdmVTdXJmYWNlSGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVycHJl
dF9jYXN0PEdMTmF0aXZlV2luZG93VHlwZT4obV9uYXRpdmVTdXJmYWNlSGFuZGxlKSwgR0xDb250
ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0
ZUNvbnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1f
bmF0aXZlU3VyZmFjZUhhbmRsZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JD
b21wb3NpdGluZygpKTsKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggMWEyYjBkNS4uNWJiMGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTQ1LDYgKzE0NSwx
MCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBPUyhMSU5VWCkKICAgICBlbmNvZGVyIDw8
IG1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRsZTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oV0FZ
TEFORCkKKyAgICBlbmNvZGVyIDw8IHdheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7CisjZW5k
aWYKIH0KIAogYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCkBAIC0zMDUsNiArMzA5LDExIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5
TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IGM5YWEyYzkuLjg4ZmI0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTcwLDYg
KzE3MCwxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgT1Mo
TElOVVgpCiAgICAgSVBDOjpBdHRhY2htZW50IG1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRsZTsK
ICNlbmRpZgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBTdHJpbmcgd2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5TmFtZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9j
b2wueG1sIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29s
LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjQ2MTMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3Rv
Y29sLnhtbApAQCAtMCwwICsxLDM3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPHByb3RvY29sIG5hbWU9IndsX3dlYmtpdGd0ayI+CisKKyAgPGNvcHlyaWdodD4K
KyAgICBDb3B5cmlnaHQgwqkgMjAxNCBJZ2FsaWEgUy5MLgorCisgICAgUGVybWlzc2lvbiB0byB1
c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcworICAgIHNvZnR3YXJl
IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQK
KyAgICB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhcHBlYXIgaW4KKyAgICBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KKyAgICBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRp
bmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YKKyAgICB0aGUgY29weXJpZ2h0
IGhvbGRlcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5CisgICAgcGVy
dGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMs
CisgICAgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgVGhlIGNvcHlyaWdodCBob2xkZXJzIG1h
a2Ugbm8KKyAgICByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMg
c29mdHdhcmUgZm9yIGFueQorICAgIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdp
dGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisgICAgd2FycmFudHkuCisKKyAgICBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUwor
ICAgIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5ECisgICAgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgICAgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisgICAgV0hBVFNPRVZFUiBSRVNVTFRJ
TkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOCisgICAgQU4g
QUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwK
KyAgICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJG
T1JNQU5DRSBPRgorICAgIFRISVMgU09GVFdBUkUuCisgIDwvY29weXJpZ2h0PgorCisgIDxpbnRl
cmZhY2UgbmFtZT0id2xfd2Via2l0Z3RrIiB2ZXJzaW9uPSIxIj4KKyAgICA8cmVxdWVzdCBuYW1l
PSJiaW5kX3N1cmZhY2VfdG9fcGFnZSI+CisgICAgICA8YXJnIG5hbWU9InN1cmZhY2UiIHR5cGU9
Im9iamVjdCIgaW50ZXJmYWNlPSJ3bF9zdXJmYWNlIi8+CisgICAgICA8YXJnIG5hbWU9InBhZ2Vf
aWQiIHR5cGU9InVpbnQiLz4KKyAgICA8L3JlcXVlc3Q+CisKKyAgPC9pbnRlcmZhY2U+CisKKzwv
cHJvdG9jb2w+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYWQzODE0MC4uMDZhZjA1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAKICNp
bmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRl
ICJJbnB1dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgi
CkBAIC03MiwyMyArNzMsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmgiCiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotI2lu
Y2x1ZGUgIlhEYW1hZ2VOb3RpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5WDExLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRl
IDxYMTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KLSNpbmNs
dWRlIDxjYWlyby14bGliLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRl
IDxnZGsvZ2RreC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotI2luY2x1ZGUg
PGdkay9nZGt3YXlsYW5kLmg+Ci0jZW5kaWYKLQogLy8gZ3RrX3dpZGdldF9nZXRfc2NhbGVfZmFj
dG9yKCkgYXBwZWFyZWQgaW4gR1RLIDMuMTAsIGJ1dCB3ZSBhbHNvIG5lZWQKIC8vIHRvIG1ha2Ug
c3VyZSB3ZSBoYXZlIGNhaXJvIG5ldyBlbm91Z2ggdG8gc3VwcG9ydCBjYWlyb19zdXJmYWNlX3Nl
dF9kZXZpY2Vfc2NhbGUKICNkZWZpbmUgSEFWRV9HVEtfU0NBTEVfRkFDVE9SIEhBVkVfQ0FJUk9f
U1VSRkFDRV9TRVRfREVWSUNFX1NDQUxFICYmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQpA
QCAtMjExLDEwICsxOTksNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAg
ICAgdW5zaWduZWQgc2NyZWVuU2F2ZXJDb29raWU7CiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlOwotICAgIFhVbmlxdWVEYW1hZ2UgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1N1cmZhY2VEYW1hZ2U7Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU+IGFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOwogCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0FuZERyb3BIYW5kbGVy
PiBkcmFnQW5kRHJvcEhhbmRsZXI7CkBAIC0zNTEsNTAgKzMzNiw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmllCiAgICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZCh3aW5kb3csICJyZWFsaXplIiwgR19DQUxMQkFDSyh0b3BsZXZl
bFdpbmRvd1JlYWxpemVkKSwgd2ViVmlld0Jhc2UpOwogfQogCi0jaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIFBpeG1h
cCBwaXhtYXApCi17Ci0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5
cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBp
ZiAocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UKLSAgICAgICAgJiYgY2Fpcm9f
eGxpYl9zdXJmYWNlX2dldF9kcmF3YWJsZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZS5nZXQoKSkgPT0gcGl4bWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UpIHsKLSAgICAgICAgaWYgKHByaXYtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlKSB7Ci0gICAgICAgICAgICBYRGFtYWdlTm90
aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZURhbWFnZS5nZXQoKSk7Ci0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nU3VyZmFjZURhbWFnZS5yZXNldCgpOwotICAgICAgICB9Ci0gICAgICAgIHByaXYtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIXBp
eG1hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdp
bmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCkpOwotICAgIGlmICghZHJhd2luZ0FyZWEpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEludFNpemUgc2l6ZSA9IGRyYXdpbmdBcmVhLT5zaXplKCk7Ci0gICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBwcml2LT5wYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7
Ci0gICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBEaXNwbGF5KiBkaXNw
bGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IEdES19E
SVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsKLSAgICBHZGtWaXN1
YWwqIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2Rl
ZmF1bHQoKSk7Ci0gICAgaWYgKCF2aXN1YWwpCi0gICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5f
Z2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAgICBwcml2LT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFj
ZV9jcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2Nh
bGUocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxl
RmFjdG9yLCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1N1cmZhY2VEYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgWERhbWFn
ZVJlcG9ydE5vbkVtcHR5KTsKLSAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZChw
cml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZS5nZXQoKSwgW3dlYlZpZXdd
IHsKLSAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQod2ViVmlldykpOwot
ICAgIH0pOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6
ZShHdGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC01NjQsOSArNTA1LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKEdPYmplY3QqIGdvYmplY3QpCiAgICAgZ19j
YW5jZWxsYWJsZV9jYW5jZWwod2ViVmlldy0+cHJpdi0+c2NyZWVuU2F2ZXJJbmhpYml0Q2FuY2Vs
bGFibGUuZ2V0KCkpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldp
bmRvdyh3ZWJWaWV3LCBudWxscHRyKTsKICAgICB3ZWJWaWV3LT5wcml2LT5wYWdlUHJveHktPmNs
b3NlKCk7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0
V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYlZpZXcsIDApOwot
I2VuZGlmCisgICAgd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgPSBudWxs
cHRyOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFz
cyktPmRpc3Bvc2UoZ29iamVjdCk7CiB9CiAKQEAgLTU4NSw1NSArNTI0LDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJp
di0+YXV0aGVudGljYXRpb25EaWFsb2cgPSAwOwogfQogCi1zdGF0aWMgYm9vbCB3ZWJraXRXZWJW
aWV3UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlLCBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEsIGNhaXJvX3Qq
IGNyLCBHZGtSZWN0YW5nbGUqIGNsaXBSZWN0KQotewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKQotICAgIEFTU0VSVChkcmF3aW5nQXJlYSk7Ci0KLSAgICBpZiAoIWRyYXdp
bmdBcmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2ViVmlld0Jhc2UpLT5wcml2OwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlLmdldCgpOwotICAgIGNh
aXJvX3NhdmUoY3IpOwotCi0gICAgaWYgKCFzdXJmYWNlIHx8ICFwcml2LT5wYWdlUHJveHktPmRy
YXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9
IHByaXYtPnBhZ2VQcm94eS0+YmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgIGlmIChjb2xvci5o
YXNBbHBoYSgpKSB7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54
LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKLSAgICAg
ICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAg
ICAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29sb3Iu
YWxwaGEoKSA+IDApIHsKLSAgICAgICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNv
bG9yKTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1Jf
U09VUkNFKTsKLSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNs
aXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICAg
ICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSkg
ewotICAgICAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9j
ZXNzIGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0Ci0gICAgICAgIC8vIGFzIGRpcnR5IHRvIGVu
c3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9z
c2libGUuCi0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJmYWNlKTsKLSAgICAg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0
LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7Ci0gICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3Vy
ZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwg
Q0FJUk9fT1BFUkFUT1JfT1ZFUik7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0KLQot
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTSh3ZWJWaWV3QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNyKTsKLSAgICBVTlVT
RURfUEFSQU0oY2xpcFJlY3QpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWly
b190KiBjcikKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAtNjQ1LDcgKzUzNSw5IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQog
ICAgIGlmICghZ2RrX2NhaXJvX2dldF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAg
ICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgaWYgKCF3ZWJraXRXZWJWaWV3UmVuZGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMod2ViVmlld0Jhc2UsIGRyYXdpbmdBcmVhLCBjciwgJmNs
aXBSZWN0KSkgeworICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmUgJiYgZHJhd2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQor
ICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnBhaW50
KGNyLCBjbGlwUmVjdCk7CisgICAgZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6OlJlZ2lvbiB1bnBh
aW50ZWRSZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNlZC4KICAgICAgICAgZHJhd2luZ0Fy
ZWEtPnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKICAgICB9CkBAIC0xMjg2
LDYgKzExNzgsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFJlZjxBUAogICAgIHByaXYtPnBhZ2VQcm94
eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
IAorICAgIHByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlID0gQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZSgqcHJpdi0+cGFnZVByb3h5KTsKKwogICAgIHByaXYtPmlucHV0TWV0aG9k
RmlsdGVyLnNldFBhZ2UocHJpdi0+cGFnZVByb3h5LmdldCgpKTsKIAogI2lmIEhBVkUoR1RLX1ND
QUxFX0ZBQ1RPUikKQEAgLTE1NjYsMjkgKzE0NjAsMjAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVJlc2V0Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkK
IAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250
ZXh0JiBsYXllclRyZWVDb250ZXh0KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Bp
eG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYg
KHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAg
ICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRh
dGUobGF5ZXJUcmVlQ29udGV4dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7Ci0jaWYg
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VT
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCBsYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJW
aWV3QmFzZSk7Ci0jZW5kaWYKKyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAogdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdC
YXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKExheWVyVHJlZUNvbnRl
eHQoKSk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3Mo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQpAQCAtMTYxNiw5ICsxNTAxLDkg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VD
bG9zZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotI2lmIFVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgMCk7Ci0jZWxpZiBQ
TEFURk9STShYMTEpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAod2Via2l0V2ViVmll
d0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJW
aWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShMYXllclRyZWVD
b250ZXh0KCkpOworI2lmIFBMQVRGT1JNKFgxMSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAh
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCBhZWFhZjRiLi4xMDA1NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEwMCw2ICsxMDAsMTEgQEAKICNpbmNsdWRlICJN
ZW1vcnlQcmVzc3VyZU1vbml0b3IuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkK
KyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1EaXNwbGF5Lmg+CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTYzOSw2ICs2NDQsMTEgQEAgV2ViUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgICAg
IHBhcmFtZXRlcnMubWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlID0gTWVtb3J5UHJlc3N1cmVN
b25pdG9yOjpzaW5nbGV0b24oKS5jcmVhdGVIYW5kbGUoKTsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlw
ZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgcGFyYW1ldGVy
cy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lID0gV2F5bGFuZENvbXBvc2l0b3I6OnNpbmds
ZXRvbigpLmRpc3BsYXlOYW1lKCk7CisjZW5kaWYKKwogICAgIHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwog
CiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxY2FmZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXkuaD4KKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kLmgiCisjZW5kaWYKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgiCisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU+IEFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUo
KSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAgIHJldHVybiBBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorI2lm
IFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorICAgIGlmIChQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEp
CisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6Y3JlYXRlKHdlYlBh
Z2UpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCisg
ICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKK3sKK30KKworQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6
On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSgpCit7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sK
KyAgICBpZiAobV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9IG1fd2ViUGFnZS5iYWNrZ3Jv
dW5kQ29sb3IoKTsKKyAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkgeworICAgICAgICBjYWlyb19y
ZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgp
LCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJ
Uk9fT1BFUkFUT1JfQ0xFQVIpOworICAgICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9CisKKyAg
ICBpZiAoY29sb3IuYWxwaGEoKSA+IDApIHsKKyAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xv
cihjciwgY29sb3IpOworICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJB
VE9SX1NPVVJDRSk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBj
bGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICAg
ICAgY2Fpcm9fZmlsbChjcik7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ3NmJiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9jYWlybyBjYWly
b190OworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgTGF5ZXJUcmVlQ29udGV4dDsKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKKworcHJvdGVjdGVkOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
KFdlYlBhZ2VQcm94eSYpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjZiYTYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1
ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRy
Q2Fpcm8uaD4KKworI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
KyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTaGltcy5oPgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVf
cHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZD4gQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIGlmICghV2F5
bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZD4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCh3ZWJQYWdlKSk7
Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlKHdlYlBhZ2UpCit7CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigp
LnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQ6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoKQoreworICAgIFdheWxh
bmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOwor
fQorCitib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQoY2Fpcm9fdCog
Y3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIEdMdWludCB0ZXh0dXJlOworICAg
IEludFNpemUgdGV4dHVyZVNpemU7CisgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZ2V0VGV4dHVyZShtX3dlYlBhZ2UsIHRleHR1cmUsIHRleHR1cmVTaXplKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CisKKyNpZiAwCisgICAgLy8gRklYTUU6
IFVzZSB0aGlzIHdoZW4gR1RLKyA+PSAzLjE2LiBHVEsrIGV4cGVjdHMgdGhlIFkgYXhpcyB0byBi
ZSBpbnZlcnRlZCB0byB3aGF0IHdlIGdldCwgc28gd2UgbmVlZCB0byBmbGlwIGl0IHNvbWVob3cu
CisgICAgZ2RrX2NhaXJvX2RyYXdfZnJvbV9nbChjciwgZ3RrX3dpZGdldF9nZXRfd2luZG93KG1f
d2ViUGFnZS52aWV3V2lkZ2V0KCkpLCB0ZXh0dXJlLCBHTF9URVhUVVJFLCAxLCBjbGlwUmVjdC54
KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwor
I2Vsc2UKKyAgICBJbnRTaXplIHNpemUgPSB0ZXh0dXJlU2l6ZTsKKyAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHNpemUuc2Nh
bGUoZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgaWYgKCFtX3N1cmZhY2UgfHwgY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdldCgpKSAhPSBzaXplLndpZHRoKCkgfHwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fc3VyZmFjZS5nZXQoKSkgIT0gc2l6ZS5o
ZWlnaHQoKSkKKyAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgR0x1aW50IGZiOworICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYik7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIGZiKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAg
ICBnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICBnbFBpeGVsU3RvcmVp
KEdMX1BBQ0tfUk9XX0xFTkdUSCwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3Vy
ZmFjZS5nZXQoKSkgLyA0KTsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgZ2xSZWFkUGl4ZWxz
KDAsIDAsIHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFj
ZS5nZXQoKSkpOworI2Vsc2UKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVNpemUud2lk
dGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCksIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84Xzhf
OF84X1JFViwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpKTsK
KyNlbmRpZgorICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCAwKTsKKworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbERlbGV0ZUZyYW1l
YnVmZmVycygxLCAmZmIpOworCisgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVkIGJ5
IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAorICAgIC8vIGFzIGRp
cnR5IHRvIGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNv
b24gYXMgcG9zc2libGUuCisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc3VyZmFjZS5n
ZXQoKSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0Lnko
KSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShjciwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRf
b3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX09WRVIpOworICAgIGNhaXJvX2ZpbGwoY3IpOwor
I2VuZGlmCisKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40YzQyMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgUExBVEZPUk0oV0FZ
TEFORCkKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZD4gY3JlYXRlKFdlYlBhZ2VQcm94eSYp
OworICAgIH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoKTsKKworcHJpdmF0ZToKKyAg
ICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoV2ViUGFnZVByb3h5Jik7CisKKyAgICBi
b29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisK
KyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVY
MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMjgzMDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExLmNwcApAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1
ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9leHRl
bnNpb25zL1hkYW1hZ2UuaD4KKyNpbmNsdWRlIDxjYWlyby14bGliLmg+CisjaW5jbHVkZSA8Z2Rr
L2dka3guaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0YXRpYyBPcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOworCitjbGFzcyBY
RGFtYWdlTm90aWZpZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhEYW1hZ2VOb3RpZmll
cik7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj47Citw
dWJsaWM6CisgICAgc3RhdGljIFhEYW1hZ2VOb3RpZmllciYgc2luZ2xldG9uKCkKKyAgICB7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+IG5vdGlmaWVyOwor
ICAgICAgICByZXR1cm4gbm90aWZpZXI7CisgICAgfQorCisgICAgdm9pZCBhZGQoRGFtYWdlIGRh
bWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgbm90aWZ5RnVuY3Rpb24pCisgICAgeworICAg
ICAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZ2RrX3dp
bmRvd19hZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRmlsdGVyRnVuYz4o
JmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOworICAgICAgICBtX25vdGlmeUZ1bmN0aW9ucy5h
ZGQoZGFtYWdlLCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7CisgICAgfQorCisgICAgdm9pZCBy
ZW1vdmUoRGFtYWdlIGRhbWFnZSkKKyAgICB7CisgICAgICAgIG1fbm90aWZ5RnVuY3Rpb25zLnJl
bW92ZShkYW1hZ2UpOworICAgICAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBYRGFtYWdlTm90aWZpZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0
aWMgR2RrRmlsdGVyUmV0dXJuIGZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZlbnQqIGV2ZW50LCBH
ZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciogbm90aWZpZXIpCisgICAgeworICAgICAgICBhdXRv
KiB4RXZlbnQgPSBzdGF0aWNfY2FzdDxYRXZlbnQqPihldmVudCk7CisgICAgICAgIGlmICh4RXZl
bnQtPnR5cGUgIT0gc19kYW1hZ2VFdmVudEJhc2UudmFsdWUoKSArIFhEYW1hZ2VOb3RpZnkpCisg
ICAgICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsKKworICAgICAgICBhdXRvKiBk
YW1hZ2VFdmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8WERhbWFnZU5vdGlmeUV2ZW50Kj4oeEV2ZW50
KTsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5ub3RpZnkoZGFtYWdlRXZlbnQtPmRhbWFnZSkpIHsK
KyAgICAgICAgICAgIFhEYW1hZ2VTdWJ0cmFjdCh4RXZlbnQtPnhhbnkuZGlzcGxheSwgZGFtYWdl
RXZlbnQtPmRhbWFnZSwgTm9uZSwgTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gR0RLX0ZJTFRF
Ul9SRU1PVkU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5V
RTsKKyAgICB9CisKKyAgICBib29sIG5vdGlmeShEYW1hZ2UgZGFtYWdlKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKGNvbnN0IGF1dG8mIG5vdGlmeUZ1bmN0aW9uID0gbV9ub3RpZnlGdW5jdGlv
bnMuZ2V0KGRhbWFnZSkpIHsKKyAgICAgICAgICAgIG5vdGlmeUZ1bmN0aW9uKCk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9ub3RpZnlG
dW5jdGlvbnM7Cit9OworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVY
MTE+IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlKQoreworICAgIGF1dG8mIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKKyAgICBpZiAoIWRpc3BsYXkuc3Vw
cG9ydHNYQ29tcG9zaXRlKCkgfHwgIWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdlKHNfZGFtYWdlRXZl
bnRCYXNlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMT4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExKHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OkFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlWDExKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IEFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlKHdlYlBhZ2UpCit7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoKQoreworICAgIGlmIChtX2RhbWFn
ZSkgeworICAgICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShtX2RhbWFn
ZS5nZXQoKSk7CisgICAgICAgIG1fZGFtYWdlLnJlc2V0KCk7CisgICAgfQorfQorCit2b2lkIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYg
bGF5ZXJUcmVlQ29udGV4dCkKK3sKKyAgICBQaXhtYXAgcGl4bWFwID0gbGF5ZXJUcmVlQ29udGV4
dC5jb250ZXh0SUQ7CisgICAgaWYgKG1fc3VyZmFjZSAmJiBjYWlyb194bGliX3N1cmZhY2VfZ2V0
X2RyYXdhYmxlKG1fc3VyZmFjZS5nZXQoKSkgPT0gcGl4bWFwKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9zdXJmYWNlKSB7CisgICAgICAgIGlmIChtX2RhbWFnZSkgeworICAgICAgICAg
ICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5yZW1vdmUobV9kYW1hZ2UuZ2V0KCkpOwor
ICAgICAgICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICAgICAgfQorICAgICAgICBtX3N1cmZh
Y2UgPSBudWxscHRyOworICAgIH0KKworICAgIGlmICghcGl4bWFwKQorICAgICAgICByZXR1cm47
CisKKyAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxE
cmF3aW5nQXJlYVByb3h5SW1wbCo+KG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpKTsKKyAgICBpZiAo
IWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNpemUgPSBkcmF3
aW5nQXJlYS0+c2l6ZSgpOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdl
LmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7
CisKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgQVNTRVJUKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpID09IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZh
dWx0KCkpKTsKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlz
dWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAgaWYgKCF2aXN1YWwpCisgICAgICAg
IHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVm
YXVsdCgpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKGRpc3BsYXksIHBpeG1hcCwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1f
c3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAg
ICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBYRGFtYWdlUmVwb3J0
Tm9uRW1wdHkpOworICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkKG1fZGFtYWdl
LmdldCgpLCBbdGhpc10geworICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcobV93ZWJQYWdl
LnZpZXdXaWRnZXQoKSk7CisgICAgfSk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTE6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAg
ICBpZiAoIW1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2Fpcm9fc2F2
ZShjcik7CisgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7
CisKKyAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNz
IGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0CisgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdl
IGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4K
KyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJmYWNlLmdldCgpKTsKKyAgICBjYWly
b19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0
aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNy
LCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fZmlsbChjcik7CisKKyAgICBjYWlyb19yZXN0
b3JlKGNyKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YTdjMmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUuaCIKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
WFVuaXF1ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExIGZpbmFsIDogcHVibGlj
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE+
IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEo
KTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMShXZWJQYWdlUHJv
eHkmKTsKKworICAgIHZvaWQgdXBkYXRlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlk
ZTsKKyAgICBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CisgICAgV2Vi
Q29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDQwMmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAt
MCwwICsxLDQ4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgor
CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYktpdDJXYXlsYW5kU2VydmVy
UHJvdG9jb2wuaCIKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
TENvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgor
I2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLXByb3RvY29sLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VT
XzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+Cisj
ZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvT3BlbkdMU2hpbXMuaD4KKyNlbmRpZgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiAhZGVmaW5lZChQ
Rk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5U
UllQIFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKShFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfZGlz
cGxheSopOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xVTkJJTkRXQVlMQU5ERElTUExB
WVdMKQordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMVU5CSU5EV0FZTEFO
RERJU1BMQVlXTCkoRUdMRGlzcGxheSwgc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyNlbmRpZgorCitz
dGF0aWMgUEZORUdMQklORFdBWUxBTkRESVNQTEFZV0wgZWdsQmluZFdheWxhbmREaXNwbGF5Owor
c3RhdGljIFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wgZWdsVW5iaW5kV2F5bGFuZERpc3Bs
YXk7CitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MgZWdsSW1hZ2VU
YXJnZXRUZXh0dXJlMmQ7CitzdGF0aWMgUEZORUdMUVVFUllXQVlMQU5EQlVGRkVSV0wgZWdsUXVl
cnlXYXlsYW5kQnVmZmVyOworCitXYXlsYW5kQ29tcG9zaXRvciYgV2F5bGFuZENvbXBvc2l0b3I6
OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3Np
dG9yPiB3YXlsYW5kQ29tcG9zaXRvcjsKKyAgICByZXR1cm4gd2F5bGFuZENvbXBvc2l0b3I7Cit9
CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIqIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6
OmdldE9yQ3JlYXRlKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKHN0
cnVjdCB3bF9saXN0ZW5lciogbGlzdGVuZXIgPSB3bF9yZXNvdXJjZV9nZXRfZGVzdHJveV9saXN0
ZW5lcihyZXNvdXJjZSwgZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2spKSB7CisgICAgICAgIFdheWxh
bmRDb21wb3NpdG9yOjpCdWZmZXIqIGJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIHdsX2NvbnRhaW5l
cl9vZihsaXN0ZW5lciwgYnVmZmVyLCBtX2Rlc3Ryb3lMaXN0ZW5lcik7CisgICAgfQorCisgICAg
cmV0dXJuIG5ldyBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKHJlc291cmNlKTsKK30KKworV2F5
bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6QnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3Vy
Y2UpCisgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQorICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0
aGlzKQoreworICAgIHdsX2xpc3RfaW5pdCgmbV9kZXN0cm95TGlzdGVuZXIubGluayk7CisgICAg
bV9kZXN0cm95TGlzdGVuZXIubm90aWZ5ID0gZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2s7CisgICAg
d2xfcmVzb3VyY2VfYWRkX2Rlc3Ryb3lfbGlzdGVuZXIobV9yZXNvdXJjZSwgJm1fZGVzdHJveUxp
c3RlbmVyKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZlcigpCit7Cisg
ICAgd2xfbGlzdF9yZW1vdmUoJm1fZGVzdHJveUxpc3RlbmVyLmxpbmspOworfQorCit2b2lkIFdh
eWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKHN0cnVjdCB3
bF9saXN0ZW5lciogbGlzdGVuZXIsIHZvaWQqKQoreworICAgIFdheWxhbmRDb21wb3NpdG9yOjpC
dWZmZXIqIGJ1ZmZlcjsKKyAgICBidWZmZXIgPSB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1
ZmZlciwgbV9kZXN0cm95TGlzdGVuZXIpOworICAgIGRlbGV0ZSBidWZmZXI7Cit9CisKK3ZvaWQg
V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudCsrOwor
fQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVudXNlKCkKK3sKKyAgICBtX2J1
c3lDb3VudC0tOworICAgIGlmICghbV9idXN5Q291bnQpCisgICAgICAgIHdsX3Jlc291cmNlX3F1
ZXVlX2V2ZW50KG1fcmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNFKTsKK30KKworRUdMSW1hZ2VL
SFIgV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRlSW1hZ2UoKSBjb25zdAoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUltYWdlKFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgRUdMX05PX0NPTlRFWFQsIEVH
TF9XQVlMQU5EX0JVRkZFUl9XTCwgbV9yZXNvdXJjZSwgbnVsbHB0cikpOworfQorCitJbnRTaXpl
IFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIEVHTERpc3Bs
YXkgZWdsRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3Bs
YXkoKTsKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIo
ZWdsRGlzcGxheSwgbV9yZXNvdXJjZSwgRUdMX1dJRFRILCAmd2lkdGgpOworICAgIGVnbFF1ZXJ5
V2F5bGFuZEJ1ZmZlcihlZ2xEaXNwbGF5LCBtX3Jlc291cmNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0
KTsKKworICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworV2F5bGFuZENvbXBvc2l0
b3I6OlN1cmZhY2U6OlN1cmZhY2UoKQorICAgIDogbV9pbWFnZShFR0xfTk9fSU1BR0VfS0hSKQor
eworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtX3RleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6
OlN1cmZhY2U6On5TdXJmYWNlKCkKK3sKKyAgICAvLyBEZXN0cm95IHBlbmRpbmcgZnJhbWUgY2Fs
bGJhY2tzLgorICAgIGF1dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7Cisg
ICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IGxpc3QpCisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ry
b3kocmVzb3VyY2UpOworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlci0+dW51
c2UoKTsKKworICAgIGlmIChtX2ltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpCisgICAgICAgIGVn
bERlc3Ryb3lJbWFnZShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5
KCksIG1faW1hZ2UpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKK30K
Kwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6bWFrZVBlbmRpbmdCdWZmZXJDdXJy
ZW50KCkKK3sKKyAgICBpZiAobV9wZW5kaW5nQnVmZmVyID09IG1fYnVmZmVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyLT51bnVzZSgpOwor
CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyLT51c2Uo
KTsKKworICAgIG1fYnVmZmVyID0gbV9wZW5kaW5nQnVmZmVyOworfQorCit2b2lkIFdheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlOjphdHRhY2hCdWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKiBidWZm
ZXIpCit7CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVy
ID0gbnVsbHB0cjsKKworICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgYXV0byogY29tcG9zaXRv
ckJ1ZmZlciA9IFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKGJ1ZmZlcik7
CisgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IGNvbXBvc2l0b3JCdWZmZXItPmNyZWF0ZVdlYWtQ
dHIoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVl
c3RGcmFtZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIHdsX3Jlc291cmNl
X3NldF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwgbnVsbHB0ciwgdGhpcywgW10oc3RydWN0IHds
X3Jlc291cmNlKiByZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nh
c3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRh
KHJlc291cmNlKSk7CisgICAgICAgIGlmIChzaXplX3QgaXRlbSA9IHN1cmZhY2UtPm1fZnJhbWVD
YWxsYmFja0xpc3QuZmluZChyZXNvdXJjZSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBzdXJm
YWNlLT5tX2ZyYW1lQ2FsbGJhY2tMaXN0LnJlbW92ZShpdGVtKTsKKyAgICB9KTsKKyAgICBtX2Zy
YW1lQ2FsbGJhY2tMaXN0LmFwcGVuZChyZXNvdXJjZSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBv
c2l0b3I6OlN1cmZhY2U6OnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQmIHRleHR1
cmUsIEludFNpemUmIHRleHR1cmVTaXplKQoreworICAgIGlmIChtX2ltYWdlID09IEVHTF9OT19J
TUFHRV9LSFIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBlZ2xJbWFnZVRhcmdldFRleHR1cmUyZChHTF9U
RVhUVVJFXzJELCBtX2ltYWdlKTsKKworICAgIHRleHR1cmUgPSBtX3RleHR1cmU7CisgICAgdGV4
dHVyZVNpemUgPSBtX2J1ZmZlci0+c2l6ZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpjb21taXQoKQoreworICAgIEVHTERpc3BsYXkg
ZWdsRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXko
KTsKKyAgICBpZiAobV9pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICBlZ2xEZXN0
cm95SW1hZ2UoZWdsRGlzcGxheSwgbV9pbWFnZSk7CisgICAgbV9pbWFnZSA9IG1fcGVuZGluZ0J1
ZmZlci0+Y3JlYXRlSW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hS
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQo
KTsKKyAgICBpZiAobV93ZWJQYWdlKQorICAgICAgICBtX3dlYlBhZ2UtPnNldFZpZXdOZWVkc0Rp
c3BsYXkoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX3dlYlBhZ2UtPnZpZXdTaXplKCkpKTsK
KworICAgIGF1dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9y
IChhdXRvKiByZXNvdXJjZSA6IGxpc3QpIHsKKyAgICAgICAgd2xfY2FsbGJhY2tfc2VuZF9kb25l
KHJlc291cmNlLCAwKTsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNvdXJjZSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc3Vy
ZmFjZV9pbnRlcmZhY2Ugc3VyZmFjZUludGVyZmFjZSA9IHsKKyAgICAvLyBkZXN0cm95Q2FsbGJh
Y2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJj
ZSkgeworICAgICAgICB3bF9yZXNvdXJjZV9kZXN0cm95KHJlc291cmNlKTsKKyAgICB9LAorICAg
IC8vIGF0dGFjaENhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1
Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIGJ1ZmZlciwgaW50
MzJfdCBzeCwgaW50MzJfdCBzeSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nh
c3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRh
KHJlc291cmNlKSk7CisgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBFR0xpbnQgZm9ybWF0OworICAgICAgICBpZiAoIWVnbFF1ZXJ5V2F5bGFuZEJ1
ZmZlcihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIGJ1ZmZl
ciwgRUdMX1RFWFRVUkVfRk9STUFULCAmZm9ybWF0KQorICAgICAgICAgICAgfHwgKGZvcm1hdCAh
PSBFR0xfVEVYVFVSRV9SR0IgJiYgZm9ybWF0ICE9IEVHTF9URVhUVVJFX1JHQkEpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHN1cmZhY2UtPmF0dGFjaEJ1ZmZlcihidWZmZXIpOwor
ICAgIH0sCisgICAgLy8gZGFtYWdlQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwg
c3RydWN0IHdsX3Jlc291cmNlKiwgaW50MzJfdCwgaW50MzJfdCwgaW50MzJfdCwgaW50MzJfdCkg
eworICAgIH0sCisgICAgLy8gZnJhbWVDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQq
IGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMyX3QgaWQpIHsKKyAg
ICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJm
YWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAo
IXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0cnVjdCB3bF9y
ZXNvdXJjZSogY2FsbGJhY2tSZXNvdXJjZSA9IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3
bF9jYWxsYmFja19pbnRlcmZhY2UsIDEsIGlkKSkKKyAgICAgICAgICAgIHN1cmZhY2UtPnJlcXVl
c3RGcmFtZShjYWxsYmFja1Jlc291cmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2xf
Y2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgfSwKKyAgICAvLyBzZXRPcGFxdWVS
ZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqKSB7CisgICAgfSwKKyAgICAvLyBzZXRJbnB1dFJlZ2lv
bkNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSos
IHN0cnVjdCB3bF9yZXNvdXJjZSopIHsKKyAgICB9LAorICAgIC8vIGNvbW1pdENhbGxiYWNrCisg
ICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291
cmNlKSB7CisgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9z
aXRvcjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAg
ICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChz
dXJmYWNlLT5jb21taXQoKSkKKyAgICAgICAgICAgIHdsX2Rpc3BsYXlfZmx1c2hfY2xpZW50cyh3
bF9jbGllbnRfZ2V0X2Rpc3BsYXkoY2xpZW50KSk7CisgICAgfSwKKyAgICAvLyBzZXRCdWZmZXJU
cmFuc2Zvcm1DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVz
b3VyY2UqLCBpbnQzMl90KSB7CisgICAgfSwKKyAgICAvLyBzZXRCdWZmZXJTY2FsZUNhbGxiYWNr
CisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3Qp
IHsKKyAgICB9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NvbXBvc2l0b3JfaW50ZXJm
YWNlIGNvbXBvc2l0b3JJbnRlcmZhY2UgPSB7CisgICAgLy8gY3JlYXRlU3VyZmFjZUNhbGxiYWNr
CisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJl
c291cmNlLCB1aW50MzJfdCBpZCkgeworICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiBz
dXJmYWNlUmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfc3VyZmFjZV9p
bnRlcmZhY2UsIDEsIGlkKSkgeworICAgICAgICAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVu
dGF0aW9uKHN1cmZhY2VSZXNvdXJjZSwgJnN1cmZhY2VJbnRlcmZhY2UsIG5ldyBXYXlsYW5kQ29t
cG9zaXRvcjo6U3VyZmFjZSgpLAorICAgICAgICAgICAgICAgIFtdKHN0cnVjdCB3bF9yZXNvdXJj
ZSogcmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRp
Y19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJf
ZGF0YShyZXNvdXJjZSkpOworICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3VyZmFjZTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB3bF9jbGllbnRf
cG9zdF9ub19tZW1vcnkoY2xpZW50KTsKKyAgICB9LAorICAgIC8vIGNyZWF0ZVJlZ2lvbkNhbGxi
YWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHVpbnQz
Ml90KQorICAgIHsKKyAgICB9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3dlYmtpdGd0
a19pbnRlcmZhY2Ugd2Via2l0Z3RrSW50ZXJmYWNlID0geworICAgIC8vIGJpbmRTdXJmYWNlVG9Q
YWdlQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNl
KiByZXNvdXJjZSwgc3RydWN0IHdsX3Jlc291cmNlKiBzdXJmYWNlUmVzb3VyY2UsIHVpbnQzMl90
IHBhZ2VJRCkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENv
bXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHN1cmZhY2VSZXNv
dXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byogY29tcG9zaXRvciA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4o
d2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBjb21wb3NpdG9y
LT5iaW5kU3VyZmFjZVRvV2ViUGFnZShzdXJmYWNlLCBwYWdlSUQpOworICAgIH0KK307CisKK2Jv
b2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0woKQoreworICAgIGVnbEltYWdlVGFy
Z2V0VGV4dHVyZTJkID0gKFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKWVnbEdl
dFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIik7CisgICAgaWYgKCFl
Z2xJbWFnZVRhcmdldFRleHR1cmUyZCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRD
b21wb3NpdG9yRUdMIHJlcXVpcmVzIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlLiIpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZWdsUXVlcnlXYXlsYW5kQnVmZmVyID0gKFBG
TkVHTFFVRVJZV0FZTEFOREJVRkZFUldMKWVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeVdheWxh
bmRCdWZmZXJXTCIpOworICAgIGlmICghZWdsUXVlcnlXYXlsYW5kQnVmZmVyKSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3JFR0wgcmVxdWlyZXMgZWdsUXVlcnlXYXls
YW5kQnVmZmVyLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZWdsQmlu
ZFdheWxhbmREaXNwbGF5ID0gKFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKWVnbEdldFByb2NB
ZGRyZXNzKCJlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCIpOworICAgIGVnbFVuYmluZFdheWxhbmRE
aXNwbGF5ID0gKFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpZWdsR2V0UHJvY0FkZHJlc3Mo
ImVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wiKTsKKyAgICBpZiAoIWVnbEJpbmRXYXlsYW5kRGlz
cGxheSB8fCAhZWdsVW5iaW5kV2F5bGFuZERpc3BsYXkpIHsKKyAgICAgICAgZ193YXJuaW5nKCJF
R0wgc3VwcG9ydHMgRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5IGV4dGVuc2lvbiBidXQgZG9l
cyBub3QgcHJvdmlkZSBleHRlbnNpb24gZnVuY3Rpb25zLiIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgbV9lZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3Jl
ZW5Db250ZXh0KCk7CisgICAgaWYgKCFtX2VnbENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghbV9lZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3R5cGVkZWYgc3RydWN0
IHsKKyAgICBHU291cmNlIHNvdXJjZTsKKyAgICBncG9pbnRlciBmZFRhZzsKKyAgICBzdHJ1Y3Qg
d2xfZGlzcGxheSogZGlzcGxheTsKK30gV2F5bGFuZExvb3BTb3VyY2U7CisKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCB3YXlsYW5kTG9vcFNvdXJjZUNvbmRpdGlvbiA9IEdfSU9fSU4gfCBHX0lPX0hV
UCB8IEdfSU9fRVJSOworCitzdGF0aWMgR1NvdXJjZUZ1bmNzIHdheWxhbmRMb29wU291cmNlRnVu
Y3Rpb25zID0geworICAgIC8vIHByZXBhcmUKKyAgICBbXShHU291cmNlICpzb3VyY2UsIGludCAq
dGltZW91dCkgLT4gZ2Jvb2xlYW4geworICAgICAgICAqdGltZW91dCA9IC0xOworICAgICAgICBh
dXRvKiB3bExvb3BTb3VyY2UgPSByZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291cmNlKj4o
c291cmNlKTsKKyAgICAgICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzKHdsTG9vcFNvdXJjZS0+
ZGlzcGxheSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8v
IGNoZWNrCisgICAgLy8gZGlzcGF0Y2gKKyAgICBbXShHU291cmNlKiBzb3VyY2UsIEdTb3VyY2VG
dW5jIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICBh
dXRvKiB3bExvb3BTb3VyY2UgPSByZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291cmNlKj4o
c291cmNlKTsKKyAgICAgICAgdW5zaWduZWQgZXZlbnRzID0gZ19zb3VyY2VfcXVlcnlfdW5peF9m
ZChzb3VyY2UsIHdsTG9vcFNvdXJjZS0+ZmRUYWcpICYgd2F5bGFuZExvb3BTb3VyY2VDb25kaXRp
b247CisgICAgICAgIGlmIChldmVudHMgJiBHX0lPX0hVUCB8fCBldmVudHMgJiBHX0lPX0VSUikg
eworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXlsYW5kIERpc3BsYXkgRXZlbnQgU291cmNl
OiBsb3N0IGNvbm5lY3Rpb24gdG8gbmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciIpOworICAgICAg
ICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChl
dmVudHMgJiBHX0lPX0lOKQorICAgICAgICAgICAgd2xfZXZlbnRfbG9vcF9kaXNwYXRjaCh3bF9k
aXNwbGF5X2dldF9ldmVudF9sb29wKHdsTG9vcFNvdXJjZS0+ZGlzcGxheSksIDApOworICAgICAg
ICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CisgICAgfSwKKyAgICBudWxscHRyLCAvLyBmaW5h
bGl6ZQorICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfY2FsbGJhY2sKKyAgICBudWxscHRyLCAvLyBj
bG9zdXJlX21hcnNoYWxsCit9OworCitzdGF0aWMgR1JlZlB0cjxHU291cmNlPiBjcmVhdGVXYXls
YW5kTG9vcFNvdXJjZShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKK3sKKyAgICBHUmVmUHRy
PEdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJndheWxhbmRMb29wU291
cmNlRnVuY3Rpb25zLCBzaXplb2YoV2F5bGFuZExvb3BTb3VyY2UpKSk7CisgICAgZ19zb3VyY2Vf
c2V0X25hbWUoc291cmNlLmdldCgpLCAiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5
IGV2ZW50IHNvdXJjZSIpOworICAgIGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCks
IEdfUFJJT1JJVFlfREVGQVVMVCArIDEpOworCisgICAgYXV0byogd2xMb29wU291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxXYXlsYW5kTG9vcFNvdXJjZSo+KHNvdXJjZS5nZXQoKSk7CisgICAgd2xM
b29wU291cmNlLT5kaXNwbGF5ID0gZGlzcGxheTsKKyAgICB3bExvb3BTb3VyY2UtPmZkVGFnID0g
Z19zb3VyY2VfYWRkX3VuaXhfZmQoc291cmNlLmdldCgpLCB3bF9ldmVudF9sb29wX2dldF9mZCh3
bF9kaXNwbGF5X2dldF9ldmVudF9sb29wKGRpc3BsYXkpKSwgc3RhdGljX2Nhc3Q8R0lPQ29uZGl0
aW9uPih3YXlsYW5kTG9vcFNvdXJjZUNvbmRpdGlvbikpOworICAgIGdfc291cmNlX2F0dGFjaChz
b3VyY2UuZ2V0KCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworV2F5bGFu
ZENvbXBvc2l0b3I6OldheWxhbmRDb21wb3NpdG9yKCkKK3sKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1
Y3Qgd2xfZGlzcGxheT4gZGlzcGxheSh3bF9kaXNwbGF5X2NyZWF0ZSgpKTsKKyAgICBpZiAoIWRp
c3BsYXkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9y
IGNvdWxkIG5vdCBjcmVhdGUgZGlzcGxheSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9ICJ3ZWJraXRndGstd2F5bGFuZC1jb21wb3Np
dG9yLSIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgaWYgKHdsX2Rpc3BsYXlf
YWRkX3NvY2tldChkaXNwbGF5LmdldCgpLCBkaXNwbGF5TmFtZS51dGY4KCkuZGF0YSgpKSA9PSAt
MSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291
bGQgbm90IGNyZWF0ZSBkaXNwbGF5IHNvY2tldCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX2dsb2JhbD4gY29tcG9zaXRvckdsb2JhbCh3bF9n
bG9iYWxfY3JlYXRlKGRpc3BsYXkuZ2V0KCksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgd2xf
Y29tcG9zaXRvcl9pbnRlcmZhY2UudmVyc2lvbiwgdGhpcywKKyAgICAgICAgW10oc3RydWN0IHds
X2NsaWVudCogY2xpZW50LCB2b2lkKiBkYXRhLCB1aW50MzJfdCB2ZXJzaW9uLCB1aW50MzJfdCBp
ZCkgeworICAgICAgICAgICAgaWYgKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UgPSB3bF9y
ZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIHN0ZDo6bWlu
KHN0YXRpY19jYXN0PGludD4odmVyc2lvbiksIDMpLCBpZCkpCisgICAgICAgICAgICAgICAgd2xf
cmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHJlc291cmNlLCAmY29tcG9zaXRvckludGVyZmFj
ZSwgc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3IqPihkYXRhKSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNs
aWVudCk7CisgICAgICAgIH0pKTsKKyAgICBpZiAoIWNvbXBvc2l0b3JHbG9iYWwpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCByZWdp
c3RlciBjb21wb3NpdG9yIGdsb2JhbCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V2xVbmlxdWVQdHI8c3RydWN0IHdsX2dsb2JhbD4gd2Via2l0Z3RrR2xvYmFsKHdsX2dsb2JhbF9j
cmVhdGUoZGlzcGxheS5nZXQoKSwgJndsX3dlYmtpdGd0a19pbnRlcmZhY2UsIDEsIHRoaXMsCisg
ICAgICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgdm9pZCogZGF0YSwgdWludDMyX3Qg
dmVyc2lvbiwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqIHJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX3dlYmtpdGd0a19p
bnRlcmZhY2UsIDEsIGlkKSkKKyAgICAgICAgICAgICAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVt
ZW50YXRpb24ocmVzb3VyY2UsICZ3ZWJraXRndGtJbnRlcmZhY2UsIHN0YXRpY19jYXN0PFdheWxh
bmRDb21wb3NpdG9yKj4oZGF0YSksIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHdsX2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgICAgICB9KSk7
CisgICAgaWYgKCF3ZWJraXRndGtHbG9iYWwpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCByZWdpc3RlciB3ZWJraXRndGsgZ2xvYmFs
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWluaXRpYWxpemVFR0woKSkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQg
bm90IGluaXRpYWxpemUgRUdMIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IWVnbEJpbmRXYXlsYW5kRGlzcGxheShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5l
Z2xEaXNwbGF5KCksIGRpc3BsYXkuZ2V0KCkpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVz
dGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgYmluZCBuZXN0ZWQgZGlzcGxheSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9kaXNwbGF5TmFtZSA9IFdURk1vdmUoZGlz
cGxheU5hbWUpOworICAgIG1fZGlzcGxheSA9IFdURk1vdmUoZGlzcGxheSk7CisgICAgbV9jb21w
b3NpdG9yR2xvYmFsID0gV1RGTW92ZShjb21wb3NpdG9yR2xvYmFsKTsKKyAgICBtX3dlYmtpdGd0
a0dsb2JhbCA9IFdURk1vdmUod2Via2l0Z3RrR2xvYmFsKTsKKyAgICBtX2V2ZW50U291cmNlID0g
Y3JlYXRlV2F5bGFuZExvb3BTb3VyY2UobV9kaXNwbGF5LmdldCgpKTsKK30KKworYm9vbCBXYXls
YW5kQ29tcG9zaXRvcjo6Z2V0VGV4dHVyZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVuc2lnbmVk
JiB0ZXh0dXJlLCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSkKK3sKKyAgICBpZiAoYXV0byogc3VyZmFj
ZSA9IG1fcGFnZU1hcC5nZXQoJndlYlBhZ2UpKQorICAgICAgICByZXR1cm4gc3VyZmFjZS0+cHJl
cGFyZVRleHR1cmVGb3JQYWludGluZyh0ZXh0dXJlLCB0ZXh0dXJlU2l6ZSk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFn
ZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSogc3VyZmFjZSwgdWludDY0X3QgcGFnZUlEKQor
eworICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBw
YWdlIDogbV9wYWdlTWFwLmtleXMoKSkgeworICAgICAgICBpZiAocGFnZS0+cGFnZUlEKCkgPT0g
cGFnZUlEKSB7CisgICAgICAgICAgICB3ZWJQYWdlID0gcGFnZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3VyZmFjZS0+c2V0V2ViUGFnZSh3ZWJQYWdlKTsKKyAgICBtX3BhZ2VNYXAuc2V0KHdl
YlBhZ2UsIHN1cmZhY2UpOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpyZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIG1fcGFnZU1hcC5hZGQoJndlYlBh
Z2UsIG51bGxwdHIpOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjp1bnJlZ2lzdGVyV2Vi
UGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgaWYgKGF1dG8qIHN1cmZhY2UgPSBt
X3BhZ2VNYXAudGFrZSgmd2ViUGFnZSkpCisgICAgICAgIHN1cmZhY2UtPnNldFdlYlBhZ2UobnVs
bHB0cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0o
V0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBv
c2l0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjcxYzU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvci5oCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dsVW5pcXVlUHRyLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKwordHlwZWRlZiB2b2lkICpFR0xJbWFnZUtIUjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgR0xDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBXYXlsYW5kQ29tcG9zaXRvciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2F5bGFuZENvbXBvc2l0b3IpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRl
c3Ryb3llZDxXYXlsYW5kQ29tcG9zaXRvcj47CitwdWJsaWM6CisgICAgc3RhdGljIFdheWxhbmRD
b21wb3NpdG9yJiBzaW5nbGV0b24oKTsKKworICAgIGNsYXNzIEJ1ZmZlciB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ1ZmZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEJ1ZmZlciogZ2V0T3JDcmVhdGUoc3RydWN0IHdsX3Jl
c291cmNlKik7CisgICAgICAgIH5CdWZmZXIoKTsKKworICAgICAgICB2b2lkIHVzZSgpOworICAg
ICAgICB2b2lkIHVudXNlKCk7CisKKyAgICAgICAgRUdMSW1hZ2VLSFIgY3JlYXRlSW1hZ2UoKSBj
b25zdDsKKyAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CisKKyAgICAgICAg
V2Vha1B0cjxCdWZmZXI+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnVmZmVyKHN0cnVj
dCB3bF9yZXNvdXJjZSopOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95TGlzdGVuZXJDYWxs
YmFjayhzdHJ1Y3Qgd2xfbGlzdGVuZXIqLCB2b2lkKik7CisKKyAgICAgICAgc3RydWN0IHdsX3Jl
c291cmNlKiBtX3Jlc291cmNlIHsgbnVsbHB0ciB9OworICAgICAgICBzdHJ1Y3Qgd2xfbGlzdGVu
ZXIgbV9kZXN0cm95TGlzdGVuZXI7CisgICAgICAgIHVpbnQzMl90IG1fYnVzeUNvdW50IHsgMCB9
OworICAgICAgICBXZWFrUHRyRmFjdG9yeTxCdWZmZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CisgICAg
fTsKKworICAgIGNsYXNzIFN1cmZhY2UgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
dXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBT
dXJmYWNlKCk7CisgICAgICAgIH5TdXJmYWNlKCk7CisKKyAgICAgICAgdm9pZCBhdHRhY2hCdWZm
ZXIoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lKHN0cnVj
dCB3bF9yZXNvdXJjZSopOworICAgICAgICBib29sIGNvbW1pdCgpOworCisgICAgICAgIHZvaWQg
c2V0V2ViUGFnZShXZWJQYWdlUHJveHkqIHdlYlBhZ2UpIHsgbV93ZWJQYWdlID0gd2ViUGFnZTsg
fQorICAgICAgICBib29sIHByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQmLCBXZWJD
b3JlOjpJbnRTaXplJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIG1ha2VQZW5kaW5n
QnVmZmVyQ3VycmVudCgpOworCisgICAgICAgIFdlYWtQdHI8QnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICAgICAgV2Vha1B0cjxCdWZmZXI+IG1fcGVuZGluZ0J1ZmZlcjsKKyAgICAgICAgdW5zaWduZWQg
bV90ZXh0dXJlOworICAgICAgICBFR0xJbWFnZUtIUiBtX2ltYWdlOworICAgICAgICBWZWN0b3I8
d2xfcmVzb3VyY2UqPiBtX2ZyYW1lQ2FsbGJhY2tMaXN0OworICAgICAgICBXZWJQYWdlUHJveHkq
IG1fd2ViUGFnZSB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAgYm9vbCBpc1J1bm5pbmcoKSBj
b25zdCB7IHJldHVybiAhIW1fZGlzcGxheTsgfQorICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KKworICAgIHZvaWQgYmluZFN1cmZhY2VUb1dl
YlBhZ2UoU3VyZmFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZWdpc3RlcldlYlBh
Z2UoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlUHJv
eHkmKTsKKworICAgIGJvb2wgZ2V0VGV4dHVyZShXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCYsIFdl
YkNvcmU6OkludFNpemUmKTsKKworcHJpdmF0ZToKKyAgICBXYXlsYW5kQ29tcG9zaXRvcigpOwor
CisgICAgYm9vbCBpbml0aWFsaXplRUdMKCk7CisKKyAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsK
KyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZGlzcGxheT4gbV9kaXNwbGF5Owor
ICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IG1fY29tcG9zaXRvckds
b2JhbDsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiBtX3dlYmtp
dGd0a0dsb2JhbDsKKyAgICBHUmVmUHRyPEdTb3VyY2U+IG1fZXZlbnRTb3VyY2U7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9lZ2xDb250ZXh0OworICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5KiwgU3VyZmFjZSo+IG1fcGFnZU1hcDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKaW5kZXggYWUxNGU5
ZS4uM2YwNTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
cmVmZXJlbmNlc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
cmVmZXJlbmNlc0d0ay5jcHAKQEAgLTI3LDMxICsyNyw1MiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9z
aXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNlbmRp
ZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKCkKIHsKLSNpZiBQTEFU
Rk9STShXQVlMQU5EKQotICAgIGlmIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5k
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyB1bmRlciBXYXls
YW5kIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCi0gICAgICAgIHNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKGZhbHNlKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0j
ZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChmYWxzZSk7CiAjZWxzZQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJF
QURFRCkKKyAgICBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyNlbHNlCiAgICAgaWYg
KGdldGVudigiV0VCS0lUX0ZPUkNFX0NPTVBPU0lUSU5HX01PREUiKSkKICAgICAgICAgc2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0gICAgaWYgKGdldGVudigiV0VCS0lUX0RJU0FCTEVf
Q09NUE9TSVRJTkdfTU9ERSIpKQorI2VuZGlmCisKKyAgICBpZiAoZ2V0ZW52KCJXRUJLSVRfRElT
QUJMRV9DT01QT1NJVElOR19NT0RFIikpIHsKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgeworICAg
ICAgICBhdXRvJiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7CisgICAgICAgIE9wdGlvbmFsPGludD4gZGFtYWdl
QmFzZTsKKyAgICAgICAgaWYgKCFkaXNwbGF5LnN1cHBvcnRzWENvbXBvc2l0ZSgpIHx8ICFkaXNw
bGF5LnN1cHBvcnRzWERhbWFnZShkYW1hZ2VCYXNlKSkKKyAgICAgICAgICAgIHNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICB9CiAjZW5kaWYKKworI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5
cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAgaWYgKCFX
YXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgICAgICAgICBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgfQorI2VuZGlmCisK
KyNlbmRpZiAvLyBFTkFCTEUoT1BFTkdMKQogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0
Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMzNmY2MuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMu
TC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlhEYW1hZ2VOb3RpZmllci5oIgotCi0jaWYgUExBVEZPUk0o
WDExKQotCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KLSNpbmNsdWRl
IDxYMTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KLSNpbmNs
dWRlIDxnZGsvZ2RreC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXN0YXRpYyBPcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOwotCi1Y
RGFtYWdlTm90aWZpZXImIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVyPiBub3RpZmllcjsKLSAgICByZXR1cm4g
bm90aWZpZXI7Ci19Ci0KLVhEYW1hZ2VOb3RpZmllcjo6WERhbWFnZU5vdGlmaWVyKCkKLXsKLSAg
ICBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpKS5zdXBwb3J0c1hEYW1hZ2Uoc19kYW1hZ2VFdmVudEJhc2UpOwotfQotCi12b2lkIFhE
YW1hZ2VOb3RpZmllcjo6YWRkKERhbWFnZSBkYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYm
IG5vdGlmeUZ1bmN0aW9uKQotewotICAgIGlmICghc19kYW1hZ2VFdmVudEJhc2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IGdka193aW5kb3dfYWRkX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9jYXN0PEdka0ZpbHRl
ckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLSAgICBtX25vdGlmeUZ1bmN0aW9u
cy5hZGQoZGFtYWdlLCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7Ci19Ci0KLXZvaWQgWERhbWFn
ZU5vdGlmaWVyOjpyZW1vdmUoRGFtYWdlIGRhbWFnZSkKLXsKLSAgICBpZiAoIXNfZGFtYWdlRXZl
bnRCYXNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX25vdGlmeUZ1bmN0aW9ucy5yZW1vdmUo
ZGFtYWdlKTsKLSAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICBn
ZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0
ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Ci19Ci0KLUdka0ZpbHRlclJldHVy
biBYRGFtYWdlTm90aWZpZXI6OmZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZlbnQqIGV2ZW50LCBH
ZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciogbm90aWZpZXIpCi17Ci0gICAgQVNTRVJUKHNfZGFt
YWdlRXZlbnRCYXNlKTsKLSAgICBhdXRvKiB4RXZlbnQgPSBzdGF0aWNfY2FzdDxYRXZlbnQqPihl
dmVudCk7Ci0gICAgaWYgKHhFdmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52YWx1ZSgp
ICsgWERhbWFnZU5vdGlmeSkKLSAgICAgICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElOVUU7Ci0K
LSAgICBhdXRvKiBkYW1hZ2VFdmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8WERhbWFnZU5vdGlmeUV2
ZW50Kj4oeEV2ZW50KTsKLSAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVudC0+ZGFt
YWdlKSkgewotICAgICAgICBYRGFtYWdlU3VidHJhY3QoeEV2ZW50LT54YW55LmRpc3BsYXksIGRh
bWFnZUV2ZW50LT5kYW1hZ2UsIE5vbmUsIE5vbmUpOwotICAgICAgICByZXR1cm4gR0RLX0ZJTFRF
Ul9SRU1PVkU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElOVUU7Ci19Ci0K
LWJvb2wgWERhbWFnZU5vdGlmaWVyOjpub3RpZnkoRGFtYWdlIGRhbWFnZSkgY29uc3QKLXsKLSAg
ICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9ucy5nZXQo
ZGFtYWdlKSkgewotICAgICAgICBub3RpZnlGdW5jdGlvbigpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9YRGFtYWdlTm90aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMz
NGNjMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VO
b3RpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFBMQVRGT1JNKFgxMSkKLQotI2luY2x1ZGUg
PGdkay9nZGt4Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgRGFtYWdlOwotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgWERhbWFnZU5vdGlmaWVyIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShYRGFtYWdlTm90aWZpZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVyPjsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgWERhbWFnZU5vdGlmaWVyJiBzaW5nbGV0b24oKTsKLQotICAgIHZvaWQgYWRk
KERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVtb3ZlKERhbWFn
ZSk7Ci0KLXByaXZhdGU6Ci0gICAgWERhbWFnZU5vdGlmaWVyKCk7Ci0KLSAgICBzdGF0aWMgR2Rr
RmlsdGVyUmV0dXJuIGZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZlbnQqLCBHZGtFdmVudCosIFhE
YW1hZ2VOb3RpZmllciopOwotICAgIGJvb2wgbm90aWZ5KERhbWFnZSkgY29uc3Q7Ci0KLSAgICBI
YXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX25vdGlmeUZ1bmN0aW9uczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUExBVEZPUk0oWDExKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IGRiZDAyODAuLjM3MzVhMzYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zMCwxNCArMzAsMTIgQEAKICNpbmNsdWRlICJUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQotI2luY2x1ZGUgIlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCi0jZW5kaWYK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQs
MjYgKzUyLDE4IEBAIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+VGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QoKQogVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAg
ICAgOiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Qod2ViUGFnZSkKICAgICAsIG1fY29tcG9zaXRv
ckNsaWVudCgqdGhpcykKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAg
ICAsIG1fcmVkaXJlY3RlZFdpbmRvdyhSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRl
KHdlYlBhZ2UpKQotICAgICwgbV9jb21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRl
KCZtX2NvbXBvc2l0b3JDbGllbnQsIG1fcmVkaXJlY3RlZFdpbmRvdyA/IG1fcmVkaXJlY3RlZFdp
bmRvdy0+d2luZG93KCkgOiAwKSkKLSNlbHNlCi0gICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRD
b21wb3NpdG9yOjpjcmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCkpCi0jZW5kaWYKKyAgICAsIG1f
c3VyZmFjZShBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZSh3ZWJQYWdlKSkKKyAgICAsIG1fY29t
cG9zaXRvcihUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50LCBt
X3N1cmZhY2UgPyBtX3N1cmZhY2UtPndpbmRvdygpIDogMCkpCiB7Ci0jaWYgVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykKLSAgICAg
ICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4
bWFwKCk7Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlKQorICAgICAgICBtX2xheWVyVHJlZUNv
bnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKIH0KIAogdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9jb21w
b3NpdG9yLT5pbnZhbGlkYXRlKCk7CiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZh
bGlkYXRlKCk7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgbV9y
ZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKLSNlbmRpZgorICAgIG1fc3VyZmFjZSA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVw
YWludCgpCkBAIC05NSwxMiArODUsOCBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Ojpjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpegogCiB2b2lk
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAg
IGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5y
ZXNpemUobV93ZWJQYWdlLnNpemUoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250
ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAg
IGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSkpCisg
ICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJ
RCgpOwogCiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKICAgICBtX2NvbXBvc2l0b3ItPnNldERldmljZVNjYWxlRmFjdG9yKG1f
d2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKQEAgLTExNCwxMiArMTAwLDkgQEAgdm9pZCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVu
Y3lDaGFuZ2VkKCkKIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6
ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAg
bV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoc2l6ZSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29u
dGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNl
bmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNpemUoc2l6ZSkpCisgICAg
ICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgp
OworCiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKHNpemUpOwog
ICAgIG1fY29tcG9zaXRvci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNpemUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKaW5kZXggYTQxYTExNi4uODkwZTdiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IGZpbmFsIDogcHVibGljIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdCB7CkBAIC0xMDUsOSArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJikg
b3ZlcnJpZGU7CiAKICAgICBDb21wb3NpdG9yQ2xpZW50IG1fY29tcG9zaXRvckNsaWVudDsKLSNp
ZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IG1fcmVkaXJlY3RlZFdpbmRvdzsKLSNlbmRpZgor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKICAgICBS
ZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CiAgICAgZmxvYXQgbV9sYXN0
U2NhbGVGYWN0b3IgeyAxIH07CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9wcmV2U2Nyb2xsUG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzFmZDc0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5Lmg+CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3Vy
ZmFjZVdheWxhbmQuaCIKKyNlbmRpZgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgiCisjZW5kaWYKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1
ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQ
YWdlJiB3ZWJQYWdlKQoreworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OldheWxhbmQpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpjcmVh
dGUod2ViUGFnZSk7CisjZW5kaWYKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJm
YWNlWDExOjpjcmVhdGUod2ViUGFnZSk7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworQWNjZWxlcmF0ZWRTdXJmYWNlOjpBY2NlbGVyYXRlZFN1cmZhY2UoV2ViUGFnZSYgd2ViUGFn
ZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9zaXplKHdlYlBhZ2Uuc2l6ZSgp
KQoreworICAgIG1fc2l6ZS5zY2FsZShtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Cit9
CisKK0FjY2VsZXJhdGVkU3VyZmFjZTo6fkFjY2VsZXJhdGVkU3VyZmFjZSgpCit7Cit9CisKK2Jv
b2wgQWNjZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBJbnRTaXplIHNjYWxlZFNpemUoc2l6ZSk7CisgICAgc2NhbGVkU2l6ZS5zY2FsZShtX3dlYlBh
Z2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgaWYgKHNjYWxlZFNpemUgPT0gbV9zaXplKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NpemUgPSBzY2FsZWRTaXplOworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiODJjMjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVk
U3VyZmFjZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisK
K2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNj
ZWxlcmF0ZWRTdXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IGNyZWF0ZShXZWJQYWdl
Jik7CisgICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRTdXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIHVp
bnQ2NF90IHdpbmRvdygpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gMDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKKworcHJvdGVjdGVkOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZShXZWJQ
YWdlJik7CisKKyAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NpemU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZVdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZjBi
ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
bGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5j
bHVkZSAiV2ViS2l0MldheWxhbmRDbGllbnRQcm90b2NvbC5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaD4KKyNpbmNs
dWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5IGZpbmFsIDogcHVibGlj
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdheWxh
bmRDb21wb3NpdG9yRGlzcGxheSk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBzdHJ1
Y3Qgd2xfZGlzcGxheSogZGlzcGxheSA9IHdsX2Rpc3BsYXlfY29ubmVjdChXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGlmICghZGlzcGxheSkgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gY29ubmVjdCB0byB0
aGUgV2F5bGFuZCBkaXNwbGF5OiAlcyIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndheWxhbmRD
b21wb3NpdG9yRGlzcGxheU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+KG5ldyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoZGlz
cGxheSkpOworICAgIH0KKworICAgIHZvaWQgYmluZFN1cmZhY2VUb1BhZ2Uoc3RydWN0IHdsX3N1
cmZhY2UqIHN1cmZhY2UsIFdlYlBhZ2UmIHBhZ2UpCisgICAgeworICAgICAgICBpZiAoIW1fd2Vi
a2l0Z3RrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHdsX3dlYmtpdGd0a19iaW5k
X3N1cmZhY2VfdG9fcGFnZShyZWludGVycHJldF9jYXN0PHN0cnVjdCB3bF93ZWJraXRndGsqPiht
X3dlYmtpdGd0ay5nZXQoKSksIHN1cmZhY2UsIHBhZ2UucGFnZUlEKCkpOworICAgICAgICB3bF9k
aXNwbGF5X3JvdW5kdHJpcChtX2Rpc3BsYXkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXkoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCisgICAgewor
ICAgICAgICBpbml0aWFsaXplKGRpc3BsYXkpOworICAgICAgICBQbGF0Zm9ybURpc3BsYXk6OnNl
dFNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygqdGhpcyk7CisgICAgfQorCisgICAgdm9pZCBy
ZWdpc3RyeUdsb2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IG5hbWUpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpyZWdpc3RyeUdsb2Jh
bChpbnRlcmZhY2UsIG5hbWUpOworICAgICAgICBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwg
IndsX3dlYmtpdGd0ayIpKQorICAgICAgICAgICAgbV93ZWJraXRndGsucmVzZXQoc3RhdGljX2Nh
c3Q8c3RydWN0IHdsX3Byb3h5Kj4od2xfcmVnaXN0cnlfYmluZChtX3JlZ2lzdHJ5LmdldCgpLCBu
YW1lLCAmd2xfd2Via2l0Z3RrX2ludGVyZmFjZSwgMSkpKTsKKyAgICB9CisKKyAgICBXbFVuaXF1
ZVB0cjxzdHJ1Y3Qgd2xfcHJveHk+IG1fd2Via2l0Z3RrOworfTsKKworc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+JiB3YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5Pj4gd2F5bGFuZERpc3BsYXkoV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5OjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIHdheWxhbmREaXNwbGF5OworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZD4gQWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZDo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCit7CisgICAgcmV0dXJuIHdheWxhbmRDb21w
b3NpdG9yRGlzcGxheSgpID8gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdheWxh
bmQ+KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKHdlYlBhZ2UpKSA6IG51bGxwdHI7Cit9
CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQo
V2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQYWdlKQorICAg
ICwgbV9zdXJmYWNlKHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpLT5jcmVhdGVTdXJmYWNlKCkp
CisgICAgLCBtX3dpbmRvdyh3bF9lZ2xfd2luZG93X2NyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIHN0
ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSkp
Cit7CisgICAgd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCktPmJpbmRTdXJmYWNlVG9QYWdlKG1f
c3VyZmFjZS5nZXQoKSwgbV93ZWJQYWdlKTsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFu
ZDo6fkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoKQoreworICAgIHdsX2VnbF93aW5kb3dfZGVz
dHJveShtX3dpbmRvdyk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6cmVz
aXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKCFBY2NlbGVyYXRlZFN1cmZhY2U6
OnJlc2l6ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgd2xfZWdsX3dpbmRv
d19yZXNpemUobV93aW5kb3csIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIDAp
OworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlYzU4MWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZVdheWxhbmQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIkFjY2Vs
ZXJhdGVkU3VyZmFjZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1dsVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wtY29yZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCBmaW5hbCA6IHB1
YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ+IGNy
ZWF0ZShXZWJQYWdlJik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoKTsKKworICAg
IHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDY0X3Q+KG1fd2luZG93KTsgfQorICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsgfQorICAgIGJvb2wgcmVzaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2Nl
bGVyYXRlZFN1cmZhY2VXYXlsYW5kKFdlYlBhZ2UmKTsKKworICAgIFdlYkNvcmU6OldsVW5pcXVl
UHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgc3RydWN0IHdsX2VnbF93aW5k
b3cqIG1fd2luZG93IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1NTU3ZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVk
U3VyZmFjZVgxMS5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNl
WDExLmgiCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKworI2luY2x1
ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgor
I2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0
ZS5oPgorI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVu
aXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlWDExPiBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNy
ZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQoreworICAgIGlmICghZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkuc3VwcG9ydHNYQ29tcG9z
aXRlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZWxlcmF0ZWRTdXJmYWNlWDExPihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlWDExKHdlYlBh
Z2UpKTsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpBY2NlbGVyYXRlZFN1cmZhY2VYMTEo
V2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQYWdlKQorICAg
ICwgbV9kaXNwbGF5KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpKQoreworICAgIFNjcmVlbiogc2NyZWVuID0gRGVm
YXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOworCisgICAgQVNTRVJUKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpID09IG1fZGlzcGxheSk7CisgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dl
dF9yZ2JhX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworICAgIGlmICghdmlzdWFs
KQorICAgICAgICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3Jl
ZW5fZ2V0X2RlZmF1bHQoKSk7CisKKyAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0
ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNV
QUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpKTsKKworICAgIFhTZXRXaW5kb3dBdHRyaWJ1
dGVzIHdpbmRvd0F0dHJpYnV0ZXM7CisgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRp
cmVjdCA9IFRydWU7CisgICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwLmdl
dCgpOworCisgICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVw
dGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgorICAgIC8vIFNlZSBodHRwOi8vY2dp
dC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmct
c2VydmVyLTEuMTYuMCNuNzAzLgorICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0g
MDsKKworICAgIG1fcGFyZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCisgICAg
ICAgIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLAorICAgICAgICAtMSwgLTEsIDEsIDEsCisg
ICAgICAgIDAsCisgICAgICAgIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksCisgICAgICAg
IElucHV0T3V0cHV0LAorICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKKyAgICAg
ICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCisgICAg
ICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKKyAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9wYXJl
bnRXaW5kb3cuZ2V0KCkpOworCisgICAgd2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0gU3Ry
dWN0dXJlTm90aWZ5TWFzazsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0
ID0gRmFsc2U7CisKKyAgICAvLyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5j
ZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCisgICAgbV93aW5kb3cg
PSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwKKyAgICAgICAgbV9wYXJlbnRXaW5kb3cuZ2V0KCks
CisgICAgICAgIDAsIDAsCisgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwKKyAg
ICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKKyAgICAgICAgMCwKKyAgICAgICAg
Q29weUZyb21QYXJlbnQsCisgICAgICAgIElucHV0T3V0cHV0LAorICAgICAgICBDb3B5RnJvbVBh
cmVudCwKKyAgICAgICAgQ1dFdmVudE1hc2ssCisgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsK
KyAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOworCisgICAgd2hpbGUg
KDEpIHsKKyAgICAgICAgWEV2ZW50IGV2ZW50OworICAgICAgICBYV2luZG93RXZlbnQobV9kaXNw
bGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKKyAgICAg
ICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1f
d2luZG93LmdldCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFhTZWxlY3RJbnB1
dChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBOb0V2ZW50TWFzayk7CisgICAgWENvbXBvc2l0
ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIENvbXBvc2l0ZVJlZGly
ZWN0TWFudWFsKTsKKyAgICBtX3BpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1f
ZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VYMTE6On5B
Y2NlbGVyYXRlZFN1cmZhY2VYMTEoKQoreworICAgIEFTU0VSVChtX2Rpc3BsYXkpOworICAgIEFT
U0VSVChtX3dpbmRvdyk7CisgICAgQVNTRVJUKG1fcGFyZW50V2luZG93KTsKKworICAgIC8vIEV4
cGxpY2l0bHkgcmVzZXQgdGhlc2UgYmVjYXVzZSB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBoYXBwZW5z
IGluIHRoaXMgb3JkZXIuCisgICAgbV93aW5kb3cucmVzZXQoKTsKKyAgICBtX3BhcmVudFdpbmRv
dy5yZXNldCgpOworfQorCitib29sIEFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6cmVzaXplKGNvbnN0
IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKCFBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShz
aXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cg
dG8gYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5k
b3dzLgorICAgIFhSZXNpemVXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjpt
YXgoMSwgbV9zaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAg
ICBYRmx1c2gobV9kaXNwbGF5KTsKKworICAgIC8vIFJlbGVhc2UgdGhlIHByZXZpb3VzIHBpeG1h
cCBsYXRlciB0byBnaXZlIHNvbWUgdGltZSB0byB0aGUgVUkgcHJvY2VzcyB0byB1cGRhdGUuCisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86OnNlY29uZHMoNSks
IFtwaXhtYXAgPSBXVEZNb3ZlKG1fcGl4bWFwKV0geyB9KTsKKyAgICBtX3BpeG1hcCA9IFhDb21w
b3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNzJkNTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZVgxMS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAx
NiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQor
CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9YVW5p
cXVlUmVzb3VyY2UuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7Cit0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgUGl4bWFwOwordHlwZWRlZiB1bnNpZ25lZCBsb25nIFdpbmRvdzsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEFjY2VsZXJh
dGVkU3VyZmFjZVgxMSBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVgxMSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0
ZWRTdXJmYWNlWDExPiBjcmVhdGUoV2ViUGFnZSYpOworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VY
MTEoKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
d2luZG93LmdldCgpOyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9waXhtYXAuZ2V0KCk7IH0KKyAgICBib29sIHJlc2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNl
WDExKFdlYlBhZ2UmKTsKKworICAgIERpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKKyAg
ICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1fd2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVX
aW5kb3cgbV9wYXJlbnRXaW5kb3c7CisgICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX3BpeG1h
cDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCA5YTA5MmVkLi4y
ZmNlY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKIAorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgog
I2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAgLTQ2LDIwICs0Nyw4IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KICNpbmNs
dWRlIDxnZGsvZ2RrLmg+Ci0jaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKLSNkZWZpbmUg
UmVnaW9uIFhSZWdpb24KLSNkZWZpbmUgRm9udCBYRm9udAotI2RlZmluZSBDdXJzb3IgWEN1cnNv
cgotI2RlZmluZSBTY3JlZW4gWFNjcmVlbgotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYK
LQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotI2luY2x1ZGUgIlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCi0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEzNyw5ICsxMjYsNyBAQCBS
ZWY8TGF5ZXJUcmVlSG9zdEd0az4gTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRlKFdlYlBhZ2UmIHdl
YlBhZ2UpCiAKIExheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYgd2Vi
UGFnZSkKICAgICA6IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSAgICAsIG1fcmVkaXJlY3RlZFdpbmRvdyhSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHdlYlBhZ2UpKQotI2VuZGlmCisgICAgLCBtX3N1cmZhY2Uo
QWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUod2ViUGFnZSkpCiAgICAgLCBtX3JlbmRlckZyYW1l
U2NoZWR1bGVyKHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6cmVuZGVyRnJhbWUsIHRoaXMp
KQogewogICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCksICp0aGlzKTsKQEAgLTE2NywyOSArMTU0LDIyIEBAIExheWVyVHJlZUhvc3RH
dGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYgd2ViUGFnZSkKICAgICBtX3Jvb3RMYXllci0+
YWRkQ2hpbGQobV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLmdldCgpKTsKICAgICBtX25vbkNv
bXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogCi0jaWYgVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewor
ICAgIGlmIChtX3N1cmZhY2UpIHsKICAgICAgICAgY3JlYXRlVGV4dHVyZU1hcHBlcigpOwotICAg
ICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5w
aXhtYXAoKTsKKyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFj
ZS0+c3VyZmFjZUlEKCk7CiAgICAgfQotI2VuZGlmCiB9CiAKIGJvb2wgTGF5ZXJUcmVlSG9zdEd0
azo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRF
X1dJTkRPVykKLSAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBtX3JlZGlyZWN0ZWRXaW5kb3cg
PyBtX3JlZGlyZWN0ZWRXaW5kb3ctPndpbmRvdygpIDogbV9sYXllclRyZWVDb250ZXh0LmNvbnRl
eHRJRDsKLSNlbHNlCi0gICAgdWludDY0X3QgbmF0aXZlSGFuZGxlID0gbV9sYXllclRyZWVDb250
ZXh0LmNvbnRleHRJRDsKLSNlbmRpZgotCisgICAgdWludDY0X3QgbmF0aXZlSGFuZGxlID0gbV9z
dXJmYWNlID8gbV9zdXJmYWNlLT53aW5kb3coKSA6IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0
SUQ7CiAgICAgaWYgKCFuYXRpdmVIYW5kbGUpIHsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghbV9jb250ZXh0KSB7
Ci0gICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhy
ZWludGVycHJldF9jYXN0PEdMTmF0aXZlV2luZG93VHlwZT4obmF0aXZlSGFuZGxlKSwgR0xDb250
ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICAgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0Ojpj
cmVhdGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5kb3dUeXBl
PihuYXRpdmVIYW5kbGUpLCAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9z
aXRpbmcoKSk7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTIyOSw5ICsyMDksNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6Omlu
dmFsaWRhdGUoKQogICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgTGF5ZXJUcmVlSG9zdDo6
aW52YWxpZGF0ZSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0g
ICAgbV9yZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKLSNlbmRpZgorICAgIG1fc3VyZmFjZSA9
IG51bGxwdHI7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENv
bnRlbnRzTmVlZERpc3BsYXkoKQpAQCAtMjcxLDI0ICsyNDksMTYgQEAgdm9pZCBMYXllclRyZWVI
b3N0R3RrOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVj
dCgwLCBvbGRTaXplLmhlaWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkg
LSBvbGRTaXplLmhlaWdodCgpKSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2lu
ZG93LT5yZXNpemUobmV3U2l6ZSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0
SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlm
IChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNpemUobmV3U2l6ZSkpCisgICAgICAgIG1fbGF5
ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAg
Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KEZvclJlc2l6ZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVl
SG9zdEd0azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKLSNpZiBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7
Ci0gICAgICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOwot
ICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93
LT5waXhtYXAoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFj
ZS0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQu
Y29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKIAogICAgIC8vIE90aGVyIGxheWVy
cyBsZWFybiBvZiB0aGUgc2NhbGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNl
U2NhbGVGYWN0b3IuCiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggZDY5ZGU5Ny4uNDQ3
NDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OworY2xhc3MgQWNjZWxl
cmF0ZWRTdXJmYWNlOwogCiBjbGFzcyBMYXllclRyZWVIb3N0R3RrIGZpbmFsIDogcHVibGljIExh
eWVyVHJlZUhvc3QsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAt
MTA5LDkgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6R0xDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXggbV9zY2FsZU1hdHJpeDsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IG1fcmVkaXJl
Y3RlZFdpbmRvdzsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZh
Y2U+IG1fc3VyZmFjZTsKICAgICBSZW5kZXJGcmFtZVNjaGVkdWxlciBtX3JlbmRlckZyYW1lU2No
ZWR1bGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIzMmFlMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTYgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmgiCi0KLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
LQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eVgxMS5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMv
WGNvbXBvc2l0ZS5oPgotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKLXsKLSAgICBpZiAoIWRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLnN1cHBvcnRzWENvbXBvc2l0ZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PihuZXcgUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cod2ViUGFnZSkpOwotfQotCi1SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coV2ViUGFnZSYgd2ViUGFnZSkK
LSAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQotICAgICwgbV9kaXNwbGF5KGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
KQotICAgICwgbV9zaXplKHdlYlBhZ2Uuc2l6ZSgpKQotewotICAgIG1fc2l6ZS5zY2FsZShtX3dl
YlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0KLSAgICBTY3JlZW4qIHNjcmVlbiA9IERlZmF1
bHRTY3JlZW5PZkRpc3BsYXkobV9kaXNwbGF5KTsKLQotICAgIEFTU0VSVChkb3duY2FzdDxQbGF0
Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUo
KSA9PSBtX2Rpc3BsYXkpOwotICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRf
cmdiYV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAgICBpZiAoIXZpc3VhbCkK
LSAgICAgICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVu
X2dldF9kZWZhdWx0KCkpOwotCi0gICAgWFVuaXF1ZUNvbG9ybWFwIGNvbG9ybWFwKFhDcmVhdGVD
b2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLCBHREtfVklTVUFM
X1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKSk7Ci0KLSAgICBYU2V0V2luZG93QXR0cmlidXRl
cyB3aW5kb3dBdHRyaWJ1dGVzOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJl
Y3QgPSBUcnVlOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMuY29sb3JtYXAgPSBjb2xvcm1hcC5nZXQo
KTsKLQotICAgIC8vIENXQm9yZGVyUGl4ZWwgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIGRlcHRo
IGRvZXNuJ3QgbWF0Y2ggdGhlIHBhcmVudCdzIG9uZS4KLSAgICAvLyBTZWUgaHR0cDovL2NnaXQu
ZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci90cmVlL2RpeC93aW5kb3cuYz9pZD14b3JnLXNl
cnZlci0xLjE2LjAjbjcwMy4KLSAgICB3aW5kb3dBdHRyaWJ1dGVzLmJvcmRlcl9waXhlbCA9IDA7
Ci0KLSAgICBtX3BhcmVudFdpbmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LAotICAgICAg
ICBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwKLSAgICAgICAgLTEsIC0xLCAxLCAxLAotICAg
ICAgICAwLAotICAgICAgICBnZGtfdmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLAotICAgICAgICBJ
bnB1dE91dHB1dCwKLSAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksCi0gICAgICAg
IENXT3ZlcnJpZGVSZWRpcmVjdCB8IENXQ29sb3JtYXAgfCBDV0JvcmRlclBpeGVsLAotICAgICAg
ICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50
V2luZG93LmdldCgpKTsKLQotICAgIHdpbmRvd0F0dHJpYnV0ZXMuZXZlbnRfbWFzayA9IFN0cnVj
dHVyZU5vdGlmeU1hc2s7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9
IEZhbHNlOwotCi0gICAgLy8gQ3JlYXRlIHRoZSB3aW5kb3cgb2YgYXQgbGFzdCAxeDEgc2luY2Ug
WCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5kb3dzLgotICAgIG1fd2luZG93ID0g
WENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0gICAgICAgIG1fcGFyZW50V2luZG93LmdldCgpLAot
ICAgICAgICAwLCAwLAotICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgoKSksCi0gICAg
ICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSksCi0gICAgICAgIDAsCi0gICAgICAgIENv
cHlGcm9tUGFyZW50LAotICAgICAgICBJbnB1dE91dHB1dCwKLSAgICAgICAgQ29weUZyb21QYXJl
bnQsCi0gICAgICAgIENXRXZlbnRNYXNrLAotICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0g
ICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKLQotICAgIHdoaWxlICgx
KSB7Ci0gICAgICAgIFhFdmVudCBldmVudDsKLSAgICAgICAgWFdpbmRvd0V2ZW50KG1fZGlzcGxh
eSwgbV93aW5kb3cuZ2V0KCksIFN0cnVjdHVyZU5vdGlmeU1hc2ssICZldmVudCk7Ci0gICAgICAg
IGlmIChldmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVudC54bWFwLndpbmRvdyA9PSBtX3dp
bmRvdy5nZXQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBYU2VsZWN0SW5wdXQo
bV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgTm9FdmVudE1hc2spOwotICAgIFhDb21wb3NpdGVS
ZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBDb21wb3NpdGVSZWRpcmVj
dE1hbnVhbCk7Ci0gICAgbV9waXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rp
c3BsYXksIG1fd2luZG93LmdldCgpKTsKLX0KLQotUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCi17Ci0gICAgQVNTRVJUKG1fZGlzcGxheSk7
Ci0gICAgQVNTRVJUKG1fd2luZG93KTsKLSAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOwotCi0g
ICAgLy8gRXhwbGljaXRseSByZXNldCB0aGVzZSBiZWNhdXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0
IGhhcHBlbnMgaW4gdGhpcyBvcmRlci4KLSAgICBtX3dpbmRvdy5yZXNldCgpOwotICAgIG1fcGFy
ZW50V2luZG93LnJlc2V0KCk7Ci19Ci0KLXZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEludFNpemUgc2NhbGVkU2l6ZShz
aXplKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKLSAgICBpZiAoc2NhbGVkU2l6ZSA9PSBtX3NpemUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc2l6ZSA9IHNjYWxlZFNpemU7Ci0KLSAgICAvLyBSZXNpemUgdGhlIHdpbmRvdyB0byBhdCBs
YXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0g
ICAgWFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBzdGQ6Om1heCgxLCBt
X3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSkpOwotICAgIFhGbHVz
aChtX2Rpc3BsYXkpOwotCi0gICAgLy8gUmVsZWFzZSB0aGUgcHJldmlvdXMgcGl4bWFwIGxhdGVy
IHRvIGdpdmUgc29tZSB0aW1lIHRvIHRoZSBVSSBwcm9jZXNzIHRvIHVwZGF0ZS4KLSAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6c2Vjb25kcyg1KSwgW3BpeG1h
cCA9IFdURk1vdmUobV9waXhtYXApXSB7IH0pOwotICAgIG1fcGl4bWFwID0gWENvbXBvc2l0ZU5h
bWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NGE1NGQ5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotCi0jaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3Vy
Y2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX1hE
aXNwbGF5IERpc3BsYXk7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgUGl4bWFwOwotdHlwZWRlZiB1
bnNpZ25lZCBsb25nIFdpbmRvdzsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBh
Z2U7Ci0KLWNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c+IGNyZWF0ZShXZWJQYWdlJik7Ci0gICAgflJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93KCk7Ci0KLSAgICBXaW5kb3cgd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5k
b3cuZ2V0KCk7IH0KLSAgICBQaXhtYXAgcGl4bWFwKCkgY29uc3QgeyByZXR1cm4gbV9waXhtYXAu
Z2V0KCk7IH0KLSAgICB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci0KLXBy
aXZhdGU6Ci0gICAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coV2ViUGFnZSYpOwotCi0gICAg
V2ViUGFnZSYgbV93ZWJQYWdlOwotICAgIERpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsK
LSAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93
IG1fd2luZG93OwotICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV9wYXJlbnRXaW5kb3c7Ci0g
ICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAyMDhiNmU2Li41MGJk
OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTMwMCw2
ICszMDAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLT5zZXREZWZhdWx0T3JpZ2luUXVvdGEoMjVVTEwgKiAxMDI0ICogMTAyNCk7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgbV93YXlsYW5kQ29tcG9zaXRvckRp
c3BsYXlOYW1lID0gcGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVE
aXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGJiODg3ODIuLmM3NzBkZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xOTcsNiArMTk3LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpOwog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIFN0cmluZyB3YXlsYW5kQ29tcG9z
aXRvckRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXlOYW1lOyB9CisjZW5kaWYKKwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyhBUEk6Ok9iamVjdCopOwogICAgIHN0YXRpYyBSZWZQdHI8QVBJOjpPYmpl
Y3Q+IHRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqKTsKIApAQCAtNDA0LDYg
KzQwOCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFu
ZGxlciB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlVzZXJHZXN0dXJlVG9rZW4g
KiwgdWludDY0X3Q+IG1fdXNlckdlc3R1cmVUb2tlbnM7CisKKyNpZiBQTEFURk9STShXQVlMQU5E
KQorICAgIFN0cmluZyBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286289</attachid>
            <date>2016-08-17 00:55:31 -0700</date>
            <delta_ts>2016-08-22 02:59:57 -0700</delta_ts>
            <desc>Try to fix builds</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>207411</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYWNkY2FmLi5kNDBlMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTE2ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBzaG91
bGQgcmV0cmlldmUgbGlmZWN5Y2xlIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCBmZWEyYzJjLi5jN2FkYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTQ0
LDYgKzE0NCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCiAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKQEAgLTM0OCwyNCArMzUwLDYgQEAgaWYg
KEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XQVlM
QU5EX1RBUkdFVCkKLSAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgotICAgIGFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICAgICBERVBFTkRTICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBzZXJ2ZXIt
aGVhZGVyIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L1dlYktpdEd0a1dheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCi0gICAgICAgIENPTU1BTkQgd2F5
bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLmgK
LSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnht
bCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50
UHJvdG9jb2wuYwotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3Bw
Ci0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNw
cAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAot
ICAgICkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwotICAgICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3Rv
Y29sLmMKLSAgICApCi0KICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgICAgICR7V0FZTEFORF9JTkNMVURFX0RJUlN9CiAgICAgKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggZGU2MTI0
OC4uZTZhODBjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcApAQCAtMTksMTAgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lm
IEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQotCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCi0K
LSNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lm
aWMuaD4KIAogI2lmIFVTRShFR0wpCkBAIC01NywxMiArNTQsNiBAQCBpbmxpbmUgVGhyZWFkR2xv
YmFsR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCgpCiAgICAgcmV0dXJuICpUaHJlYWRHbG9iYWxH
TENvbnRleHQ6OnN0YXRpY0dMQ29udGV4dDsKIH0KIAotR0xDb250ZXh0KiBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dD4sIHNoYXJpbmcsIChjcmVhdGVPZmZzY3JlZW5Db250ZXh0
KCkpKTsKLSAgICByZXR1cm4gc2hhcmluZy5nZXQoKTsKLX0KLQogI2lmIFBMQVRGT1JNKFgxMSkK
IC8vIEJlY2F1c2Ugb2YgZHJpdmVyIGJ1Z3MsIGV4aXRpbmcgdGhlIHByb2dyYW0gd2hlbiB0aGVy
ZSBhcmUgYWN0aXZlIHBidWZmZXJzCiAvLyBjYW4gY3Jhc2ggdGhlIFggc2VydmVyICh0aGlzIGhh
cyBiZWVuIG9ic2VydmVkIHdpdGggdGhlIG9mZmljaWFsIE52aWRpYSBkcml2ZXJzKS4KQEAgLTEx
MSwxMiArMTAyLDMwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4
aXQoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAorc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKQoreworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7Cisg
ICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyAgICAgICAgaW5pdGlh
bGl6ZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKKyNlbmRpZgorfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5k
b3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29u
dGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBQbGF0Zm9ybURpc3Bs
YXkqIHBsYXRmb3JtRGlzcGxheSkKIHsKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xTaGltc0lm
TmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUGxhdGZvcm1EaXNwbGF5
JiBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5ID8gKnBsYXRmb3JtRGlzcGxheSA6IFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOwogI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShF
R0wpCi0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgaWYgKGF1dG8gZWdsQ29u
dGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdD
b250ZXh0KSkKKyAgICBpZiAoZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBl
OjpXYXlsYW5kKSB7CisgICAgICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBkaXNwbGF5KSkKICAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGVnbENvbnRleHQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xMjgsMzQgKzEzNyw2MyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6
OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiAjZWxzZQogICAgIFhJ
RCBHTFhXaW5kb3dIYW5kbGUgPSBzdGF0aWNfY2FzdDxYSUQ+KHdpbmRvd0hhbmRsZSk7CiAjZW5k
aWYKLSAgICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0
KEdMWFdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgIGlmIChhdXRvIGdseENvbnRl
eHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoR0xYV2luZG93SGFuZGxlLCBkaXNwbGF5
KSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CiAjZW5kaWYKICNpZiBVU0Uo
RUdMKQotICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRl
eHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgaWYgKGF1dG8gZWdsQ29udGV4
dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIGRpc3BsYXkpKQog
ICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKICNlbmRpZgogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1HTENvbnRleHQ6OkdMQ29udGV4dCgpCitzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoUGxhdGZvcm1EaXNwbGF5
KiBwbGF0Zm9ybURpc3BsYXkpCiB7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIGFkZEFjdGl2ZUNv
bnRleHQodGhpcyk7CisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXNJZk5lZWRlZCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KDAsIHBsYXRmb3JtRGlzcGxheSA/IHBsYXRmb3JtRGlzcGxheSA6ICZQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdM
Q29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5KQor
eworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChkaXNwbGF5LnR5
cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAgaWYgKGF1
dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlzcGxh
eSkpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisjaWYgVVNFKEdMWCkKKyAgICBpZiAoYXV0byBn
bHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVTaGFyaW5nQ29udGV4dChkaXNwbGF5KSkK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CisjZW5kaWYKKyNpZiBVU0UoRUdM
KQorICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdD
b250ZXh0KGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKICNl
bmRpZgorICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
PiBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nQ29u
dGV4dCkKK0dMQ29udGV4dDo6R0xDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSkKKyAg
ICA6IG1fZGlzcGxheShkaXNwbGF5KQogewotICAgIHJldHVybiBjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KDAsIHNoYXJpbmdDb250ZXh0KTsKKyNpZiBQTEFURk9STShYMTEpCisgICAgaWYgKGRpc3Bs
YXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICBhZGRBY3Rp
dmVDb250ZXh0KHRoaXMpOworI2VuZGlmCiB9CiAKIEdMQ29udGV4dDo6fkdMQ29udGV4dCgpCiB7
CiAgICAgaWYgKHRoaXMgPT0gY3VycmVudENvbnRleHQoKS0+Y29udGV4dCgpKQotICAgICAgICBj
dXJyZW50Q29udGV4dCgpLT5zZXRDb250ZXh0KDApOworICAgICAgICBjdXJyZW50Q29udGV4dCgp
LT5zZXRDb250ZXh0KG51bGxwdHIpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICByZW1vdmVBY3Rp
dmVDb250ZXh0KHRoaXMpOworICAgIGlmIChtX2Rpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlz
cGxheTo6VHlwZTo6WDExKQorICAgICAgICByZW1vdmVBY3RpdmVDb250ZXh0KHRoaXMpOwogI2Vu
ZGlmCiB9CiAKQEAgLTE2NSw3ICsyMDMsNyBAQCBib29sIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotR0xDb250ZXh0KiBHTENvbnRleHQ6Omdl
dEN1cnJlbnQoKQorR0xDb250ZXh0KiBHTENvbnRleHQ6OmN1cnJlbnQoKQogewogICAgIHJldHVy
biBjdXJyZW50Q29udGV4dCgpLT5jb250ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IGQ0Mzk0NTQuLjFiODZhM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCkBAIC0yMSw3ICsyMSw3
IEBACiAjZGVmaW5lIEdMQ29udGV4dF9oCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgotI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYgVVNFKEVHTCkgJiYgIVBMQVRGT1JNKEdU
SykKQEAgLTM5LDIxICszOSwxOCBAQCB0eXBlZGVmIHVpbnQ2NF90IEdMTmF0aXZlV2luZG93VHlw
ZTsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19kZXZpY2UgY2Fpcm9fZGV2aWNlX3Q7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKFgxMSkKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5Owot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0IHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHQpOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEdMQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0
aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KEdMQ29udGV4dCogc2hhcmluZyA9IDApOwotICAgIHN0YXRpYyBHTENvbnRleHQqIGdldEN1
cnJlbnQoKTsKLSAgICBzdGF0aWMgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCgpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSogPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlT2Zmc2NyZWVu
Q29udGV4dChQbGF0Zm9ybURpc3BsYXkqID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYp
OworICAgIHN0YXRpYyBHTENvbnRleHQqIGN1cnJlbnQoKTsKKworICAgIFBsYXRmb3JtRGlzcGxh
eSYgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQogCi0gICAgR0xDb250ZXh0
KCk7CiAgICAgdmlydHVhbCB+R0xDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpID0gMDsKQEAgLTY3
LDI2ICs2NCwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCogY2Fpcm9E
ZXZpY2UoKSA9IDA7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBzdGF0aWMgRGlz
cGxheSogc2hhcmVkWDExRGlzcGxheSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRY
MTFEaXNwbGF5KCk7CisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCisgICAgdmlydHVh
bCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpID0gMDsKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oWDExKQorcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRBY3Rp
dmVDb250ZXh0KEdMQ29udGV4dCopOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFjdGl2ZUNvbnRl
eHQoR0xDb250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cEFjdGl2ZUNvbnRleHRzQXRF
eGl0KCk7Ci0KLSNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCkgPSAwOwogI2VuZGlmCiAK
LSAgICBjbGFzcyBEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkRhdGEoKSA9
IGRlZmF1bHQ7Ci0gICAgfTsKLQogcHJvdGVjdGVkOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRh
PiBtX2NvbnRleHREYXRhOworICAgIEdMQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsKKworICAg
IFBsYXRmb3JtRGlzcGxheSYgbV9kaXNwbGF5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggMTVjZDRkZi4uNmE3MzAyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBHCiB7CiAgICAgc3dpdGNoIChyZW5kZXJTdHlsZSkgewogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbjoKLSAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRl
eHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsK
KyAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQo
JlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENv
bnRleHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtODUsNyArODUsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIAogUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB7Ci0g
ICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDog
R0xDb250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOworICAgIHJldHVybiBt
X2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdMQ29udGV4dDo6
Y3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1h
cHBlcgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIGlmIChtX2NvbnRleHQtPm1f
YXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC0+bV9zdGF0ZS5ib3VuZEZCTyA9PSBtX2NvbnRl
eHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2
ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICAgICAgR0xDb250ZXh0KiBw
cmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKICAgICAgICAgaWYg
KHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKICAgICAgICAgICAg
IG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IDJlOTFhYTMu
LjYxNDdiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogCisjaW5jbHVkZSAiR0xDb250ZXh0Lmgi
CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxtdXRleD4KIApAQCAtNTksNiArNjAsOCBA
QAogCiAjaWYgVVNFKEVHTCkKICNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgaWYgKEdES19JU19XQVlMQU5EX0RJU1BMQVko
ZGlzcGxheSkpCi0gICAgICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUo
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZD4oZ2RrX3dheWxhbmRfZGlzcGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KSk7CiAjZW5kaWYK
ICNlbmRpZgogI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKQEAg
LTEwMyw2ICsxMDYsMTggQEAgUGxhdGZvcm1EaXNwbGF5JiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKQogICAgIHJldHVybiAqZGlzcGxheTsKIH0KIAorc3RhdGljIFBsYXRmb3JtRGlz
cGxheSogc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmc7CisKK1BsYXRmb3JtRGlzcGxheSYg
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKQoreworICAgIHJl
dHVybiBzX3NoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyA/ICpzX3NoYXJlZERpc3BsYXlGb3JD
b21wb3NpdGluZyA6IHNoYXJlZERpc3BsYXkoKTsKK30KKwordm9pZCBQbGF0Zm9ybURpc3BsYXk6
OnNldFNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyhQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkp
Cit7CisgICAgc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcgPSAmZGlzcGxheTsKK30KKwog
UGxhdGZvcm1EaXNwbGF5OjpQbGF0Zm9ybURpc3BsYXkoKQogI2lmIFVTRShFR0wpCiAgICAgOiBt
X2VnbERpc3BsYXkoRUdMX05PX0RJU1BMQVkpCkBAIC0xMTcsNyArMTMyLDIyIEBAIFBsYXRmb3Jt
RGlzcGxheTo6flBsYXRmb3JtRGlzcGxheSgpCiAjZW5kaWYKIH0KIAorI2lmICFQTEFURk9STShF
RkwpCitHTENvbnRleHQqIFBsYXRmb3JtRGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCgpCit7Cisg
ICAgaWYgKCFtX3NoYXJpbmdHTENvbnRleHQpCisgICAgICAgIG1fc2hhcmluZ0dMQ29udGV4dCA9
IEdMQ29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoKnRoaXMpOworICAgIHJldHVybiBtX3No
YXJpbmdHTENvbnRleHQuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShFR0wpCitzdGF0aWMg
SGFzaFNldDxQbGF0Zm9ybURpc3BsYXkqPiYgZWdsRGlzcGxheXMoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFBsYXRmb3JtRGlzcGxheSo+PiBkaXNwbGF5czsKKyAgICBy
ZXR1cm4gZGlzcGxheXM7Cit9CisKIEVHTERpc3BsYXkgUGxhdGZvcm1EaXNwbGF5OjplZ2xEaXNw
bGF5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWdsRGlzcGxheUluaXRpYWxpemVkKQpAQCAtMTMw
LDcgKzE2MCw3IEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgp
CiAgICAgbV9lZ2xEaXNwbGF5SW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAgICAgaWYgKG1fZWdsRGlz
cGxheSA9PSBFR0xfTk9fRElTUExBWSkgewotLy8gRUdMIGlzIG9wdGlvbmFsbHkgc29mdCBsaW5r
ZWQgb24gV2luZG93cy4KKyAgICAgICAgLy8gRUdMIGlzIG9wdGlvbmFsbHkgc29mdCBsaW5rZWQg
b24gV2luZG93cy4KICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIGF1dG8gZWdsR2V0RGlzcGxh
eSA9IGVnbEdldERpc3BsYXlQdHIoKTsKICAgICAgICAgaWYgKCFlZ2xHZXREaXNwbGF5KQpAQCAt
MTQ3LDMwICsxNzcsMzEgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNw
bGF5KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAg
ICBzdGF0aWMgY29uc3QgRUdMZW51bSBlZ2xBUElWZXJzaW9uID0gRUdMX09QRU5HTF9FU19BUEk7
Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBFR0xlbnVtIGVnbEFQSVZlcnNpb24gPSBFR0xfT1BF
TkdMX0FQSTsKLSNlbmRpZgotICAgIGlmIChlZ2xCaW5kQVBJKGVnbEFQSVZlcnNpb24pID09IEVH
TF9GQUxTRSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgRUdMIEFQSSglZCku
IiwgZWdsR2V0RXJyb3IoKSk7Ci0gICAgICAgIHRlcm1pbmF0ZUVHTERpc3BsYXkoKTsKLSAgICAg
ICAgcmV0dXJuOworICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOworCisgICAgc3RhdGljIGJv
b2wgZWdsQXRleGl0SGFuZGxlckluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFlZ2xBdGV4
aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQg
aGFuZGxlcnMgdG8gY2xlYW51cCBpdHMgZ2xvYmFsIGRpc3BsYXkgbGlzdC4KKyAgICAgICAgLy8g
U2luY2UgdGhlIGdsb2JhbCBQbGF0Zm9ybURpc3BsYXkgaW5zdGFuY2UgaXMgY3JlYXRlZCBiZWZv
cmUsCisgICAgICAgIC8vIHdoZW4gdGhlIFBsYXRmb3JtRGlzcGxheSBkZXN0cnVjdG9yIGlzIGNh
bGxlZCwgRUdMIGhhcyBhbHJlYWR5IHJlbW92ZWQgdGhlCisgICAgICAgIC8vIGRpc3BsYXkgZnJv
bSB0aGUgbGlzdCwgY2F1c2luZyBlZ2xUZXJtaW5hdGUoKSB0byBjcmFzaC4gU28sIGhlcmUgd2Ug
cmVnaXN0ZXIKKyAgICAgICAgLy8gb3VyIG93biBhdGV4aXQgaGFuZGxlciwgYWZ0ZXIgRUdMIGhh
cyBiZWVuIGluaXRpYWxpemVkIGFuZCBhZnRlciB0aGUgZ2xvYmFsCisgICAgICAgIC8vIGluc3Rh
bmNlIGhhcyBiZWVuIGNyZWF0ZWQgdG8gZW5zdXJlIHdlIGNhbGwgZWdsVGVybWluYXRlKCkgYmVm
b3JlIHRoZSBvdGhlcgorICAgICAgICAvLyBFR0wgYXRleGl0IGhhbmRsZXJzIGFuZCB0aGUgUGxh
dGZvcm1EaXNwbGF5IGRlc3RydWN0b3IuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTczLgorICAgICAgICBlZ2xBdGV4aXRIYW5kbGVy
SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBzdGQ6OmF0ZXhpdChbXSB7CisgICAgICAgICAg
ICB3aGlsZSAoIWVnbERpc3BsYXlzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXV0
byogZGlzcGxheSA9IGVnbERpc3BsYXlzKCkudGFrZUFueSgpOworICAgICAgICAgICAgICAgIGRp
c3BsYXktPnRlcm1pbmF0ZUVHTERpc3BsYXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CiAgICAgfQotCi0gICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51
cCBpdHMgZ2xvYmFsIGRpc3BsYXkgbGlzdC4KLSAgICAvLyBTaW5jZSB0aGUgZ2xvYmFsIFBsYXRm
b3JtRGlzcGxheSBpbnN0YW5jZSBpcyBjcmVhdGVkIGJlZm9yZSwKLSAgICAvLyB3aGVuIHRoZSBQ
bGF0Zm9ybURpc3BsYXkgZGVzdHJ1Y3RvciBpcyBjYWxsZWQsIEVHTCBoYXMgYWxyZWFkeSByZW1v
dmVkIHRoZQotICAgIC8vIGRpc3BsYXkgZnJvbSB0aGUgbGlzdCwgY2F1c2luZyBlZ2xUZXJtaW5h
dGUoKSB0byBjcmFzaC4gU28sIGhlcmUgd2UgcmVnaXN0ZXIKLSAgICAvLyBvdXIgb3duIGF0ZXhp
dCBoYW5kbGVyLCBhZnRlciBFR0wgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgYW5kIGFmdGVyIHRoZSBn
bG9iYWwKLSAgICAvLyBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIHRvIGVuc3VyZSB3ZSBjYWxs
IGVnbFRlcm1pbmF0ZSgpIGJlZm9yZSB0aGUgb3RoZXIKLSAgICAvLyBFR0wgYXRleGl0IGhhbmRs
ZXJzIGFuZCB0aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IuCi0gICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc5NzMuCi0gICAgc3RkOjphdGV4
aXQoW10geyBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50ZXJtaW5hdGVFR0xEaXNw
bGF5KCk7IH0pOwogfQogCiB2b2lkIFBsYXRmb3JtRGlzcGxheTo6dGVybWluYXRlRUdMRGlzcGxh
eSgpCiB7CisgICAgbV9zaGFyaW5nR0xDb250ZXh0ID0gbnVsbHB0cjsKICAgICBBU1NFUlQobV9l
Z2xEaXNwbGF5SW5pdGlhbGl6ZWQpOwogICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJ
U1BMQVkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKaW5kZXggOTIwOWY0NS4uNzU5MmY5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgK
QEAgLTM1LDEwICszNSwxMyBAQCB0eXBlZGVmIHZvaWQgKkVHTERpc3BsYXk7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgR0xDb250ZXh0OworCiBjbGFzcyBQbGF0Zm9ybURpc3BsYXkg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtRGlzcGxheSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQbGF0Zm9ybURpc3BsYXkmIHNoYXJl
ZERpc3BsYXkoKTsKKyAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5JiBzaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXkoKTsKIAogICAgIGVu
dW0gY2xhc3MgVHlwZSB7CkBAIC01NSw2ICs1OCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAorI2lmICFQTEFURk9STShFRkwpCisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBwbGF0Zm9ybSBpZmRlZiwgYnV0IEVGTCBoYXMg
aXRzIG93biBFR0xDb250ZXh0IGNsYXNzCisgICAgLy8gaW5zdGVhZCBvZiB1c2luZyB0aGUgR0xD
b250ZXh0IGNvbW1vbiBBUEkuCisgICAgR0xDb250ZXh0KiBzaGFyaW5nR0xDb250ZXh0KCk7Cisj
ZW5kaWYKKwogI2lmIFVTRShFR0wpCiAgICAgRUdMRGlzcGxheSBlZ2xEaXNwbGF5KCkgY29uc3Q7
CiAjZW5kaWYKQEAgLTYyLDYgKzcxLDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFBsYXRm
b3JtRGlzcGxheSgpOwogCisgICAgc3RhdGljIHZvaWQgc2V0U2hhcmVkRGlzcGxheUZvckNvbXBv
c2l0aW5nKFBsYXRmb3JtRGlzcGxheSYpOworCiAjaWYgVVNFKEVHTCkKICAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZUVHTERpc3BsYXkoKTsKIApAQCAtNzYsNiArODcsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX2VnbERpc3BsYXlJbml0aWFsaXplZCB7IGZhbHNlIH07CiAjZW5kaWYKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBtX3NoYXJpbmdHTENvbnRleHQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDhmNDhjMjAu
LjNjZDJhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC04OCw4ICs4OCw4IEBAIEltYWdl
QnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2
ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKLSAgICBHTENvbnRleHQ6OnNoYXJp
bmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdMQ29udGV4dCogcHJldmlv
dXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CisgICAgUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1h
a2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKG1fdGV4dHVyZSkKICAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKQEAgLTEwOCw3ICsxMDgsOCBAQCBJbWFnZUJ1ZmZl
ckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCkK
IHsKLSAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JD
b21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKIAogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUp
OwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7
CkBAIC0xMTksMTUgKzEyMCwxNCBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9z
aXRvckJ1ZmZlcigpCiAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsK
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAsIEdMX1JHQkEsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwog
Ci0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KS0+Y2Fpcm9EZXZpY2UoKTsKLSAgICBtX2NvbXBvc2l0b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNlLCBDQUlST19DT05URU5UX0NP
TE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKSk7CisgICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1
cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNvbnRleHQtPmNhaXJvRGV2aWNlKCksIENBSVJPX0NP
TlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKICAgICBtX2NvbXBvc2l0b3JDciA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShtX2NvbXBvc2l0b3JTdXJmYWNlLmdldCgpKSk7CiAgICAgY2Fpcm9fc2V0X2FudGlhbGlh
cyhtX2NvbXBvc2l0b3JDci5nZXQoKSwgQ0FJUk9fQU5USUFMSUFTX05PTkUpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiB7Ci0gICAgR0xDb250ZXh0
KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICBH
TENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwog
CiAgICAgaWYgKCFtX2NvbXBvc2l0b3JUZXh0dXJlKSB7CiAgICAgICAgIGNyZWF0ZUNvbXBvc2l0
b3JCdWZmZXIoKTsKQEAgLTE1OSw3ICsxNTksOCBAQCB2b2lkIGNsZWFyU3VyZmFjZShjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UpCiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dM
U3VyZmFjZSgpCiB7Ci0gICAgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7CisgICAgY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBXZSBtdXN0IGdlbmVyYXRlIHRoZSB0ZXh0
dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBpcyBubyBDYWlybyBBUEkgZm9yIGV4dHJhY3Rp
bmcgaXQKICAgICAvLyBmcm9tIGEgcHJlLWV4aXN0aW5nIHN1cmZhY2UuCkBAIC0xNzQsNyArMTc1
LDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNhaXJvR0xTdXJmYWNlKCkKIAogICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwIC8qIGxldmVsICovLCBHTF9SR0JBLCBtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwIC8qIGJvcmRlciAqLywgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgMCk7CiAKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6
OnNoYXJpbmdDb250ZXh0KCk7CiAgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQt
PmNhaXJvRGV2aWNlKCk7CiAKICAgICAvLyBUaHJlYWQtYXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJm
b3JtYW5jZSBoaXQgb24gbm9uLUludGVsIGRyaXZlcnMuCkBAIC01NjMsNyArNTYzLDcgQEAgdm9p
ZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEYKICAgICBBU1NFUlQobV90ZXh0dXJlKTsKIAogICAgIC8vIENh
aXJvIG1heSBjaGFuZ2UgdGhlIGFjdGl2ZSBjb250ZXh0LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hh
bmdlIGl0IGJhY2sgYWZ0ZXIgZmx1c2hpbmcuCi0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2
ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHByZXZp
b3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwogICAgIGNhaXJvX3N1cmZh
Y2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC02MDksNyArNjA5LDcgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgR0MzRGVudW0gdGFy
Z2V0LCBQbGEKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZS5nZXQo
KSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0
OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KDAsIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3Jl
YXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29t
cG9zaXRpbmcoKSk7CiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdWlu
dDMyX3QgZmJvOwogICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRl
eCBhMmJjNzViLi4wYWUzMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lmIFVT
RShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtRGlzcGxheS5oIgogCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgPGNhaXJvLmg+CkBAIC00
MCw2ICszOSwxMSBAQAogI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oIgorI2luY2x1
ZGUgPHdheWxhbmQtZWdsLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCiAvLyBjYWlyby1nbC5oIGluY2x1ZGVzIHNvbWUgZGVmaW5pdGlvbnMgZnJvbSBHTFgg
dGhhdCBjb25mbGljdCB3aXRoCiAvLyB0aGUgb25lcyBwcm92aWRlZCBieSB1cy4gU2luY2UgR0xD
b250ZXh0RUdMIGRvZXNuJ3QgdXNlIGFueSBHTFgKQEAgLTUwLDExICs1NCw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSgpCi17
Ci0gICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXko
KTsKLX0KLQogc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCkBA
IC02Miw3ICs2MSwxMyBAQCBzdGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRlc1td
ID0gewogICAgIEVHTF9OT05FCiB9OwogCi1zdGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMQ29u
ZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUpCisj
aWYgVVNFKE9QRU5HTF9FU18yKQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0VHTEFQSVZlcnNpb24g
PSBFR0xfT1BFTkdMX0VTX0FQSTsKKyNlbHNlCitzdGF0aWMgY29uc3QgRUdMZW51bSBnRUdMQVBJ
VmVyc2lvbiA9IEVHTF9PUEVOR0xfQVBJOworI2VuZGlmCisKK2Jvb2wgR0xDb250ZXh0RUdMOjpn
ZXRFR0xDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcqIGNvbmZpZywgRUdMU3Vy
ZmFjZVR5cGUgc3VyZmFjZVR5cGUpCiB7CiAgICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsK
ICNpZiBVU0UoT1BFTkdMX0VTXzIpCkBAIC04NywyNyArOTIsMjMgQEAgc3RhdGljIGJvb2wgZ2V0
RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBl
IHN1cmZhY2UKICAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUElYTUFQX0JJVDsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBHTENvbnRleHRFR0w6OldpbmRvd1N1cmZhY2U6CisgICAg
Y2FzZSBHTENvbnRleHRFR0w6OlN1cmZhY2VsZXNzOgogICAgICAgICBhdHRyaWJ1dGVMaXN0WzEz
XSA9IEVHTF9XSU5ET1dfQklUOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBFR0xpbnQg
bnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVk
RUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0
dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29u
ZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1
cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2lu
ZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4dERhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0
IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBz
aGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0
KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERp
c3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXku
ZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25m
aWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxh
eSwgJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcs
IGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOworICAgIEVHTENvbnRleHQg
Y29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4
dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKICAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVY
VCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTExNywxOSArMTE4LDE0IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4
dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQs
IHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOwotICAgIGdsQ29udGV4dC0+bV9jb250ZXh0RGF0YSA9
IFdURk1vdmUoY29udGV4dERhdGEpOwotICAgIHJldHVybiBnbENvbnRleHQ7CisgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1E
aXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQo
RUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0
Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQorICAgIEVHTERpc3BsYXkgZGlz
cGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgRUdMQ29uZmlnIGNvbmZp
ZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCisgICAg
aWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0
ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1
dGVzKTsKQEAgLTE0MywxOCArMTM5LDM2IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRm
b3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpKTsKIH0KIAotI2lm
IFBMQVRGT1JNKFgxMSkKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQorc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVTdXJmYWNlbGVzc0Nv
bnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgp
OworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7
CiAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9ucyA9IGVnbFF1ZXJ5U3RyaW5nKGRpc3Bs
YXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoIXN0cnN0cihleHRlbnNpb25zLCAiRUdMX0tI
Ul9zdXJmYWNlbGVzc19jb250ZXh0IikgJiYgIXN0cnN0cihleHRlbnNpb25zLCAiRUdMX0tIUl9z
dXJmYWNlbGVzc19vcGVuZ2wiKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBFR0xD
b25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFBpeG1hcFN1cmZh
Y2UpKQorICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXksICZjb25maWcsIFN1cmZhY2VsZXNz
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBl
Z2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0
QXR0cmlidXRlcyk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VS
RkFDRSwgU3VyZmFjZWxlc3MpKTsKK30KKworI2lmIFBMQVRGT1JNKFgxMSkKK3N0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChQbGF0
Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkK
K3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgp
OworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwg
JmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
RUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNo
YXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwpAQCAtMTY3LDcgKzE4MSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29u
dGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiB4
MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkp
Lm5hdGl2ZSgpOwogICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFE
aXNwbGF5LCBEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5KSwgMSwgMSwgZGVwdGgpOwogICAg
IGlmICghcGl4bWFwKSB7CiAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRl
eHQpOwpAQCAtMTgwLDQ5ICsxOTQsMTA3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXApKTsKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0
Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdURk1vdmUocGl4bWFwKSkpOwogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENv
bnRleHQqIHNoYXJpbmdDb250ZXh0KQorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCitzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdheWxhbmRDb250ZXh0KFBs
YXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
KQogewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgpKQorICAgIEVHTERpc3BsYXkgZGlzcGxh
eSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CisgICAgRUdMQ29uZmlnIGNvbmZpZzsK
KyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9
IGZhbHNlOwotICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIGlmICghaW5pdGlh
bGl6ZWQpIHsKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQotICAgICAgICBzdWNjZXNzID0gaW5pdGlh
bGl6ZU9wZW5HTFNoaW1zKCk7Ci0jZW5kaWYKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwor
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmln
LCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBpZiAoY29udGV4dCA9
PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBXbFVuaXF1
ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gd2xTdXJmYWNlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ+KHBsYXRmb3JtRGlzcGxheSkuY3JlYXRlU3VyZmFjZSgpKTsKKyAgICBpZiAoIXds
U3VyZmFjZSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGlmICghc3VjY2VzcykKKworICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJm
YWNlLmdldCgpLCAxLCAxKTsKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5k
b3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93LCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9
PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBj
b250ZXh0KTsKKyAgICAgICAgd2xfZWdsX3dpbmRvd19kZXN0cm95KHdpbmRvdyk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KIAotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVh
dGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0
Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdURk1vdmUod2xTdXJmYWNlKSwgd2luZG93
KSk7Cit9CisjZW5kaWYKKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURp
c3BsYXkmIHBsYXRmb3JtRGlzcGxheSkKK3sKKyAgICBpZiAocGxhdGZvcm1EaXNwbGF5LmVnbERp
c3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpZiAoZWdsQmluZEFQSShnRUdMQVBJVmVyc2lvbikgPT0gRUdMX0ZBTFNFKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBwbGF0
Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdM
Kj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSktPm1fY29udGV4dCA6IEVHTF9O
T19DT05URVhUOworICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7
CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0ID0gY3JlYXRlU3VyZmFjZWxlc3ND
b250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworICAgIGlmICghY29u
dGV4dCkgewogI2lmIFBMQVRGT1JNKFgxMSkKKyAgICAgICAgaWYgKHBsYXRmb3JtRGlzcGxheS50
eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgICAgICBjb250ZXh0
ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0
KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgICAgIGlmIChwbGF0Zm9ybURp
c3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAg
ICAgIGNvbnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNo
YXJpbmdDb250ZXh0KTsKKyNlbmRpZgorICAgIH0KICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICAg
ICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hh
cmluZ0NvbnRleHQpOworCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZv
cm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7CisgICAgaWYgKHBsYXRmb3JtRGlzcGxheS5l
Z2xEaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKGVnbEJpbmRBUEkoZ0VHTEFQSVZlcnNpb24pID09IEVHTF9GQUxTRSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVTdXJmYWNlbGVz
c0NvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyNpZiBQTEFURk9STShYMTEpCisgICAgaWYgKCFj
b250ZXh0KSB7CisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENv
bnRleHQocGxhdGZvcm1EaXNwbGF5KTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisg
ICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4dChw
bGF0Zm9ybURpc3BsYXkpOworI2VuZGlmCisgICAgfQogICAgIGlmICghY29udGV4dCkKLSAgICAg
ICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAg
ICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CiAK
ICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUp
Ci0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBs
YXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1
cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAg
ICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiAgICAgLCBt
X3R5cGUodHlwZSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBQaXhtYXBTdXJmYWNlKTsKKyAgICBB
U1NFUlQodHlwZSA9PSBTdXJmYWNlbGVzcyB8fCBzdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKTsK
IH0KIAogI2lmIFBMQVRGT1JNKFgxMSkKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENv
bnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFw
KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQ
bGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkp
CisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogICAg
ICwgbV90eXBlKFBpeG1hcFN1cmZhY2UpCiAgICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkp
CkBAIC0yMzAsNiArMzAyLDE4IEBAIEdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRl
eHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwCiB9CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0
Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4mJiB3bFN1cmZhY2UsIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2xXaW5kb3cpCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1f
Y29udGV4dChjb250ZXh0KQorICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX3R5cGUo
V2luZG93U3VyZmFjZSkKKyAgICAsIG1fd2xTdXJmYWNlKFdURk1vdmUod2xTdXJmYWNlKSkKKyAg
ICAsIG1fd2xXaW5kb3cod2xXaW5kb3cpCit7Cit9CisjZW5kaWYKKwogR0xDb250ZXh0RUdMOjp+
R0xDb250ZXh0RUdMKCkKIHsKICNpZiBVU0UoQ0FJUk8pCkBAIC0yMzcsNyArMzIxLDcgQEAgR0xD
b250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3ko
bV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJl
ZEVHTERpc3BsYXkoKTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBtX2Rpc3BsYXkuZWdsRGlz
cGxheSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIDApOwogICAgICAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKQEAgLTI0Niw2ICsz
MzAsMTEgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKIAogICAgIGlmIChtX3N1cmZh
Y2UpCiAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisKKyNp
ZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChtX3dsV2luZG93KQorICAgICAgICB3bF9lZ2xf
d2luZG93X2Rlc3Ryb3kobV93bFdpbmRvdyk7CisjZW5kaWYKIH0KIAogYm9vbCBHTENvbnRleHRF
R0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKQEAgLTI1OCw5ICszNDcsMTAgQEAg
SW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgIGlmICgh
Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUo
KTsKIAorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IG1fZGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAg
ICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVk
RUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQotICAgICAgICB8fCAh
ZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hU
LCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShkaXNwbGF5LCBtX3N1cmZhY2Us
IEVHTF9XSURUSCwgJndpZHRoKQorICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXks
IG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCiAgICAgICAgIHJldHVybiBJbnRTaXpl
KCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTI2OCwxOSArMzU4
LDE5IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKIAog
Ym9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7Ci0gICAgQVNTRVJUKG1f
Y29udGV4dCAmJiBtX3N1cmZhY2UpOworICAgIEFTU0VSVChtX2NvbnRleHQpOwogCiAgICAgR0xD
b250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRl
eHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGVn
bE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1f
Y29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheS5lZ2xEaXNwbGF5
KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4
dEVHTDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3
YXBCdWZmZXJzKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBlZ2xTd2FwQnVm
ZmVycyhtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX3N1cmZhY2UpOwogfQogCiB2b2lkIEdMQ29u
dGV4dEVHTDo6d2FpdE5hdGl2ZSgpCkBAIC0yOTUsNyArMzg1LDcgQEAgY2Fpcm9fZGV2aWNlX3Qq
IEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQogICAgICAgICByZXR1cm4gbV9jYWlyb0Rldmlj
ZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgbV9jYWlyb0Rldmlj
ZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9jb250ZXh0
KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUobV9kaXNwbGF5
LmVnbERpc3BsYXkoKSwgbV9jb250ZXh0KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9E
ZXZpY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmgKaW5kZXggODY1NzVhOS4uZTA2MzhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMjksNDkgKzI5
LDY3IEBACiAjaW5jbHVkZSAiWFVuaXF1ZVJlc291cmNlLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiV2xVbmlxdWVQdHIuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdMQ29udGV4dEVHTCA6IHB1YmxpYyBHTENvbnRleHQgewor
Y2xhc3MgR0xDb250ZXh0RUdMIGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZh
Y2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChF
R0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0ID0gMCk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dDo6RGF0YT4mJiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUs
IFBsYXRmb3JtRGlzcGxheSYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsKIAotICAgIEdMQ29u
dGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7Ci0jaWYgUExB
VEZPUk0oWDExKQotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5p
cXVlUGl4bWFwJiYpOwotI2VuZGlmCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7Ci0gICAg
dmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBzd2Fw
QnVmZmVycygpOwotICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCk7Ci0gICAgdmlydHVhbCBi
b29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCk7Ci0gICAgdmlydHVhbCBJbnRTaXpl
IGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKKworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2FwQnVmZmVycygpIG92ZXJyaWRlOworICAgIHZvaWQg
d2FpdE5hdGl2ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVi
dWZmZXIoKSBvdmVycmlkZTsKKyAgICBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSBv
dmVycmlkZTsKICNpZiBVU0UoQ0FJUk8pCi0gICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCogY2Fp
cm9EZXZpY2UoKTsKKyAgICBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKSBvdmVycmlkZTsK
ICNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBpc0VHTENvbnRleHQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc0VHTENvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CisgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSBvdmVycmlkZTsKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQ
YnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBlbnVtIEVHTFN1
cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2Us
IFN1cmZhY2VsZXNzIH07CisKKyAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdM
Q29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOwogI2lmIFBMQVRGT1JNKFgxMSkK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29u
dGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBHTENvbnRleHRFR0woUGxhdGZv
cm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlz
cGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJm
YWNlPiYmLCBFR0xOYXRpdmVXaW5kb3dUeXBlKTsKKyNlbmRpZgorCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2lu
ZG93VHlwZSwgUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVH
TF9OT19DT05URVhUKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gY3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisjaWYgUExBVEZPUk0o
WDExKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXht
YXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBF
R0xfTk9fQ09OVEVYVCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXYXlsYW5kQ29udGV4dChQbGF0
Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQp
OwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVH
TCopOwotICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KHZvaWQpOworICAg
IHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xEaXNwbGF5LCBFR0xDb25maWcqLCBFR0xTdXJm
YWNlVHlwZSk7CiAKLSAgICBFR0xDb250ZXh0IG1fY29udGV4dDsKLSAgICBFR0xTdXJmYWNlIG1f
c3VyZmFjZTsKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dCB7IEVHTF9OT19DT05URVhUIH07Cisg
ICAgRUdMU3VyZmFjZSBtX3N1cmZhY2UgeyBFR0xfTk9fU1VSRkFDRSB9OwogICAgIEVHTFN1cmZh
Y2VUeXBlIG1fdHlwZTsKICNpZiBQTEFURk9STShYMTEpCiAgICAgWFVuaXF1ZVBpeG1hcCBtX3Bp
eG1hcDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgV2xVbmlxdWVQdHI8c3Ry
dWN0IHdsX3N1cmZhY2U+IG1fd2xTdXJmYWNlOworICAgIHN0cnVjdCB3bF9lZ2xfd2luZG93KiBt
X3dsV2luZG93IHsgbnVsbHB0ciB9OworI2VuZGlmCiAjaWYgVVNFKENBSVJPKQogICAgIGNhaXJv
X2RldmljZV90KiBtX2NhaXJvRGV2aWNlIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCmlu
ZGV4IDE0YmI1MzkuLjQxNTA3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250
ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmlu
Z0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURp
c3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRGlzcGxheSogZGlzcGxh
eSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0
Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAgWFdpbmRvd0F0
dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3Bs
YXksIHdpbmRvdywgJmF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1
LDE1ICs0NSwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6
OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwogICAgIGludCBudW1SZXR1cm5l
ZCA9IDA7CiAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mb0xpc3QoWEdldFZp
c3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mbywgJm51bVJldHVybmVk
KSk7CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQg
PyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dC5n
ZXQoKSA6IG51bGxwdHI7Ci0gICAgWFVuaXF1ZUdMWENvbnRleHQgY29udGV4dChnbFhDcmVhdGVD
b250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LmdldCgpLCBnbHhTaGFyaW5nQ29udGV4dCwg
VHJ1ZSkpOworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5nZXQoKSwgc2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQpLCB3aW5kb3cpOwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPihuZXcgR0xDb250ZXh0R0xY
KHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwgd2luZG93KSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBw
bGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RSQVdBQkxF
X1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKQEAgLTY3LDcgKzY2LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250
ZXh0IHNoYXIKICAgICB9OwogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7Ci0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAg
WFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gY29uZmlncyhnbFhDaG9vc2VGQkNvbmZpZyhkaXNwbGF5
LCAwLCBmYkNvbmZpZ0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1lbnRzKSk7CiAgICAgaWYgKCFy
ZXR1cm5lZEVsZW1lbnRzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDEwICs4MSwx
MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogICAgIGlmICghY29udGV4dCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRH
TFg+KFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGJ1ZmZlcikpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPihuZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxh
eSwgV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShwYnVmZmVyKSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xY
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3Jt
RGlzcGxheSwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKICAgICBzdGF0aWMgaW50IHZp
c3VhbEF0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX1JHQkEsCkBAIC05Niw3ICs5NSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFw
Q29udGV4dChHTFhDb250ZXh0IHNoYXJpCiAgICAgICAgIDAKICAgICB9OwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAg
WFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxh
eSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlzdWFsQXR0cmlidXRlcykpOwogICAgIGlmICgh
dmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTMsNDYgKzExMiw0NiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1h
cENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIGlmICghZ2x4UGl4bWFwKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdM
WD4oV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShwaXhtYXApLCBXVEZNb3ZlKGdseFBpeG1hcCkp
OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPihuZXcgR0xDb250ZXh0
R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShwaXhtYXApLCBX
VEZNb3ZlKGdseFBpeG1hcCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4g
R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmlu
Z0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNy
ZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkp
CiB7Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9v
bCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIHN1Y2Nl
c3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OwotICAgIH0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGlj
X2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBu
dWxscHRyOwotICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQo
d2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOworICAgIEdMWENvbnRleHQgZ2x4U2hh
cmluZ0NvbnRleHQgPSBwbGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpID8gc3RhdGlj
X2Nhc3Q8R0xDb250ZXh0R0xYKj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSkt
Pm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7CisgICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8g
Y3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0Nv
bnRleHQpIDogbnVsbHB0cjsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBj
cmVhdGVQYnVmZmVyQ29udGV4dChnbHhTaGFyaW5nQ29udGV4dCk7CisgICAgICAgIGNvbnRleHQg
PSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0
KTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250
ZXh0KGdseFNoYXJpbmdDb250ZXh0KTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9y
bURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQog
Ci1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQs
IFhJRCB3aW5kb3cpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQo
UGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7CisgICAgYXV0byBjb250ZXh0ID0g
Y3JlYXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7
CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK0dMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBs
YXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYSUQg
d2luZG93KQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KHdpbmRvdykKIHsKIH0KIAotR0xDb250ZXh0R0xY
OjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlR0xYUGJ1
ZmZlciYmIHBidWZmZXIpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKK0dMQ29u
dGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1ZUdM
WENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlR0xYUGJ1ZmZlciYmIHBidWZmZXIpCisgICAgOiBH
TENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAg
ICwgbV9wYnVmZmVyKFdURk1vdmUocGJ1ZmZlcikpCiB7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xD
b250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZVBpeG1hcCYmIHBp
eG1hcCwgWFVuaXF1ZUdMWFBpeG1hcCYmIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5
JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVQaXhtYXAmJiBw
aXhtYXAsIFhVbmlxdWVHTFhQaXhtYXAmJiBnbHhQaXhtYXApCisgICAgOiBHTENvbnRleHQoZGlz
cGxheSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9waXhtYXAo
V1RGTW92ZShwaXhtYXApKQogICAgICwgbV9nbHhQaXhtYXAoV1RGTW92ZShnbHhQaXhtYXApKQog
ewpAQCAtMTY2LDkgKzE2NSw4IEBAIEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAg
aWYgKG1fY29udGV4dCkgewogICAgICAgICAvLyBUaGlzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJl
dmVudCBjcmFzaGVzIHdpdGggTlZpZGlhJ3MgY2xvc2VkIHNvdXJjZSBkcml2ZXJzLiBPcmlnaW5h
bGx5CiAgICAgICAgIC8vIGZyb20gTW96aWxsYSdzIDNEIGNhbnZhcyBpbXBsZW1lbnRhdGlvbiBh
dDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaWxtYXJpL2NhbnZhczNkLwotICAgICAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgMCk7Ci0gICAgICAgIGdsWE1ha2VDdXJyZW50KGRpc3BsYXks
IE5vbmUsIE5vbmUpOworICAgICAgICBnbFhNYWtlQ3VycmVudChkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCksIE5vbmUsIE5vbmUpOwogICAgIH0KIH0KIApA
QCAtMTg1LDggKzE4Myw3IEBAIEludFNpemUgR0xDb250ZXh0R0xYOjpkZWZhdWx0RnJhbWVCdWZm
ZXJTaXplKCkKICAgICBpbnQgeCwgeTsKICAgICBXaW5kb3cgcm9vdFdpbmRvdzsKICAgICB1bnNp
Z25lZCBpbnQgd2lkdGgsIGhlaWdodCwgYm9yZGVyV2lkdGgsIGRlcHRoOwotICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLSAgICBpZiAoIVhHZXRHZW9tZXRyeShkaXNwbGF5
LCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVy
V2lkdGgsICZkZXB0aCkpCisgICAgaWYgKCFYR2V0R2VvbWV0cnkoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpLCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4
LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCkpCiAgICAgICAgIHJl
dHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAg
LTIwMCw3ICsxOTcsNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkK
ICAgICBpZiAoZ2xYR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQuZ2V0KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1f
ZGlzcGxheSkubmF0aXZlKCk7CiAgICAgaWYgKG1fd2luZG93KQogICAgICAgICByZXR1cm4gZ2xY
TWFrZUN1cnJlbnQoZGlzcGxheSwgbV93aW5kb3csIG1fY29udGV4dC5nZXQoKSk7CiAKQEAgLTIx
Myw3ICsyMTAsNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHZv
aWQgR0xDb250ZXh0R0xYOjpzd2FwQnVmZmVycygpCiB7CiAgICAgaWYgKG1fd2luZG93KQotICAg
ICAgICBnbFhTd2FwQnVmZmVycyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgbV93aW5kb3cpOworICAgICAgICBn
bFhTd2FwQnVmZmVycyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0
aXZlKCksIG1fd2luZG93KTsKIH0KIAogdm9pZCBHTENvbnRleHRHTFg6OndhaXROYXRpdmUoKQpA
QCAtMjI3LDcgKzIyNCw3IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2
aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAmJiBDQUlST19IQVNfR0xYX0ZVTkNUSU9OUwotICAgIG1fY2Fpcm9E
ZXZpY2UgPSBjYWlyb19nbHhfZGV2aWNlX2NyZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgbV9jb250ZXh0
LmdldCgpKTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpLCBtX2NvbnRleHQu
Z2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAppbmRleCA2
NDdmOTk4Li4zNGNiNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nbHgvR0xDb250ZXh0R0xYLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCkBAIC0zMiwzMSArMzIsMzQgQEAgdHlwZWRlZiB2b2lk
KiBDb250ZXh0S2V5VHlwZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRl
eHRHTFggOiBwdWJsaWMgR0xDb250ZXh0IHsKK2NsYXNzIEdMQ29udGV4dEdMWCBmaW5hbCA6IHB1
YmxpYyBHTENvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEdMWCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0
ZUNvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoWElE
IHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1E
aXNwbGF5Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0
ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYpOwogCi0gICAgR0xDb250ZXh0R0xYKFhV
bmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7Ci0gICAgR0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250
ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOwotICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xY
Q29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7CiAgICAgdmly
dHVhbCB+R0xDb250ZXh0R0xYKCk7Ci0gICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwotICAgIHZpcnR1YWwgdm9pZCB3
YWl0TmF0aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKCk7Ci0gICAgdmlydHVhbCBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKLSAg
ICB2aXJ0dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpOwotICAgIHZpcnR1YWwgYm9v
bCBpc0VHTENvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3YWl0TmF0aXZlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZW5kZXJU
b0RlZmF1bHRGcmFtZWJ1ZmZlcigpIG92ZXJyaWRlOworICAgIEludFNpemUgZGVmYXVsdEZyYW1l
QnVmZmVyU2l6ZSgpIG92ZXJyaWRlOworICAgIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQotICAgIHZpcnR1
YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNy
ZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENv
bnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIEdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3BsYXkm
LCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYSUQpOworICAgIEdMQ29udGV4dEdMWChQbGF0Zm9ybURp
c3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlR0xYUGJ1ZmZlciYmKTsKKyAgICBH
TENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiwgWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1
ZVBpeG1hcCYmLCBYVW5pcXVlR0xYUGl4bWFwJiYpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgUGxhdGZv
cm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQYnVmZmVyQ29udGV4dChQ
bGF0Zm9ybURpc3BsYXkmLCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0cik7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVBpeG1hcENvbnRl
eHQoUGxhdGZvcm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIp
OwogCiAgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdyB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcAppbmRleCBiMjkyMzllLi5mY2ZmNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0yMzUsOCArMjM1LDggQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjplbnN1cmVHc3RHTENvbnRleHQo
KQogICAgIGlmIChtX2dsQ29udGV4dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBjb25z
dCBhdXRvJiBzaGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKTsKICAgICBpZiAoIW1fZ2xEaXNwbGF5KSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIHNoYXJlZERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKTsKICNp
ZiBQTEFURk9STShYMTEpCiAgICAgICAgIG1fZ2xEaXNwbGF5ID0gR1NUX0dMX0RJU1BMQVkoZ3N0
X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSkpOwogI2VsaWYgUExBVEZPUk0oV0FZTEFORCkK
QEAgLTI0NCw3ICsyNDQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmVuc3VyZUdzdEdMQ29udGV4dCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICBHTENvbnRleHQqIHdl
YmtpdENvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CisgICAgR0xDb250ZXh0
KiB3ZWJraXRDb250ZXh0ID0gc2hhcmVkRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCk7CiAgICAg
Ly8gRUdMIGFuZCBHTFggYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbm8gbmVlZCBmb3IgaWZkZWZz
IGhlcmUuCiAgICAgR3N0R0xQbGF0Zm9ybSBnbFBsYXRmb3JtID0gd2Via2l0Q29udGV4dC0+aXNF
R0xDb250ZXh0KCkgPyBHU1RfR0xfUExBVEZPUk1fRUdMIDogR1NUX0dMX1BMQVRGT1JNX0dMWDsK
IApAQCAtNzAyLDcgKzcwMiw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGlmICghZ3N0X3Zp
ZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2Fz
dDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKICAgICBjb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0g
Y29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5jcHAKaW5kZXggZDMzMDVlMS4uNDc5MjRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxh
eVdheWxhbmQuY3BwCkBAIC0yOSwxMjYgKzI5LDU1IEBACiAjaWYgUExBVEZPUk0oV0FZTEFORCkK
IAogI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgotI2luY2x1ZGUgIldheWxhbmRTdXJmYWNlLmgi
CiAjaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d2F5bGFu
ZC1lZ2wuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kOjptX3JlZ2lzdHJ5TGlzdGVuZXIgPSB7Ci0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZDo6Z2xvYmFsQ2FsbGJhY2ssCi0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Z2xvYmFsUmVt
b3ZlQ2FsbGJhY2sKK2NvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kOjpzX3JlZ2lzdHJ5TGlzdGVuZXIgPSB7CisgICAgLy8gZ2xvYmFsQ2FsbGJh
Y2sKKyAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1l
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90KSB7CisgICAgICAgIHN0YXRpY19jYXN0
PFBsYXRmb3JtRGlzcGxheVdheWxhbmQqPihkYXRhKS0+cmVnaXN0cnlHbG9iYWwoaW50ZXJmYWNl
LCBuYW1lKTsKKyAgICB9LAorICAgIC8vIGdsb2JhbFJlbW92ZUNhbGxiYWNrCisgICAgW10odm9p
ZCosIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90KQorICAgIHsKKyAgICB9CiB9OwogCi12
b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2JhbENhbGxiYWNrKHZvaWQqIGRhdGEsIHN0
cnVjdCB3bF9yZWdpc3RyeSogcmVnaXN0cnksIHVpbnQzMl90IG5hbWUsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZSwgdWludDMyX3QpCitQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQogewotICAgIGF1dG8gZGlzcGxh
eSA9IHN0YXRpY19jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQqPihkYXRhKTsKLSAgICBpZiAo
IXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX2NvbXBvc2l0b3IiKSkKLSAgICAgICAgZGlzcGxh
eS0+bV9jb21wb3NpdG9yID0gc3RhdGljX2Nhc3Q8c3RydWN0IHdsX2NvbXBvc2l0b3IqPih3bF9y
ZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEp
KTsKLSAgICBlbHNlIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAid2xfd2Via2l0Z3RrIikp
Ci0gICAgICAgIGRpc3BsYXktPm1fd2Via2l0Z3RrID0gc3RhdGljX2Nhc3Q8c3RydWN0IHdsX3dl
YmtpdGd0ayo+KHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0cnksIG5hbWUsICZ3bF93ZWJraXRndGtf
aW50ZXJmYWNlLCAxKSk7CisgICAgaW5pdGlhbGl6ZShkaXNwbGF5KTsKIH0KIAotdm9pZCBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxSZW1vdmVDYWxsYmFjayh2b2lkKiwgc3RydWN0IHds
X3JlZ2lzdHJ5KiwgdWludDMyX3QpCi17Ci0gICAgLy8gRklYTUU6IGlmIHRoaXMgY2FuIGhhcHBl
biB3aXRob3V0IHRoZSBVSSBQcm9jZXNzIGdldHRpbmcgc2h1dCBkb3duCi0gICAgLy8gd2Ugc2hv
dWxkIHByb2JhYmx5IGRlc3Ryb3kgb3VyIGNhY2hlZCBkaXNwbGF5IGluc3RhbmNlLgotfQotCi1z
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4gUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6Y3JlYXRlKCkKK1BsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlX
YXlsYW5kKCkKIHsKLSAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5ID0gd2xfZGlzcGxh
eV9jb25uZWN0KG51bGxwdHIpOwotICAgIGlmICghd2xEaXNwbGF5KSB7Ci0gICAgICAgIFdURkxv
Z0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRv
IGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgc2VydmVyIHNvY2tldC4gQ2hlY2sgeW91ciBXQVlMQU5E
X0RJU1BMQVkgb3IgV0FZTEFORF9TT0NLRVQgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGRpc3BsYXkgPSBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4obmV3IFBsYXRmb3JtRGlzcGxheVdheWxh
bmQod2xEaXNwbGF5KSk7Ci0gICAgaWYgKCFkaXNwbGF5LT5pc0luaXRpYWxpemVkKCkpIHsKLSAg
ICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIGluaXRpYWxpemF0aW9u
OiBmYWlsZWQgdG8gY29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkaXNwbGF5LiIp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGlzcGxheTsK
IH0KIAotUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1
Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5KQotICAgIDogbV9kaXNwbGF5KHdsRGlzcGxheSkKLSAg
ICAsIG1fcmVnaXN0cnkod2xfZGlzcGxheV9nZXRfcmVnaXN0cnkobV9kaXNwbGF5KSkKLSAgICAs
IG1fZWdsQ29uZmlnQ2hvc2VuKGZhbHNlKQordm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpp
bml0aWFsaXplKHdsX2Rpc3BsYXkqIGRpc3BsYXkpCiB7Ci0gICAgd2xfcmVnaXN0cnlfYWRkX2xp
c3RlbmVyKG1fcmVnaXN0cnksICZtX3JlZ2lzdHJ5TGlzdGVuZXIsIHRoaXMpOworICAgIG1fZGlz
cGxheSA9IGRpc3BsYXk7CisgICAgbV9yZWdpc3RyeS5yZXNldCh3bF9kaXNwbGF5X2dldF9yZWdp
c3RyeShtX2Rpc3BsYXkpKTsKKyAgICB3bF9yZWdpc3RyeV9hZGRfbGlzdGVuZXIobV9yZWdpc3Ry
eS5nZXQoKSwgJnNfcmVnaXN0cnlMaXN0ZW5lciwgdGhpcyk7CiAgICAgd2xfZGlzcGxheV9yb3Vu
ZHRyaXAobV9kaXNwbGF5KTsKIAotICAgIHN0YXRpYyBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmli
dXRlc1tdID0gewotICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCBFR0xfV0lORE9XX0JJVCwKLSAg
ICAgICAgRUdMX1JFRF9TSVpFLCAxLAotICAgICAgICBFR0xfR1JFRU5fU0laRSwgMSwKLSAgICAg
ICAgRUdMX0JMVUVfU0laRSwgMSwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDEsCi0gICAgICAg
IEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKLSAgICAgICAgRUdMX05P
TkUKLSAgICB9OwotCiAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShtX2Rpc3BsYXkp
OwogICAgIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkoKTsKLSAgICBpZiAo
bV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm47Ci0KLSAgICBF
R0xpbnQgbnVtYmVyT2ZDb25maWdzOwotICAgIGlmICghZWdsQ2hvb3NlQ29uZmlnKG1fZWdsRGlz
cGxheSwgY29uZmlnQXR0cmlidXRlcywgJm1fZWdsQ29uZmlnLCAxLCAmbnVtYmVyT2ZDb25maWdz
KSB8fCBudW1iZXJPZkNvbmZpZ3MgIT0gMSkgewotICAgICAgICBnX3dhcm5pbmcoIlBsYXRmb3Jt
RGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBmaW5kIHRoZSBkZXNpcmVk
IEVHTCBjb25maWd1cmF0aW9uLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9l
Z2xDb25maWdDaG9zZW4gPSB0cnVlOwogfQogCi1QbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZCgpCit2b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJlZ2lz
dHJ5R2xvYmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSkKIHsKLSAgICBp
ZiAobV93ZWJraXRndGspCi0gICAgICAgIHdsX3dlYmtpdGd0a19kZXN0cm95KG1fd2Via2l0Z3Rr
KTsKLSAgICBpZiAobV9jb21wb3NpdG9yKQotICAgICAgICB3bF9jb21wb3NpdG9yX2Rlc3Ryb3ko
bV9jb21wb3NpdG9yKTsKLSAgICBpZiAobV9yZWdpc3RyeSkKLSAgICAgICAgd2xfcmVnaXN0cnlf
ZGVzdHJveShtX3JlZ2lzdHJ5KTsKLSAgICBpZiAobV9kaXNwbGF5KQotICAgICAgICB3bF9kaXNw
bGF5X2Rpc2Nvbm5lY3QobV9kaXNwbGF5KTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRT
dXJmYWNlPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKGNvbnN0IEludFNp
emUmIHNpemUsIGludCB3aWRnZXRJZCkKLXsKLSAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogd2xTdXJm
YWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0b3IpOwotICAgIC8v
IFdlIGtlZXAgdGhlIG1pbmltdW0gc2l6ZSBhdCAxeDFweCBzaW5jZSBNZXNhIHJldHVybnMgbnVs
bCB2YWx1ZXMgaW4gd2xfZWdsX3dpbmRvd19jcmVhdGUoKSBmb3IgemVybyB3aWR0aCBvciBoZWln
aHQuCi0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3cgPSB3bF9lZ2xfd2luZG93
X2NyZWF0ZSh3bFN1cmZhY2UsIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEs
IHNpemUuaGVpZ2h0KCkpKTsKLQotICAgIHdsX3dlYmtpdGd0a19zZXRfc3VyZmFjZV9mb3Jfd2lk
Z2V0KG1fd2Via2l0Z3RrLCB3bFN1cmZhY2UsIHdpZGdldElkKTsKLSAgICB3bF9kaXNwbGF5X3Jv
dW5kdHJpcChtX2Rpc3BsYXkpOwotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F5bGFu
ZFN1cmZhY2U+KHdsU3VyZmFjZSwgbmF0aXZlV2luZG93KTsKKyAgICBpZiAoIXN0ZDo6c3RyY21w
KGludGVyZmFjZSwgIndsX2NvbXBvc2l0b3IiKSkKKyAgICAgICAgbV9jb21wb3NpdG9yLnJlc2V0
KHN0YXRpY19jYXN0PHN0cnVjdCB3bF9jb21wb3NpdG9yKj4od2xfcmVnaXN0cnlfYmluZChtX3Jl
Z2lzdHJ5LmdldCgpLCBuYW1lLCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEpKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNy
ZWF0ZVNoYXJpbmdHTENvbnRleHQoKQorV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IFBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZVN1cmZhY2UoKSBjb25zdAogewotICAgIGNsYXNz
IE9mZnNjcmVlbkNvbnRleHREYXRhIDogcHVibGljIEdMQ29udGV4dDo6RGF0YSB7Ci0gICAgcHVi
bGljOgotICAgICAgICB2aXJ0dWFsIH5PZmZzY3JlZW5Db250ZXh0RGF0YSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveShuYXRpdmVXaW5kb3cpOwotICAgICAg
ICAgICAgd2xfc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3RydWN0IHdsX3N1cmZhY2UqIHN1cmZhY2U7Ci0gICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUg
bmF0aXZlV2luZG93OwotICAgIH07Ci0KLSAgICBhdXRvIGNvbnRleHREYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxPZmZzY3JlZW5Db250ZXh0RGF0YT4oKTsKLSAgICBjb250ZXh0RGF0YS0+c3VyZmFj
ZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9yKTsKLSAgICBjb250
ZXh0RGF0YS0+bmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUoY29udGV4dERhdGEt
PnN1cmZhY2UsIDEsIDEpOworICAgIGlmICghbV9jb21wb3NpdG9yKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gbmF0aXZlV2luZG93ID0gY29udGV4dERhdGEtPm5hdGl2ZVdp
bmRvdzsKLSAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG5hdGl2
ZVdpbmRvdywgbnVsbHB0ciwgV1RGTW92ZShjb250ZXh0RGF0YSkpOworICAgIHJldHVybiBXbFVu
aXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4od2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZSht
X2NvbXBvc2l0b3IuZ2V0KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaAppbmRleCA0Y2M5MDQ0Li5jMTY1ODJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlz
cGxheVdheWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaApAQCAtMjksNDggKzI5LDM0IEBACiAjaWYgUExB
VEZPUk0oV0FZTEFORCkKIAogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgotI2luY2x1ZGUg
IldlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlICJXbFVuaXF1ZVB0ci5oIgogI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+Ci0jaW5j
bHVkZSA8d2F5bGFuZC1lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdsLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgR0xDb250ZXh0RUdMOwotY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFdh
eWxhbmRTdXJmYWNlOwotCi1jbGFzcyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIGZpbmFsOiBwdWJs
aWMgUGxhdGZvcm1EaXNwbGF5IHsKK2NsYXNzIFBsYXRmb3JtRGlzcGxheVdheWxhbmQgOiBwdWJs
aWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+IGNyZWF0ZSgpOworICAgIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQoc3RydWN0IHdsX2Rpc3BsYXkqKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlX
YXlsYW5kKCk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogbmF0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwbGF5OyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZFN1cmZhY2U+IGNy
ZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYsIGludCB3aWRnZXRJRCk7Ci0KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCk7CisgICAgV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIG1fcmVn
aXN0cnlMaXN0ZW5lcjsKLSAgICBzdGF0aWMgdm9pZCBnbG9iYWxDYWxsYmFjayh2b2lkKiBkYXRh
LCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2UsIHVpbnQzMl90IHZlcnNpb24pOwotICAgIHN0YXRpYyB2b2lkIGdsb2JhbFJlbW92ZUNhbGxi
YWNrKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90IG5hbWUpOworICAg
IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgc19yZWdpc3RyeUxpc3Rl
bmVyOwogCi0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSopOwor
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6V2F5bGFuZDsgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNoZWNrIGFsc28g
Zm9yIG1fd2Via2l0Z3RrIG9uY2UgdGhlIFVJUHJvY2VzcyBlbWJlZGRlZCBXYXlsYW5kIHN1YmNv
bXBvc2l0ZXIgaXMgaW1wbGVtZW50ZWQuCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1
cm4gbV9jb21wb3NpdG9yICYmIG1fZWdsRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiBtX2Vn
bENvbmZpZ0Nob3NlbjsgfQorcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQo
KSA9IGRlZmF1bHQ7CisgICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9kaXNwbGF5Kik7CiAK
LSAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0cnlHbG9iYWwoY29uc3Qg
Y2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCBuYW1lKTsKIAogICAgIHN0cnVjdCB3bF9kaXNwbGF5
KiBtX2Rpc3BsYXk7Ci0gICAgc3RydWN0IHdsX3JlZ2lzdHJ5KiBtX3JlZ2lzdHJ5OwotICAgIHN0
cnVjdCB3bF9jb21wb3NpdG9yKiBtX2NvbXBvc2l0b3I7Ci0gICAgc3RydWN0IHdsX3dlYmtpdGd0
ayogbV93ZWJraXRndGs7Ci0KLSAgICBFR0xDb25maWcgbV9lZ2xDb25maWc7Ci0gICAgYm9vbCBt
X2VnbENvbmZpZ0Nob3NlbjsKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfcmVnaXN0cnk+IG1f
cmVnaXN0cnk7CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX2NvbXBvc2l0b3I+IG1fY29tcG9z
aXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291
cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyYWQyZi4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVu
dFNvdXJjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXYXlsYW5kRXZlbnRTb3VyY2UuaCIKLQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR0xpYlNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAg
dm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9kaXNwbGF5Kik7Ci0KLSAgICBnYm9vbGVhbiBjaGVj
aygpOwotICAgIGdib29sZWFuIGRpc3BhdGNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgR1NvdXJjZSBt
X3NvdXJjZTsKLSAgICBHUG9sbEZEIG1fcG9sbEZpbGVEZXNjcmlwdG9yOwotICAgIHN0cnVjdCB3
bF9kaXNwbGF5KiBtX2Rpc3BsYXk7Ci19OwotCi12b2lkIEdMaWJTb3VyY2U6OmluaXRpYWxpemUo
c3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCi17Ci0gICAgbV9kaXNwbGF5ID0gZGlzcGxheTsK
LSAgICBzdHJ1Y3Qgd2xfZXZlbnRfbG9vcCogbG9vcCA9IHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xv
b3AoZGlzcGxheSk7Ci0gICAgbV9wb2xsRmlsZURlc2NyaXB0b3IuZmQgPSB3bF9ldmVudF9sb29w
X2dldF9mZChsb29wKTsKLSAgICBtX3BvbGxGaWxlRGVzY3JpcHRvci5ldmVudHMgPSBHX0lPX0lO
IHwgR19JT19FUlIgfCBHX0lPX0hVUDsKLSAgICBnX3NvdXJjZV9hZGRfcG9sbCgmbV9zb3VyY2Us
ICZtX3BvbGxGaWxlRGVzY3JpcHRvcik7Ci0KLSAgICBnX3NvdXJjZV9zZXRfbmFtZSgmbV9zb3Vy
Y2UsICJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgZXZlbnQgc291cmNlIik7Ci0g
ICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KCZtX3NvdXJjZSwgR19QUklPUklUWV9ERUZBVUxUKTsK
LSAgICBnX3NvdXJjZV9zZXRfY2FuX3JlY3Vyc2UoJm1fc291cmNlLCBUUlVFKTsKLSAgICBnX3Nv
dXJjZV9hdHRhY2goJm1fc291cmNlLCBudWxscHRyKTsKLX0KLQotZ2Jvb2xlYW4gR0xpYlNvdXJj
ZTo6Y2hlY2soKQotewotICAgIHJldHVybiBtX3BvbGxGaWxlRGVzY3JpcHRvci5yZXZlbnRzOwot
fQotCi1nYm9vbGVhbiBHTGliU291cmNlOjpkaXNwYXRjaCgpCi17Ci0gICAgaWYgKG1fcG9sbEZp
bGVEZXNjcmlwdG9yLnJldmVudHMgJiBHX0lPX0lOKSB7Ci0gICAgICAgIHN0cnVjdCB3bF9ldmVu
dF9sb29wKiBsb29wID0gd2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChtX2Rpc3BsYXkpOwotICAg
ICAgICB3bF9ldmVudF9sb29wX2Rpc3BhdGNoKGxvb3AsIC0xKTsKLSAgICAgICAgd2xfZGlzcGxh
eV9mbHVzaF9jbGllbnRzKG1fZGlzcGxheSk7Ci0gICAgICAgIG1fcG9sbEZpbGVEZXNjcmlwdG9y
LnJldmVudHMgPSAwOwotICAgIH0KLQotICAgIGlmIChtX3BvbGxGaWxlRGVzY3JpcHRvci5yZXZl
bnRzICYgKEdfSU9fRVJSIHwgR19JT19IVVApKQotICAgICAgICBnX3dhcm5pbmcoIldheWxhbmQg
RGlzcGxheSBFdmVudCBTb3VyY2U6IGxvc3QgY29ubmVjdGlvbiB0byBuZXN0ZWQgV2F5bGFuZCBj
b21wb3NpdG9yIik7Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHBy
ZXBhcmVDYWxsYmFjayhHU291cmNlKiwgZ2ludCogdGltZW91dCkKLXsKLSAgICAqdGltZW91dCA9
IC0xOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuIGNoZWNrQ2FsbGJh
Y2soR1NvdXJjZSogYmFzZSkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHJldHVybiBzb3VyY2UtPmNoZWNrKCk7Ci19Ci0KLXN0
YXRpYyBnYm9vbGVhbiBkaXNwYXRjaENhbGxiYWNrKEdTb3VyY2UqIGJhc2UsIEdTb3VyY2VGdW5j
LCBncG9pbnRlcikKLXsKLSAgICBhdXRvIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpYlNv
dXJjZSo+KGJhc2UpOwotICAgIHJldHVybiBzb3VyY2UtPmRpc3BhdGNoKCk7Ci19Ci0KLXN0YXRp
YyBHU291cmNlRnVuY3Mgd2F5bGFuZEdMaWJTb3VyY2VGdW5jcyA9IHsKLSAgICBwcmVwYXJlQ2Fs
bGJhY2ssCi0gICAgY2hlY2tDYWxsYmFjaywKLSAgICBkaXNwYXRjaENhbGxiYWNrLAotICAgIG51
bGxwdHIsIC8vIGZpbmFsaXplCi0gICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjawotICAg
IG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hhbGwKLX07Ci0KLUdTb3VyY2UqIFdheWxhbmRFdmVu
dFNvdXJjZTo6Y3JlYXRlRGlzcGxheUV2ZW50U291cmNlKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNw
bGF5KQotewotICAgIEdTb3VyY2UqIGJhc2UgPSBnX3NvdXJjZV9uZXcoJndheWxhbmRHTGliU291
cmNlRnVuY3MsIHNpemVvZihHTGliU291cmNlKSk7Ci0KLSAgICBhdXRvIHNvdXJjZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHNvdXJjZS0+aW5pdGlhbGl6ZShk
aXNwbGF5KTsKLQotICAgIHJldHVybiBiYXNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZDE2NjIuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdheWxhbmRFdmVudFNvdXJjZV9oCi0jZGVm
aW5lIFdheWxhbmRFdmVudFNvdXJjZV9oCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi0jaW5j
bHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgV2F5bGFuZEV2ZW50U291cmNlIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgR1NvdXJjZSogY3JlYXRlRGlzcGxheUV2ZW50U291cmNlKHN0cnVjdCB3bF9kaXNwbGF5Kik7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlM
QU5EKQotCi0jZW5kaWYgLy8gV2F5bGFuZEV2ZW50U291cmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MWFiMTkuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldh
eWxhbmRTdXJmYWNlLmgiCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi0jaW5jbHVkZSAiR0xD
b250ZXh0RUdMLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlz
cGxheVdheWxhbmQuaCIKLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdm9pZCBmcmFtZUNhbGxiYWNrKHZvaWQqLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGNhbGxi
YWNrLCB1aW50MzJfdCkKLXsKLSAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgIHdsX2NhbGxiYWNr
X2Rlc3Ryb3koY2FsbGJhY2spOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNr
X2xpc3RlbmVyIGZyYW1lTGlzdGVuZXIgPSB7Ci0gICAgZnJhbWVDYWxsYmFjawotfTsKLQotV2F5
bGFuZFN1cmZhY2U6OldheWxhbmRTdXJmYWNlKHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2Us
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93KQotICAgIDogbV93bFN1cmZhY2Uod2xT
dXJmYWNlKQotICAgICwgbV9uYXRpdmVXaW5kb3cobmF0aXZlV2luZG93KQotewotfQotCi1XYXls
YW5kU3VyZmFjZTo6fldheWxhbmRTdXJmYWNlKCkKLXsKLSAgICAvLyBUaGUgc3VyZmFjZSBjb3Vs
ZG4ndCBoYXZlIGJlZW4gY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UgaWYgV2F5bGFuZERpc3Bs
YXkgd2Fzbid0IHByb3Blcmx5IGluaXRpYWxpemVkLgotICAgIGNvbnN0IFBsYXRmb3JtRGlzcGxh
eVdheWxhbmQmIHdheWxhbmREaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZD4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOwotICAgIEFTU0VSVCh3YXlsYW5k
RGlzcGxheS5uYXRpdmUoKSk7Ci0gICAgZWdsTWFrZUN1cnJlbnQod2F5bGFuZERpc3BsYXkubmF0
aXZlKCksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwot
Ci0gICAgd2xfZWdsX3dpbmRvd19kZXN0cm95KG1fbmF0aXZlV2luZG93KTsKLSAgICB3bF9zdXJm
YWNlX2Rlc3Ryb3kobV93bFN1cmZhY2UpOwotfQotCi12b2lkIFdheWxhbmRTdXJmYWNlOjpyZXNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX25h
dGl2ZVdpbmRvdywgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCAwKTsKLX0KLQotc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29udGV4
dCgpCi17Ci0gICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChtX25h
dGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKLX0KLQotdm9pZCBXYXls
YW5kU3VyZmFjZTo6cmVxdWVzdEZyYW1lKCkKLXsKLSAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGZy
YW1lQ2FsbGJhY2sgPSB3bF9zdXJmYWNlX2ZyYW1lKG1fd2xTdXJmYWNlKTsKLSAgICB3bF9jYWxs
YmFja19hZGRfbGlzdGVuZXIoZnJhbWVDYWxsYmFjaywgJmZyYW1lTGlzdGVuZXIsIHRoaXMpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5E
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9X
YXlsYW5kU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XYXlsYW5kU3VyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWYyMmIx
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQv
V2F5bGFuZFN1cmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmICBXYXlsYW5kU3Vy
ZmFjZV9oCi0jZGVmaW5lICBXYXlsYW5kU3VyZmFjZV9oCi0KLSNpZiBQTEFURk9STShXQVlMQU5E
KQotCi0jaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLQotI2luY2x1ZGUgPHdheWxhbmQtZWds
Lmg+Ci0jaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgR0xDb250ZXh0RUdMOwotY2xhc3MgSW50U2l6ZTsKLQotY2xhc3MgV2F5bGFuZFN1
cmZhY2UgewotcHVibGljOgotICAgIFdheWxhbmRTdXJmYWNlKHN0cnVjdCB3bF9zdXJmYWNlKiwg
RUdMTmF0aXZlV2luZG93VHlwZSk7Ci0gICAgfldheWxhbmRTdXJmYWNlKCk7Ci0KLSAgICBzdHJ1
Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSgpIHsgcmV0dXJuIG1fd2xTdXJmYWNlOyB9Ci0gICAgRUdM
TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3dIYW5kbGUoKSB7IHJldHVybiBtX25hdGl2ZVdp
bmRvdzsgfQotCi0gICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlR0xDb250ZXh0KCk7Ci0KLSAgICB2b2lkIHJl
cXVlc3RGcmFtZSgpOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBtX3dsU3Vy
ZmFjZTsKLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG1fbmF0aXZlV2luZG93OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKLQotI2Vu
ZGlmIC8vIFdheWxhbmRTdXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnhtbCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFu
ZENsaWVudFByb3RvY29sLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxYTkz
Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwz
NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb3Rv
Y29sIG5hbWU9IndsX3dlYmtpdGd0ayI+Ci0KLSAgPGNvcHlyaWdodD4KLSAgICBDb3B5cmlnaHQg
wqkgMjAxNCBJZ2FsaWEgUy5MLgotCi0gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlm
eSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcwotICAgIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1l
bnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQKLSAgICB3aXRob3V0IGZl
ZSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4KLSAg
ICBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24KLSAgICBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlv
biwgYW5kIHRoYXQgdGhlIG5hbWUgb2YKLSAgICB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm90IGJl
IHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5Ci0gICAgcGVydGFpbmluZyB0byBkaXN0
cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCi0gICAgd3JpdHRlbiBw
cmlvciBwZXJtaXNzaW9uLiAgVGhlIGNvcHlyaWdodCBob2xkZXJzIG1ha2Ugbm8KLSAgICByZXBy
ZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFu
eQotICAgIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBv
ciBpbXBsaWVkCi0gICAgd2FycmFudHkuCi0KLSAgICBUSEUgQ09QWVJJR0hUIEhPTERFUlMgRElT
Q0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUwotICAgIFNPRlRXQVJFLCBJ
TkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5ECi0g
ICAgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gICAgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIE9SIEFOWSBEQU1BR0VTCi0gICAgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9G
IFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOCi0gICAgQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwKLSAgICBBUklTSU5HIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRgotICAg
IFRISVMgU09GVFdBUkUuCi0gIDwvY29weXJpZ2h0PgotCi0gIDxpbnRlcmZhY2UgbmFtZT0id2xf
d2Via2l0Z3RrIiB2ZXJzaW9uPSIxIj4KLSAgICA8cmVxdWVzdCBuYW1lPSJzZXRfc3VyZmFjZV9m
b3Jfd2lkZ2V0Ij4KLSAgICAgIDxhcmcgbmFtZT0ic3VyZmFjZSIgdHlwZT0ib2JqZWN0IiBpbnRl
cmZhY2U9IndsX3N1cmZhY2UiLz4KLSAgICAgIDxhcmcgbmFtZT0iaWQiIHR5cGU9InVpbnQiLz4K
LSAgICA8L3JlcXVlc3Q+Ci0KLSAgPC9pbnRlcmZhY2U+Ci0KLTwvcHJvdG9jb2w+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dsVW5pcXVlUHRy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dsVW5pcXVlUHRy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjMzAwNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2xVbmlx
dWVQdHIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2lu
Y2x1ZGUgPHdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2
ZXItY29yZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgV2xQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcHRyKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dXNpbmcgV2xVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgV2xQdHJEZWxldGVyPFQ+PjsK
KworI2RlZmluZSBGT1JfRUFDSF9XQVlMQU5EX0RFTEVURVIobWFjcm8pIFwKKyAgICBtYWNybyhz
dHJ1Y3Qgd2xfZGlzcGxheSwgd2xfZGlzcGxheV9kZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0
IHdsX2dsb2JhbCwgd2xfZ2xvYmFsX2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfc3Vy
ZmFjZSwgd2xfc3VyZmFjZV9kZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX2NvbXBvc2l0
b3IsIHdsX2NvbXBvc2l0b3JfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9yZWdpc3Ry
eSwgd2xfcmVnaXN0cnlfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9wcm94eSwgd2xf
cHJveHlfZGVzdHJveSkKKworI2RlZmluZSBERUZJTkVfV0FZTEFORF9ERUxFVEVSKHR5cGVOYW1l
LCBkZWxldGVyRnVuYykgXAorICAgIHRlbXBsYXRlPD4gc3RydWN0IFdsUHRyRGVsZXRlcjx0eXBl
TmFtZT4gXAorICAgIHsgXAorICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIp
IGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBpZiAocHRyKSBcCisgICAgICAgICAg
ICAgICAgZGVsZXRlckZ1bmMocHRyKTsgXAorICAgICAgICB9IFwKKyAgICB9OworCitGT1JfRUFD
SF9XQVlMQU5EX0RFTEVURVIoREVGSU5FX1dBWUxBTkRfREVMRVRFUikKKyN1bmRlZiBGT1JfRUFD
SF9XQVlMQU5EX0RFTEVURVIKKyN1bmRlZiBERUZJTkVfV0FZTEFORF9ERUxFVEVSCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggYThlNGYzMy4uNmM0N2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3
b3JrIGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSB0byB0aGUgbmV3IEdMQ29udGV4dCBBUEkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJs
ZSk6CisKIDIwMTYtMDgtMTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdW51c2VkIGluY2x1ZGVzIG9mIHd0ZiBoZWFkZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKaW5kZXggOWEyNmQ5Mi4uMTc4MTdiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUoKQogCiAgICAgLy8gVGhl
IGNyZWF0aW9uIG9mIHRoZSBUZXh0dXJlTWFwcGVyIG5lZWRzIGFuIGFjdGl2ZSBPcGVuR0wgY29u
dGV4dC4KICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0
OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KG1fd2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250
ZXh0KCkpOworICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3cobV93aW5kb3cpOwogCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsK
QEAgLTI4Miw3ICsyODIsNyBAQCBib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gQ3JlYXRlIEdMIGNvbnRleHQuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh0
ZXN0V2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRl
eHRGb3JXaW5kb3codGVzdFdpbmRvdyk7CiAKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAg
OjpEZXN0cm95V2luZG93KHRlc3RXaW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDllYTBlYTMuLjBmYTI3
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTUgQEAKKzIwMTYtMDgtMTYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFjY2VsZXJh
dGVkIGNvbXBvc2l0aW5nIGRvZXMgbm90IHdvcmsgaW4gV2F5bGFuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgaW5pdGlhbCBpbXBs
ZW1lbnRhdGlvbiBvZiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzdXBwb3J0IGluIFdheWxhbmQg
Zm9yIHRoZSBHVEsrIHBvcnQuIEl0J3MgYmFzZWQKKyAgICAgICAgb24gcHJldmlvdXMgcGF0Y2hl
cyB3cml0dGVuIGJ5IElhZ28gVG9yYWwsIMW9YW4gRG9iZXLFoWVrLCBFbWFudWVsZSBBaW5hIGFu
ZCBFbWlsaW8gUG96dWVsbyBNb25mb3J0LgorCisgICAgICAgIFRoZSBleGlzdGluZyBXZWJLaXRH
VEsrIFdheWxhbmQgaW50ZXJmYWNlIHByZXZpb3VzbHkgYWRkZWQgZm9yIHRoaXMgdG8gV2ViQ29y
ZSBoYXMgYmVlbiBtb3ZlZCB0byB0aGUgV2ViS2l0MgorICAgICAgICBsYXllciwgc2luY2UgaXQn
cyBhY3R1YWxseSBzcGVjaWZpYyB0byBXZWJLaXQyLCBhbmQgaXQncyBub3cgYWN0dWFsbHkgdXNl
ZC4gVGhlIFVJIHByb2Nlc3MgcnVucyBhIG5lc3RlZCBXYXlsYW5kCisgICAgICAgIGNvbXBvc2l0
b3IgdGhhdCB3ZWIgcHJvY2Vzc2VzIGNvbm5lY3QgdG8uIFdlYiBwcm9jZXNzZXMgY3JlYXRlIGEg
V2F5bGFuZCBzdXJmYWNlIGluIHRoZSBuZXN0ZWQgY29tcG9zaXRvciBmb3IKKyAgICAgICAgdGhl
IHdlYiBwYWdlLCBhbmQgdXNpbmcgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBwcm90b2NvbCBpbnRl
cmZhY2UgdGhleSB0ZWxsIHRoZSBuZXN0ZWQgY29tcG9zaXRvciB0aGUgd2ViIHBhZ2UKKyAgICAg
ICAgYXNzb2NpYXRlZCB0byB0aGUgc3VyZmFjZS4gQSBXYXlsYW5kIHdpbmRvdyBpcyBjcmVhdGVk
IGZvciB0aGF0IHN1cmZhY2UgdGhhdCBpcyB0aGVuIHVzZWQgYXMgdGhlIG5hdGl2ZSB3aW5kb3cK
KyAgICAgICAgaGFuZGxlIGZvciBjb21wb3NpdGluZy4gVG8gY29tbXVuaWNhdGUgd2l0aCB0aGUg
bmVzdGVkIGNvbXBvc2l0b3IgYW5kIHRvIGVuc3VyZSBhbGwgR0wgb3BlcmF0aW9ucyBoYXBwZW4g
aW4gdGhlCisgICAgICAgIG5lc3RlZCBjb21wb3NpdG9yIGRpc3BsYXksIHRoZSB3ZWIgcHJvY2Vz
cyBjcmVhdGVzIGEgV2F5bGFuZCBkaXNwbGF5IHRoYXQgY29ubmVjdHMgdG8gdGhlIG5lc3RlZCBj
b21wb3NpdG9yLAorICAgICAgICB1c2VzIHRoZSBXZWJLaXRHVEsrIFdheWxhbmQgaW50ZXJmYWNl
IGFuZCBpdCdzIHNldCBhcyB0aGUgZ2xvYmFsIHNoYXJlZCBkaXNwbGF5IGZvciBjb21wb3NpdGlu
Zy4KKworICAgICAgICBUaGUgbmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjcmVhdGVzIGEgbmV3
IGRpc3BsYXkgd2l0aCBhIHVuaXF1ZSBuYW1lIHRoYXQgaXMgc2VudCB0byB0aGUgd2ViIHByb2Nl
c3NlcyBhdAorICAgICAgICBzdGFydCB1cC4gSXQgaW1wbGVtZW50cyB0aGUgV2F5bGFuZCBzdXJm
YWNlIGludGVyZmFjZSB0byBoYW5kbGUgdGhlIFdheWxhbmQgYnVmZmVycyBjcmVhdGVkIGZvciBl
dmVyeSBzdXJmYWNlCisgICAgICAgIGFuZCBzY2hlZHVsaW5nIHJlZHJhd3Mgb24gdGhlIHdlYiBw
YWdlcyB3aGVuIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZS4gSXQgdXNlcyB0aGUgV2ViS2l0R1RLKyBX
YXlsYW5kIGludGVyZmFjZSB0bworICAgICAgICBhc3NvY2lhdGUgdGhlIHN1cmZhY2VzIHRvIGEg
cGFydGljdWxhciB3ZWIgcGFnZS4gQSB0ZXh0dXJlIGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IHN1cmZh
Y2UgYW5kIHVwZGF0ZWQgd2l0aCB0aGUKKyAgICAgICAgV2F5bGFuZCBidWZmZXIgY29udGVudHMg
dXNpbmcgYW4gRUdMSW1hZ2VLSFIgYW5kIGVnbEltYWdlVGFyZ2V0VGV4dHVyZTJkIEFQSS4KKwor
ICAgICAgICBUbyBhYnN0cmFjdCB0aGUgcGxhdGZvcm0gZGlmZmVyZW5jZXMgYW5kIGF2b2lkIGlm
ZGVmcyBhcyBtdWNoIGFzIHBvc3NpYmxlLCBuZXcgYWJzdHJhY3QgY2xhc3NlcyBoYXZlIGJlZW4g
YWRkZWQKKyAgICAgICAgdG8gcmVwcmVzZW50IHRoZSBzdXJmYWNlcyB1c2VkIGluIGFjY2VsZXJh
dGVkIGNvbXBvc2l0aW5nLiBBY2NlbGVyYXRlZFN1cmZhY2UgaXMgdXNlZCBieSB0aGUgd2ViIHBy
b2Nlc3MgYW5kCisgICAgICAgIHJlcHJlc2VudHMgdGhlIHN1cmZhY2Ugd2hlcmUgY29udGVudHMg
YXJlIHJlbmRlcmVkIGludG8uIFRoZSBYMTEgaW1wbGVtZW50YXRpb24gaXMgdGhlIHJlZGlyZWN0
ZWQgWENvbXBvc2l0ZQorICAgICAgICB3aW5kb3csIGFuZCB0aGUgV2F5bGFuZCBpbXBsZW1lbnRh
dGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBwcmV2aW91cyBXYXlsYW5kIHN1cmZhY2UgYWRkZWQg
dG8gV2ViQ29yZSBidXQgbmV2ZXIKKyAgICAgICAgdXNlZC4gSW4gdGhlIFVJIHByb2Nlc3MgdGhl
IHdlYiB2aWV3IGNyZWF0ZXMgYW4gYWJzdHJhY3QgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgdGhh
dCBpcyB1c2VkIHRvIHJlbmRlciB0aGUKKyAgICAgICAgQWNjZWxlcmF0ZWRTdXJmYWNlIGludG8g
dGhlIHdlYiB2aWV3IHVzaW5nIGNhaXJvLiBUaGUgWDExIGltcGxlbWVudGF0aW9uIGNyZWF0ZXMg
dGhlIGNhaXJvIHN1cmZhY2UgZm9yIHRoZQorICAgICAgICByZWRpcmVjdGVkIFhDb21wb3NpdGUg
d2luZG93IHBpeG1hcCBhbmQgdXNlcyBYRGFtYWdlIGV4dGVuc2lvbiB0byBzY2hlZHVsZSByZWRy
YXdzLiBUaGUgV2F5bGFuZCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBhc2tzIHRoZSBuZXN0ZWQg
V2F5bGFuZCBjb21wb3NpdG9yIGZvciB0aGUgdGV4dHVyZSBhc3NvY2lhdGVkIHRvIHRoZSB3ZWIg
dmlldyBwYWdlLgorCisgICAgICAgIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG5vdyBhbHdh
eXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIGJvdGggWDExIGFuZCBXYXlsYW5kLCB1bmxlc3MgaXQn
cyBleHBsaWNpdGx5CisgICAgICAgIGRpc2FibGVkIGJ5IHRoZSB1c2VyIHVzaW5nIHRoZSBXRUJL
SVRfRElTQUJMRV9DT01QT1NJVElOR19NT0RFIGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBpZiBh
bnkgZXh0ZW5zaW9uIG9yCisgICAgICAgIGZlYXR1cmUgcmVxdWlydGVkIGJ5IFgxMSBvciBXYXls
YW5kIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OmdsQ29udGV4dCk6IFBhc3MgdGhlIHNoYXJlZCBkaXNwbGF5IGZv
ciBjb21wb3NpdGluZyB0byBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coKQorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKTogRW5jb2RlIHdh
eWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IG5hbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6IERlY29kZSB3YXlsYW5kIGNvbXBvc2l0b3Ig
ZGlzcGxheSBuYW1lLgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6IEFkZCB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lIGluaXRpYWwgcGFyYW1l
dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZURyYXcpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOiBJbml0aWFsaXplIHRoZSB3YXlsYW5k
IGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lIGluaXRpYWwgcGFyYW1ldGVyLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjp+QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFp
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjp1cGRhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3Rp
Zmllcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlmaWVyOjphZGQp
OgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6ZmlsdGVyWERhbWFnZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6WERhbWFnZU5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVgxMTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTE6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKToKKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6On5BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp1
cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFp
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Z2V0T3JDcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp+QnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6ZGVzdHJveUxpc3RlbmVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1
c2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1bnVzZSk6
CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZUltYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6c2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpTdXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6On5TdXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6Om1ha2VQZW5kaW5nQnVm
ZmVyQ3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNl
OjphdHRhY2hCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6
OlN1cmZhY2U6OnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
YXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6Y29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2F5
bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0wpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVX
YXlsYW5kTG9vcFNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpX
YXlsYW5kQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpn
ZXRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmJpbmRTdXJm
YWNlVG9XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OnJlZ2lz
dGVyV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjp1bnJlZ2lz
dGVyV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3Jl
YXRlV2Vha1B0cik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNl
OjpzZXRXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmlzUnVu
bmluZyk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpkaXNwbGF5TmFtZSk6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAg
ICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRh
dGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVy
YXRlZFN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJm
YWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OkFjY2Vs
ZXJhdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6fkFj
Y2VsZXJhdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6
cmVzaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjp3aW5k
b3cpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OnN1cmZhY2VJRCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5k
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndheWxhbmRDb21wb3NpdG9yRGlzcGxheSk6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OkFjY2VsZXJhdGVkU3Vy
ZmFjZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5k
Ojp+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkU3VyZmFjZVdheWxhbmQ6OnJlc2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6QWNjZWxlcmF0
ZWRTdXJmYWNlWDExKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjp+
QWNjZWxlcmF0ZWRTdXJmYWNlWDExKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJm
YWNlWDExOjpyZXNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxl
cmF0ZWRTdXJmYWNlWDExLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmguCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayk6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUhvc3RHdGs6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dEd0azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OlJlbmRlckZyYW1lU2NoZWR1
bGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IEluaXRpYWxpemUg
dGhlIHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IG5hbWUuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndheWxhbmRDb21w
b3NpdG9yRGlzcGxheU5hbWUpOiBSZXR1cm4gdGhlIHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5
IG5hbWUuCisKIDIwMTYtMDgtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPUyBXSzJdIERvbid0IHRocm93IHRvdWNoTW92ZSBldmVudHMgb24g
dGhlIGZsb29yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDc4ODk2NjQuLjJmZTlmNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yOTUsMTMgKzI5NSwxNiBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL2dzdHJl
YW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCiAKKyAgICBVSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlLmNwcAorICAgIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kLmNwcAorICAgIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTEuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL2d0ay9FeHBlcmltZW50YWxGZWF0dXJlcy5jcHAKICAgICBVSVByb2Nlc3Mv
Z3RrL0dlc3R1cmVDb250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RG
aWx0ZXIuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKICAg
ICBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAotICAgIFVJUHJvY2Vzcy9ndGsvWERh
bWFnZU5vdGlmaWVyLmNwcAorICAgIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
CiAgICAgVUlQcm9jZXNzL2d0ay9XZWJDb2xvclBpY2tlckd0ay5jcHAKICAgICBVSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9XZWJGdWxs
U2NyZWVuQ2xpZW50R3RrLmNwcApAQCAtMzUwLDggKzM1MywxMCBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9nc3RyZWFtZXIvV2ViUGFnZUdT
dHJlYW1lci5jcHAKIAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJm
YWNlLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgx
MS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTM2OCw2ICszNzMsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX0RFUklWRURfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJ
VDJHVEtfRElSfS9JbnNwZWN0b3JHUmVzb3VyY2VCdW5kbGUuYwogICAgICR7REVSSVZFRF9TT1VS
Q0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQySW5zcGVjdG9yR1Jlc291cmNlQnVuZGxlLmMKICAg
ICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MlJlc291cmNlc0dSZXNv
dXJjZUJ1bmRsZS5jCisgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktp
dDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwogCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lU
MkdUS19BUElfRElSfS9XZWJLaXRFbnVtVHlwZXMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRNYXJzaGFsLmNwcApAQCAtNjg0LDYgKzY5MCwxNyBA
QCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgVkVSQkFUSU0KICkKIAoraWYgKEVOQUJMRV9XQVlM
QU5EX1RBUkdFVCkKKyAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgorICAgIGFkZF9j
dXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJH
VEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmMKKyAgICAgICAgREVQRU5EUyAk
e1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sCisgICAg
ICAgIENPTU1BTkQgd2F5bGFuZC1zY2FubmVyIHNlcnZlci1oZWFkZXIgPCAke1dFQktJVDJfRElS
fS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kU2VydmVyUHJvdG9jb2wuaAorICAgICAg
ICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBjbGllbnQtaGVhZGVyIDwgJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VT
X1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmgKKyAgICAgICAg
Q09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsv
V2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwgPiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RL
X0RJUn0vV2ViS2l0MldheWxhbmRDbGllbnRQcm90b2NvbC5jCisgICAgKQorZW5kaWYgKCkKKwog
aWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogICAgIHNldChQbHVnaW5Qcm9jZXNzR1RL
Ml9FWEVDVVRBQkxFX05BTUUgV2ViS2l0UGx1Z2luUHJvY2VzczIpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5k
ZXggMzQ1MjQyOC4uM2ExYjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAKICNpbmNsdWRlICJDb21wb3Np
dGluZ1J1bkxvb3AuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogI2lmIFVTRShPUEVOR0xf
RVNfMikKQEAgLTE5MCw3ICsxOTEsNyBAQCBHTENvbnRleHQqIFRocmVhZGVkQ29tcG9zaXRvcjo6
Z2xDb250ZXh0KCkKICAgICBpZiAoIW1fbmF0aXZlU3VyZmFjZUhhbmRsZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRG
b3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1fbmF0aXZlU3Vy
ZmFjZUhhbmRsZSksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgbV9jb250ZXh0
ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xO
YXRpdmVXaW5kb3dUeXBlPihtX25hdGl2ZVN1cmZhY2VIYW5kbGUpLCAmUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDFhMmIwZDUuLjViYjBkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTE0NSw2ICsxNDUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgT1MoTElO
VVgpCiAgICAgZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZU1vbml0b3JIYW5kbGU7CiAjZW5kaWYK
KworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgZW5jb2RlciA8PCB3YXlsYW5kQ29tcG9zaXRv
ckRpc3BsYXlOYW1lOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtMzA1LDYgKzMwOSwxMSBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgV2ViUHJvYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLndheWxh
bmRDb21wb3NpdG9yRGlzcGxheU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjOWFhMmM5Li44OGZiNDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKQEAgLTE3MCw2ICsxNzAsMTAgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgewogI2lmIE9TKExJTlVYKQogICAgIElQQzo6QXR0YWNobWVudCBtZW1vcnlQcmVz
c3VyZU1vbml0b3JIYW5kbGU7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAg
U3RyaW5nIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
S2l0MldheWxhbmRQcm90b2NvbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTI0NjEzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
V2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm90b2NvbCBuYW1lPSJ3bF93ZWJraXRndGsi
PgorCisgIDxjb3B5cmlnaHQ+CisgICAgQ29weXJpZ2h0IMKpIDIwMTQgSWdhbGlhIFMuTC4KKwor
ICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxs
IHRoaXMKKyAgICBzb2Z0d2FyZSBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3Nl
IGlzIGhlcmVieSBncmFudGVkCisgICAgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQgdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluCisgICAgYWxsIGNvcGllcyBhbmQgdGhhdCBi
b3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCisgICAgbm90aWNl
IGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9m
CisgICAgdGhlIGNvcHlyaWdodCBob2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9y
IHB1YmxpY2l0eQorICAgIHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljLAorICAgIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBj
b3B5cmlnaHQgaG9sZGVycyBtYWtlIG5vCisgICAgcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBz
dWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAgICBwdXJwb3NlLiAgSXQgaXMg
cHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorICAgIHdhcnJhbnR5
LgorCisgICAgVEhFIENPUFlSSUdIVCBIT0xERVJTIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJ
VEggUkVHQVJEIFRPIFRISVMKKyAgICBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAorICAgIEZJVE5FU1MsIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICAgIFNQRUNJ
QUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUworICAg
IFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywg
V0hFVEhFUiBJTgorICAgIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhF
UiBUT1JUSU9VUyBBQ1RJT04sCisgICAgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YKKyAgICBUSElTIFNPRlRXQVJFLgorICA8L2Nv
cHlyaWdodD4KKworICA8aW50ZXJmYWNlIG5hbWU9IndsX3dlYmtpdGd0ayIgdmVyc2lvbj0iMSI+
CisgICAgPHJlcXVlc3QgbmFtZT0iYmluZF9zdXJmYWNlX3RvX3BhZ2UiPgorICAgICAgPGFyZyBu
YW1lPSJzdXJmYWNlIiB0eXBlPSJvYmplY3QiIGludGVyZmFjZT0id2xfc3VyZmFjZSIvPgorICAg
ICAgPGFyZyBuYW1lPSJwYWdlX2lkIiB0eXBlPSJ1aW50Ii8+CisgICAgPC9yZXF1ZXN0PgorCisg
IDwvaW50ZXJmYWNlPgorCis8L3Byb3RvY29sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGFkMzgxNDAuLjA2
YWYwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3QmFzZS5oIgogCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJv
eHlJbXBsLmgiCiAjaW5jbHVkZSAiSW5wdXRNZXRob2RGaWx0ZXIuaCIKICNpbmNsdWRlICJLZXlC
aW5kaW5nVHJhbnNsYXRvci5oIgpAQCAtNzIsMjMgKzczLDEwIEBACiAjaW5jbHVkZSAiV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKLSNpbmNsdWRlICJYRGFtYWdlTm90aWZpZXIuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZVJl
c291cmNlLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9u
cy9YZGFtYWdlLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8teGxpYi5oPgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShYMTEpCiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
V0FZTEFORCkKLSNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgotI2VuZGlmCi0KIC8vIGd0a193
aWRnZXRfZ2V0X3NjYWxlX2ZhY3RvcigpIGFwcGVhcmVkIGluIEdUSyAzLjEwLCBidXQgd2UgYWxz
byBuZWVkCiAvLyB0byBtYWtlIHN1cmUgd2UgaGF2ZSBjYWlybyBuZXcgZW5vdWdoIHRvIHN1cHBv
cnQgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlCiAjZGVmaW5lIEhBVkVfR1RLX1NDQUxF
X0ZBQ1RPUiBIQVZFX0NBSVJPX1NVUkZBQ0VfU0VUX0RFVklDRV9TQ0FMRSAmJiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCAxMCwgMCkKQEAgLTIxMSwxMCArMTk5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUgewogICAgIHVuc2lnbmVkIHNjcmVlblNhdmVyQ29va2llOwogI2VuZGlm
CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZTsKLSAgICBYVW5pcXVl
RGFtYWdlIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlOwotI2VuZGlmCisgICAg
c3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlPiBhY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PERyYWdBbmREcm9wSGFuZGxlcj4gZHJhZ0FuZERyb3BIYW5kbGVyOwpAQCAtMzUxLDUwICszMzYs
NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5k
b3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZQogICAgICAgICBwcml2LT50b3BsZXZlbFdpbmRv
d1JlYWxpemVkSUQgPSBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQod2luZG93LCAicmVhbGl6ZSIs
IEdfQ0FMTEJBQ0sodG9wbGV2ZWxXaW5kb3dSZWFsaXplZCksIHdlYlZpZXdCYXNlKTsKIH0KIAot
I2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3LCBQaXhtYXAgcGl4bWFwKQotewotICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgIT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXctPnByaXY7Ci0gICAgaWYgKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNl
Ci0gICAgICAgICYmIGNhaXJvX3hsaWJfc3VyZmFjZV9nZXRfZHJhd2FibGUocHJpdi0+YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCkpID09IHBpeG1hcCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlKSB7Ci0gICAg
ICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZSkgewotICAg
ICAgICAgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5yZW1vdmUocHJpdi0+YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2UuZ2V0KCkpOwotICAgICAgICAgICAgcHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2UucmVzZXQoKTsKLSAgICAgICAgfQot
ICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZSA9IG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgaWYgKCFwaXhtYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIERyYXdpbmdB
cmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJ
bXBsKj4ocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKTsKLSAgICBpZiAoIWRyYXdpbmdB
cmVhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRTaXplIHNpemUgPSBkcmF3aW5nQXJlYS0+
c2l6ZSgpOwotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcHJpdi0+cGFnZVByb3h5LT5k
ZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwot
Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEFTU0VSVChkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
KS5uYXRpdmUoKSA9PSBHREtfRElTUExBWV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVs
dCgpKSk7Ci0gICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zpc3Vh
bChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIGlmICghdmlzdWFsKQotICAgICAgICB2
aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1
bHQoKSk7Ci0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UgPSBhZG9wdFJl
ZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgR0RLX1ZJU1VBTF9Y
VklTVUFMKHZpc3VhbCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIGNhaXJv
U3VyZmFjZVNldERldmljZVNjYWxlKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNl
LmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlID0gWERhbWFnZUNyZWF0ZShkaXNw
bGF5LCBwaXhtYXAsIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7Ci0gICAgWERhbWFnZU5vdGlmaWVy
OjpzaW5nbGV0b24oKS5hZGQocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1h
Z2UuZ2V0KCksIFt3ZWJWaWV3XSB7Ci0gICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhHVEtf
V0lER0VUKHdlYlZpZXcpKTsKLSAgICB9KTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAtNTY0
LDkgKzUwNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlzcG9zZShHT2JqZWN0
KiBnb2JqZWN0KQogICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKHdlYlZpZXctPnByaXYtPnNjcmVl
blNhdmVySW5oaWJpdENhbmNlbGxhYmxlLmdldCgpKTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2ViVmlldywgbnVsbHB0cik7CiAgICAgd2ViVmlldy0+
cHJpdi0+cGFnZVByb3h5LT5jbG9zZSgpOwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Bp
eG1hcCh3ZWJWaWV3LCAwKTsKLSNlbmRpZgorICAgIHdlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3Zp
ZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKGdvYmplY3QpOwogfQogCkBAIC01ODUsNTUg
KzUyNCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogICAgIHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nID0gMDsKIH0KIAotc3Rh
dGljIGJvb2wgd2Via2l0V2ViVmlld1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRz
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRy
YXdpbmdBcmVhLCBjYWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiBjbGlwUmVjdCkKLXsKLSNpZiBV
U0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBBU1NFUlQoZHJhd2luZ0FyZWEp
OwotCi0gICAgaWYgKCFkcmF3aW5nQXJlYS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXdCYXNlKS0+cHJpdjsKLSAgICBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZS5nZXQoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIGlmICghc3VyZmFjZSB8fCAh
cHJpdi0+cGFnZVByb3h5LT5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAgICBjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IgPSBwcml2LT5wYWdlUHJveHktPmJhY2tncm91bmRDb2xvcigpOwot
ICAgICAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkgewotICAgICAgICAgICAgY2Fpcm9fcmVjdGFu
Z2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xpcFJl
Y3QtPmhlaWdodCk7Ci0gICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09Q
RVJBVE9SX0NMRUFSKTsKLSAgICAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGNvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBzZXRTb3VyY2VS
R0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3Io
Y3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUo
Y3IsIGNsaXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+
aGVpZ2h0KTsKLSAgICAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlm
aWVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAotICAgICAg
ICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250
ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGly
dHkoc3VyZmFjZSk7Ci0gICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNs
aXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICBj
YWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwotICAgICAgICBjYWly
b19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX09WRVIpOwotICAgICAgICBjYWlyb19m
aWxsKGNyKTsKLSAgICB9Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLQotICAgIHJldHVybiB0
cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0od2ViVmlld0Jhc2UpOwotICAgIFVOVVNFRF9Q
QVJBTShjcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNsaXBSZWN0KTsKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLX0KLQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtX
aWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKQEAgLTY0NSw3ICs1MzUs
OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lk
Z2V0LCBjYWlyb190KiBjcikKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUo
Y3IsICZjbGlwUmVjdCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGlmICghd2Via2l0
V2ViVmlld1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKHdlYlZpZXdCYXNlLCBk
cmF3aW5nQXJlYSwgY3IsICZjbGlwUmVjdCkpIHsKKyAgICBpZiAod2ViVmlld0Jhc2UtPnByaXYt
PmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlICYmIGRyYXdpbmdBcmVhLT5pc0luQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlLT5wYWludChjciwgY2xpcFJlY3QpOworICAgIGVsc2UgewogICAgICAgICBX
ZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNpbXBseSB1bnVzZWQu
CiAgICAgICAgIGRyYXdpbmdBcmVhLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lv
bik7CiAgICAgfQpAQCAtMTI4Niw2ICsxMTc4LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBSZWY8QVAK
ICAgICBwcml2LT5wYWdlUHJveHkgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKCpwcml2LT5wYWdl
Q2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICBwcml2LT5wYWdlUHJveHktPmlu
aXRpYWxpemVXZWJQYWdlKCk7CiAKKyAgICBwcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSA9
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKnByaXYtPnBhZ2VQcm94eSk7CisKICAg
ICBwcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRQYWdlKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7
CiAKICNpZiBIQVZFKEdUS19TQ0FMRV9GQUNUT1IpCkBAIC0xNTY2LDI5ICsxNDYwLDIwIEBAIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VSZXNldENsaWNrQ291bnRlcihXZWJLaXRXZWJWaWV3QmFzZSog
d2Via2l0V2ViVmlld0Jhc2UpCiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwg
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKLSNpZiBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2Via2l0V2ViVmlld0Jhc2UsIGxheWVyVHJlZUNvbnRl
eHQuY29udGV4dElEKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNl
KTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZS0+dXBkYXRlKGxheWVyVHJlZUNvbnRleHQpOwogfQogCiB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRy
ZWVDb250ZXh0KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAg
IHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRX
ZWJWaWV3QmFzZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYgKHdlYmtpdFdlYlZp
ZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAgICAgd2Via2l0V2Vi
Vmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUobGF5ZXJUcmVl
Q29udGV4dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFeGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotI2lm
IFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNl
U2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgMCk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFzZSk7Ci0jZW5kaWYKKyAgICBp
ZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAg
ICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVw
ZGF0ZShMYXllclRyZWVDb250ZXh0KCkpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlk
UmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkK
QEAgLTE2MTYsOSArMTUwMSw5IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdl
YlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAKIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3
QmFzZSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2Via2l0V2ViVmll
d0Jhc2UsIDApOwotI2VsaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisg
ICAgaWYgKHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkK
KyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
LT51cGRhdGUoTGF5ZXJUcmVlQ29udGV4dCgpKTsKKyNpZiBQTEFURk9STShYMTEpICYmIFVTRShU
RVhUVVJFX01BUFBFUikgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAg
IGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgIT0gUGxhdGZvcm1E
aXNwbGF5OjpUeXBlOjpYMTEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWVhYWY0Yi4uMTAwNTU1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMDAsNiArMTAw
LDExIEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVNb25pdG9yLmgiCiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVH
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC02Mzks
NiArNjQ0LDExIEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dl
YlByb2Nlc3MoKQogICAgICAgICBwYXJhbWV0ZXJzLm1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRs
ZSA9IE1lbW9yeVByZXNzdXJlTW9uaXRvcjo6c2luZ2xldG9uKCkuY3JlYXRlSGFuZGxlKCk7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQp
CisgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSA9IFdheWxh
bmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNwbGF5TmFtZSgpOworI2VuZGlmCisKICAgICBw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoKTsKIAogICAgIC8vIEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFy
YW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yMWNhZmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2lu
Y2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oIgorI2VuZGlmCisKKyNpZiBV
U0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyNpbmNsdWRlICJBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZSkKK3sKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQor
ICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpjcmVhdGUod2Vi
UGFnZSk7CisjZW5kaWYKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAg
ICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTE6OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRyOworfQor
CitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCit7Cit9CisKK0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoKQoreworfQorCiti
b29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ig
PSBtX3dlYlBhZ2UuYmFja2dyb3VuZENvbG9yKCk7CisgICAgaWYgKGNvbG9yLmhhc0FscGhhKCkp
IHsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0Lnko
KSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBjYWlyb19z
ZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKKyAgICAgICAgY2Fpcm9fZmls
bChjcik7CisgICAgfQorCisgICAgaWYgKGNvbG9yLmFscGhhKCkgPiAwKSB7CisgICAgICAgIHNl
dFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9yKTsKKyAgICAgICAgY2Fpcm9fc2V0X29wZXJh
dG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgICAgICBjYWlyb19yZWN0YW5nbGUo
Y3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVj
dC5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzZiYjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCit0eXBlZGVm
IHN0cnVjdCBfY2Fpcm8gY2Fpcm9fdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50
UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIExheWVyVHJlZUNvbnRleHQ7
CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0
dWFsIH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSgpOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCBib29sIHBhaW50KGNh
aXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKK3Byb3RlY3RlZDoKKyAgICBBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZShXZWJQYWdlUHJveHkmKTsKKworICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY2YmE2Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaCIKKworI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCisKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5j
bHVkZSA8R0xFUzIvZ2wyLmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvT3BlbkdMU2hpbXMu
aD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ+IEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZSkKK3sKKyAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmco
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ+KG5ldyBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQod2ViUGFnZSkpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6
OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZChXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCisg
ICAgOiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSh3ZWJQYWdlKQoreworICAgIFdheWxhbmRDb21w
b3NpdG9yOjpzaW5nbGV0b24oKS5yZWdpc3RlcldlYlBhZ2UobV93ZWJQYWdlKTsKK30KKworQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kKCkKK3sKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkudW5yZWdpc3Rlcldl
YlBhZ2UobV93ZWJQYWdlKTsKK30KKworYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBH
THVpbnQgdGV4dHVyZTsKKyAgICBJbnRTaXplIHRleHR1cmVTaXplOworICAgIGlmICghV2F5bGFu
ZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmdldFRleHR1cmUobV93ZWJQYWdlLCB0ZXh0dXJlLCB0
ZXh0dXJlU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhaXJvX3NhdmUoY3Ip
OworICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjciwgY2xpcFJlY3QpOworCisj
aWYgMAorICAgIC8vIEZJWE1FOiBVc2UgdGhpcyB3aGVuIEdUSysgPj0gMy4xNi4gR1RLKyBleHBl
Y3RzIHRoZSBZIGF4aXMgdG8gYmUgaW52ZXJ0ZWQgdG8gd2hhdCB3ZSBnZXQsIHNvIHdlIG5lZWQg
dG8gZmxpcCBpdCBzb21laG93LgorICAgIGdka19jYWlyb19kcmF3X2Zyb21fZ2woY3IsIGd0a193
aWRnZXRfZ2V0X3dpbmRvdyhtX3dlYlBhZ2Uudmlld1dpZGdldCgpKSwgdGV4dHVyZSwgR0xfVEVY
VFVSRSwgMSwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNs
aXBSZWN0LmhlaWdodCgpKTsKKyNlbHNlCisgICAgSW50U2l6ZSBzaXplID0gdGV4dHVyZVNpemU7
CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKKyAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIGlmICghbV9z
dXJmYWNlIHx8IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1fc3VyZmFjZS5nZXQoKSkg
IT0gc2l6ZS53aWR0aCgpIHx8IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZh
Y2UuZ2V0KCkpICE9IHNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1f
c3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKKwor
ICAgIEdMdWludCBmYjsKKyAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmIpOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYik7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IHRleHR1cmUsIDApOworCisgICAgZ2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7
CisgICAgZ2xQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpIC8gNCk7CisjaWYgVVNFKE9QRU5HTF9FU18y
KQorICAgIGdsUmVhZFBpeGVscygwLCAwLCB0ZXh0dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6
ZS5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpKTsKKyNlbHNlCisgICAgZ2xSZWFkUGl4ZWxzKDAs
IDAsIHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpLCBHTF9CR1JBLCBH
TF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
bV9zdXJmYWNlLmdldCgpKSk7CisjZW5kaWYKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9X
X0xFTkdUSCwgMCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7
CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZiKTsKKworICAgIC8vIFRoZSBzdXJmYWNl
IGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nlc3MgYXQgYW55IHRpbWUsIHNvIHdlIG1h
cmsgaXQKKyAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBk
YXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLgorICAgIGNhaXJvX3N1cmZhY2VfbWFy
a19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJl
Y3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgp
KTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIG1fc3VyZmFjZS5nZXQoKSwgMCwg
MCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAg
ICBjYWlyb19maWxsKGNyKTsKKyNlbmRpZgorCisgICAgY2Fpcm9fcmVzdG9yZShjcik7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGM0MjIzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCIK
KworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJv
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ+IGNy
ZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
KCk7CisKK3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKFdlYlBh
Z2VQcm94eSYpOworCisgICAgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOworCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlM
QU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45MzI4MzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaCIKKworI2lmIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eUltcGwuaCIKKyNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CisjaW5jbHVkZSA8WDExL1hsaWIuaD4K
KyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+CisjaW5jbHVkZSA8Y2Fpcm8teGxp
Yi5oPgorI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgT3B0aW9uYWw8aW50PiBzX2RhbWFnZUV2
ZW50QmFzZTsKKworY2xhc3MgWERhbWFnZU5vdGlmaWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShYRGFtYWdlTm90aWZpZXIpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxY
RGFtYWdlTm90aWZpZXI+OworcHVibGljOgorICAgIHN0YXRpYyBYRGFtYWdlTm90aWZpZXImIHNp
bmdsZXRvbigpCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5v
dGlmaWVyPiBub3RpZmllcjsKKyAgICAgICAgcmV0dXJuIG5vdGlmaWVyOworICAgIH0KKworICAg
IHZvaWQgYWRkKERhbWFnZSBkYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIG5vdGlmeUZ1
bmN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGdka193aW5kb3dfYWRkX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9j
YXN0PEdka0ZpbHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKKyAgICAgICAg
bV9ub3RpZnlGdW5jdGlvbnMuYWRkKGRhbWFnZSwgV1RGTW92ZShub3RpZnlGdW5jdGlvbikpOwor
ICAgIH0KKworICAgIHZvaWQgcmVtb3ZlKERhbWFnZSBkYW1hZ2UpCisgICAgeworICAgICAgICBt
X25vdGlmeUZ1bmN0aW9ucy5yZW1vdmUoZGFtYWdlKTsKKyAgICAgICAgaWYgKG1fbm90aWZ5RnVu
Y3Rpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGdka193aW5kb3dfcmVtb3ZlX2ZpbHRlcihu
dWxscHRyLCByZWludGVycHJldF9jYXN0PEdka0ZpbHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZl
bnQpLCB0aGlzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgWERhbWFnZU5vdGlmaWVyKCkgPSBk
ZWZhdWx0OworCisgICAgc3RhdGljIEdka0ZpbHRlclJldHVybiBmaWx0ZXJYRGFtYWdlRXZlbnQo
R2RrWEV2ZW50KiBldmVudCwgR2RrRXZlbnQqLCBYRGFtYWdlTm90aWZpZXIqIG5vdGlmaWVyKQor
ICAgIHsKKyAgICAgICAgYXV0byogeEV2ZW50ID0gc3RhdGljX2Nhc3Q8WEV2ZW50Kj4oZXZlbnQp
OworICAgICAgICBpZiAoeEV2ZW50LT50eXBlICE9IHNfZGFtYWdlRXZlbnRCYXNlLnZhbHVlKCkg
KyBYRGFtYWdlTm90aWZ5KQorICAgICAgICAgICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElOVUU7
CisKKyAgICAgICAgYXV0byogZGFtYWdlRXZlbnQgPSByZWludGVycHJldF9jYXN0PFhEYW1hZ2VO
b3RpZnlFdmVudCo+KHhFdmVudCk7CisgICAgICAgIGlmIChub3RpZmllci0+bm90aWZ5KGRhbWFn
ZUV2ZW50LT5kYW1hZ2UpKSB7CisgICAgICAgICAgICBYRGFtYWdlU3VidHJhY3QoeEV2ZW50LT54
YW55LmRpc3BsYXksIGRhbWFnZUV2ZW50LT5kYW1hZ2UsIE5vbmUsIE5vbmUpOworICAgICAgICAg
ICAgcmV0dXJuIEdES19GSUxURVJfUkVNT1ZFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IEdES19GSUxURVJfQ09OVElOVUU7CisgICAgfQorCisgICAgYm9vbCBub3RpZnkoRGFtYWdlIGRh
bWFnZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb25zdCBhdXRvJiBub3RpZnlGdW5jdGlv
biA9IG1fbm90aWZ5RnVuY3Rpb25zLmdldChkYW1hZ2UpKSB7CisgICAgICAgICAgICBub3RpZnlG
dW5jdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEhhc2hNYXA8RGFtYWdlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4+IG1fbm90aWZ5RnVuY3Rpb25zOworfTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlWDExPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6Y3JlYXRl
KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sKKyAgICBhdXRvJiBkaXNwbGF5ID0gZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7Cisg
ICAgaWYgKCFkaXNwbGF5LnN1cHBvcnRzWENvbXBvc2l0ZSgpIHx8ICFkaXNwbGF5LnN1cHBvcnRz
WERhbWFnZShzX2RhbWFnZUV2ZW50QmFzZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE+KG5ldyBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSh3ZWJQYWdlKSk7Cit9CisKK0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMShXZWJQYWdlUHJveHkmIHdl
YlBhZ2UpCisgICAgOiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSh3ZWJQYWdlKQoreworfQorCitB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKCkK
K3sKKyAgICBpZiAobV9kYW1hZ2UpIHsKKyAgICAgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0
b24oKS5yZW1vdmUobV9kYW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2RhbWFnZS5yZXNldCgpOwor
ICAgIH0KK30KKwordm9pZCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6dXBkYXRlKGNvbnN0
IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7CisgICAgUGl4bWFwIHBpeG1h
cCA9IGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEOworICAgIGlmIChtX3N1cmZhY2UgJiYgY2Fp
cm9feGxpYl9zdXJmYWNlX2dldF9kcmF3YWJsZShtX3N1cmZhY2UuZ2V0KCkpID09IHBpeG1hcCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3VyZmFjZSkgeworICAgICAgICBpZiAobV9k
YW1hZ2UpIHsKKyAgICAgICAgICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3Zl
KG1fZGFtYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fZGFtYWdlLnJlc2V0KCk7CisgICAgICAg
IH0KKyAgICAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIXBpeG1h
cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdB
cmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihtX3dlYlBhZ2UuZHJhd2lu
Z0FyZWEoKSk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
SW50U2l6ZSBzaXplID0gZHJhd2luZ0FyZWEtPnNpemUoKTsKKyAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHNpemUuc2NhbGUo
ZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOworICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBHREtfRElTUExBWV9YRElTUExBWShn
ZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKSk7CisgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtf
c2NyZWVuX2dldF9yZ2JhX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworICAgIGlm
ICghdmlzdWFsKQorICAgICAgICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFs
KGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAgbV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9feGxpYl9zdXJmYWNlX2NyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIEdES19WSVNVQUxfWFZJU1VB
TCh2aXN1YWwpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBjYWlyb1N1cmZh
Y2VTZXREZXZpY2VTY2FsZShtX3N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9yLCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKGRpc3BsYXksIHBp
eG1hcCwgWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKKyAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmds
ZXRvbigpLmFkZChtX2RhbWFnZS5nZXQoKSwgW3RoaXNdIHsKKyAgICAgICAgZ3RrX3dpZGdldF9x
dWV1ZV9kcmF3KG1fd2ViUGFnZS52aWV3V2lkZ2V0KCkpOworICAgIH0pOworfQorCitib29sIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpCit7CisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGNhaXJvX3NhdmUoY3IpOworICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpw
YWludChjciwgY2xpcFJlY3QpOworCisgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVk
IGJ5IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAorICAgIC8vIGFz
IGRpcnR5IHRvIGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFz
IHNvb24gYXMgcG9zc2libGUuCisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc3VyZmFj
ZS5nZXQoKSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0
LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX3Nl
dF9zb3VyY2Vfc3VyZmFjZShjciwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19z
ZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX09WRVIpOworICAgIGNhaXJvX2ZpbGwoY3Ip
OworCisgICAgY2Fpcm9fcmVzdG9yZShjcik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRF
X1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTEuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kOWE3YzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCisKKyNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMSBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExPiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgfkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExKCk7CisKK3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTEoV2ViUGFnZVByb3h5Jik7CisKKyAgICB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRy
ZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bV9zdXJmYWNlOworICAgIFdlYkNvcmU6OlhVbmlxdWVEYW1hZ2UgbV9kYW1hZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRD
b21wb3NpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQ0MDJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5jcHAKQEAgLTAsMCArMSw0ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2F5
bGFuZENvbXBvc2l0b3IuaCIKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJX
ZWJLaXQyV2F5bGFuZFNlcnZlclByb3RvY29sLmgiCisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bURpc3BsYXlXYXlsYW5kLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VVSUQuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci1wcm90b2NvbC5oPgor
CisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUg
PEdMRVMyL2dsMmV4dC5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNoaW1zLmg+
CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisjaWYgIWRlZmluZWQoUEZORUdMQklORFdBWUxBTkRESVNQTEFZV0wpCit0eXBlZGVmIEVH
TEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCkoRUdMRGlz
cGxheSwgc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZORUdM
VU5CSU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQ
IFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpKEVHTERpc3BsYXksIHN0cnVjdCB3bF9kaXNw
bGF5Kik7CisjZW5kaWYKKworc3RhdGljIFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMIGVnbEJp
bmRXYXlsYW5kRGlzcGxheTsKK3N0YXRpYyBQRk5FR0xVTkJJTkRXQVlMQU5ERElTUExBWVdMIGVn
bFVuYmluZFdheWxhbmREaXNwbGF5Oworc3RhdGljIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJF
MkRPRVNQUk9DIGVnbEltYWdlVGFyZ2V0VGV4dHVyZTJkOworc3RhdGljIFBGTkVHTFFVRVJZV0FZ
TEFOREJVRkZFUldMIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcjsKKworV2F5bGFuZENvbXBvc2l0b3Im
IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxXYXlsYW5kQ29tcG9zaXRvcj4gd2F5bGFuZENvbXBvc2l0b3I7CisgICAgcmV0dXJuIHdh
eWxhbmRDb21wb3NpdG9yOworfQorCitXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBXYXlsYW5k
Q29tcG9zaXRvcjo6QnVmZmVyOjpnZXRPckNyZWF0ZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291
cmNlKQoreworICAgIGlmIChzdHJ1Y3Qgd2xfbGlzdGVuZXIqIGxpc3RlbmVyID0gd2xfcmVzb3Vy
Y2VfZ2V0X2Rlc3Ryb3lfbGlzdGVuZXIocmVzb3VyY2UsIGRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNr
KSkgeworICAgICAgICBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBidWZmZXI7CisgICAgICAg
IHJldHVybiB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZlciwgbV9kZXN0cm95TGlzdGVu
ZXIpOworICAgIH0KKworICAgIHJldHVybiBuZXcgV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcihy
ZXNvdXJjZSk7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OkJ1ZmZlcihzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIHJlc291cmNlKQorICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKKyAgICAs
IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKK3sKKyAgICB3bF9saXN0X2luaXQoJm1fZGVzdHJveUxp
c3RlbmVyLmxpbmspOworICAgIG1fZGVzdHJveUxpc3RlbmVyLm5vdGlmeSA9IGRlc3Ryb3lMaXN0
ZW5lckNhbGxiYWNrOworICAgIHdsX3Jlc291cmNlX2FkZF9kZXN0cm95X2xpc3RlbmVyKG1fcmVz
b3VyY2UsICZtX2Rlc3Ryb3lMaXN0ZW5lcik7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZm
ZXI6On5CdWZmZXIoKQoreworICAgIHdsX2xpc3RfcmVtb3ZlKCZtX2Rlc3Ryb3lMaXN0ZW5lci5s
aW5rKTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpkZXN0cm95TGlzdGVu
ZXJDYWxsYmFjayhzdHJ1Y3Qgd2xfbGlzdGVuZXIqIGxpc3RlbmVyLCB2b2lkKikKK3sKKyAgICBX
YXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBidWZmZXI7CisgICAgYnVmZmVyID0gd2xfY29udGFp
bmVyX29mKGxpc3RlbmVyLCBidWZmZXIsIG1fZGVzdHJveUxpc3RlbmVyKTsKKyAgICBkZWxldGUg
YnVmZmVyOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVzZSgpCit7Cisg
ICAgbV9idXN5Q291bnQrKzsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1
bnVzZSgpCit7CisgICAgbV9idXN5Q291bnQtLTsKKyAgICBpZiAoIW1fYnVzeUNvdW50KQorICAg
ICAgICB3bF9yZXNvdXJjZV9xdWV1ZV9ldmVudChtX3Jlc291cmNlLCBXTF9CVUZGRVJfUkVMRUFT
RSk7Cit9CisKK0VHTEltYWdlS0hSIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZUlt
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMSW1hZ2VLSFIqPihlZ2xD
cmVhdGVJbWFnZShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCks
IEVHTF9OT19DT05URVhULCBFR0xfV0FZTEFORF9CVUZGRVJfV0wsIG1fcmVzb3VyY2UsIG51bGxw
dHIpKTsKK30KKworSW50U2l6ZSBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpzaXplKCkgY29u
c3QKK3sKKyAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZWds
UXVlcnlXYXlsYW5kQnVmZmVyKGVnbERpc3BsYXksIG1fcmVzb3VyY2UsIEVHTF9XSURUSCwgJndp
ZHRoKTsKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIoZWdsRGlzcGxheSwgbV9yZXNvdXJjZSwg
RUdMX0hFSUdIVCwgJmhlaWdodCk7CisKKyAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07Cit9
CisKK1dheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpTdXJmYWNlKCkKKyAgICA6IG1faW1hZ2Uo
RUdMX05PX0lNQUdFX0tIUikKK3sKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cit9CisK
K1dheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjp+U3VyZmFjZSgpCit7CisgICAgLy8gRGVzdHJv
eSBwZW5kaW5nIGZyYW1lIGNhbGxiYWNrcy4KKyAgICBhdXRvIGxpc3QgPSBXVEZNb3ZlKG1fZnJh
bWVDYWxsYmFja0xpc3QpOworICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBsaXN0KQorICAgICAg
ICB3bF9yZXNvdXJjZV9kZXN0cm95KHJlc291cmNlKTsKKworICAgIGlmIChtX2J1ZmZlcikKKyAg
ICAgICAgbV9idWZmZXItPnVudXNlKCk7CisKKyAgICBpZiAobV9pbWFnZSAhPSBFR0xfTk9fSU1B
R0VfS0hSKQorICAgICAgICBlZ2xEZXN0cm95SW1hZ2UoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkuZWdsRGlzcGxheSgpLCBtX2ltYWdlKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1fdGV4dHVyZSk7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6Om1h
a2VQZW5kaW5nQnVmZmVyQ3VycmVudCgpCit7CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlciA9PSBt
X2J1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBt
X2J1ZmZlci0+dW51c2UoKTsKKworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIpCisgICAgICAgIG1f
cGVuZGluZ0J1ZmZlci0+dXNlKCk7CisKKyAgICBtX2J1ZmZlciA9IG1fcGVuZGluZ0J1ZmZlcjsK
K30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6YXR0YWNoQnVmZmVyKHN0cnVj
dCB3bF9yZXNvdXJjZSogYnVmZmVyKQoreworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIpCisgICAg
ICAgIG1fcGVuZGluZ0J1ZmZlciA9IG51bGxwdHI7CisKKyAgICBpZiAoYnVmZmVyKSB7CisgICAg
ICAgIGF1dG8qIGNvbXBvc2l0b3JCdWZmZXIgPSBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpn
ZXRPckNyZWF0ZShidWZmZXIpOworICAgICAgICBtX3BlbmRpbmdCdWZmZXIgPSBjb21wb3NpdG9y
QnVmZmVyLT5jcmVhdGVXZWFrUHRyKCk7CisgICAgfQorfQorCit2b2lkIFdheWxhbmRDb21wb3Np
dG9yOjpTdXJmYWNlOjpyZXF1ZXN0RnJhbWUoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkK
K3sKKyAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsIG51bGxwdHIs
IHRoaXMsIFtdKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpIHsKKyAgICAgICAgYXV0byog
c3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVz
b3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoc2l6ZV90IGl0ZW0g
PSBzdXJmYWNlLT5tX2ZyYW1lQ2FsbGJhY2tMaXN0LmZpbmQocmVzb3VyY2UpICE9IG5vdEZvdW5k
KQorICAgICAgICAgICAgc3VyZmFjZS0+bV9mcmFtZUNhbGxiYWNrTGlzdC5yZW1vdmUoaXRlbSk7
CisgICAgfSk7CisgICAgbV9mcmFtZUNhbGxiYWNrTGlzdC5hcHBlbmQocmVzb3VyY2UpOworfQor
Citib29sIFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVyZUZvclBhaW50
aW5nKHVuc2lnbmVkJiB0ZXh0dXJlLCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSkKK3sKKyAgICBpZiAo
bV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgZWdsSW1hZ2VU
YXJnZXRUZXh0dXJlMmQoR0xfVEVYVFVSRV8yRCwgbV9pbWFnZSk7CisKKyAgICB0ZXh0dXJlID0g
bV90ZXh0dXJlOworICAgIHRleHR1cmVTaXplID0gbV9idWZmZXItPnNpemUoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6Y29tbWl0KCkK
K3sKKyAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisgICAgaWYgKG1faW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tI
UikKKyAgICAgICAgZWdsRGVzdHJveUltYWdlKGVnbERpc3BsYXksIG1faW1hZ2UpOworICAgIG1f
aW1hZ2UgPSBtX3BlbmRpbmdCdWZmZXItPmNyZWF0ZUltYWdlKCk7CisgICAgaWYgKG1faW1hZ2Ug
PT0gRUdMX05PX0lNQUdFX0tIUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWFrZVBl
bmRpbmdCdWZmZXJDdXJyZW50KCk7CisgICAgaWYgKG1fd2ViUGFnZSkKKyAgICAgICAgbV93ZWJQ
YWdlLT5zZXRWaWV3TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV93ZWJQ
YWdlLT52aWV3U2l6ZSgpKSk7CisKKyAgICBhdXRvIGxpc3QgPSBXVEZNb3ZlKG1fZnJhbWVDYWxs
YmFja0xpc3QpOworICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBsaXN0KSB7CisgICAgICAgIHds
X2NhbGxiYWNrX3NlbmRfZG9uZShyZXNvdXJjZSwgMCk7CisgICAgICAgIHdsX3Jlc291cmNlX2Rl
c3Ryb3kocmVzb3VyY2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Y29uc3Qgc3RydWN0IHdsX3N1cmZhY2VfaW50ZXJmYWNlIHN1cmZhY2VJbnRlcmZhY2UgPSB7Cisg
ICAgLy8gZGVzdHJveUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3
bF9yZXNvdXJjZSogcmVzb3VyY2UpIHsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNv
dXJjZSk7CisgICAgfSwKKyAgICAvLyBhdHRhY2hDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9j
bGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgc3RydWN0IHdsX3Jl
c291cmNlKiBidWZmZXIsIGludDMyX3Qgc3gsIGludDMyX3Qgc3kpIHsKKyAgICAgICAgYXV0byog
c3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVz
b3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRUdMaW50IGZvcm1hdDsKKyAgICAgICAgaWYg
KCFlZ2xRdWVyeVdheWxhbmRCdWZmZXIoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
ZWdsRGlzcGxheSgpLCBidWZmZXIsIEVHTF9URVhUVVJFX0ZPUk1BVCwgJmZvcm1hdCkKKyAgICAg
ICAgICAgIHx8IChmb3JtYXQgIT0gRUdMX1RFWFRVUkVfUkdCICYmIGZvcm1hdCAhPSBFR0xfVEVY
VFVSRV9SR0JBKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzdXJmYWNlLT5hdHRh
Y2hCdWZmZXIoYnVmZmVyKTsKKyAgICB9LAorICAgIC8vIGRhbWFnZUNhbGxiYWNrCisgICAgW10o
c3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QsIGludDMyX3Qs
IGludDMyX3QsIGludDMyX3QpIHsKKyAgICB9LAorICAgIC8vIGZyYW1lQ2FsbGJhY2sKKyAgICBb
XShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2Us
IHVpbnQzMl90IGlkKSB7CisgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXls
YW5kQ29tcG9zaXRvcjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3Vy
Y2UpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChzdHJ1Y3Qgd2xfcmVzb3VyY2UqIGNhbGxiYWNrUmVzb3VyY2UgPSB3bF9yZXNvdXJj
ZV9jcmVhdGUoY2xpZW50LCAmd2xfY2FsbGJhY2tfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAg
ICAgICBzdXJmYWNlLT5yZXF1ZXN0RnJhbWUoY2FsbGJhY2tSZXNvdXJjZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHdsX2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgIH0s
CisgICAgLy8gc2V0T3BhcXVlUmVnaW9uQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50
Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKikgeworICAgIH0sCisg
ICAgLy8gc2V0SW5wdXRSZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBz
dHJ1Y3Qgd2xfcmVzb3VyY2UqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqKSB7CisgICAgfSwKKyAgICAv
LyBjb21taXRDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0
IHdsX3Jlc291cmNlKiByZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGlj
X2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9k
YXRhKHJlc291cmNlKSk7CisgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoc3VyZmFjZS0+Y29tbWl0KCkpCisgICAgICAgICAgICB3bF9kaXNw
bGF5X2ZsdXNoX2NsaWVudHMod2xfY2xpZW50X2dldF9kaXNwbGF5KGNsaWVudCkpOworICAgIH0s
CisgICAgLy8gc2V0QnVmZmVyVHJhbnNmb3JtQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xp
ZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgaW50MzJfdCkgeworICAgIH0sCisgICAgLy8gc2V0
QnVmZmVyU2NhbGVDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xf
cmVzb3VyY2UqLCBpbnQzMl90KSB7CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3
bF9jb21wb3NpdG9yX2ludGVyZmFjZSBjb21wb3NpdG9ySW50ZXJmYWNlID0geworICAgIC8vIGNy
ZWF0ZVN1cmZhY2VDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3Ry
dWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgaWYgKHN0
cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFjZVJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNs
aWVudCwgJndsX3N1cmZhY2VfaW50ZXJmYWNlLCAxLCBpZCkpIHsKKyAgICAgICAgICAgIHdsX3Jl
c291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihzdXJmYWNlUmVzb3VyY2UsICZzdXJmYWNlSW50ZXJm
YWNlLCBuZXcgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UoKSwKKyAgICAgICAgICAgICAgICBb
XShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSo+KHds
X3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHN1cmZhY2U7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgfSwKKyAgICAv
LyBjcmVhdGVSZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qg
d2xfcmVzb3VyY2UqLCB1aW50MzJfdCkKKyAgICB7CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0
IHN0cnVjdCB3bF93ZWJraXRndGtfaW50ZXJmYWNlIHdlYmtpdGd0a0ludGVyZmFjZSA9IHsKKyAg
ICAvLyBiaW5kU3VyZmFjZVRvUGFnZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCos
IHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFj
ZVJlc291cmNlLCB1aW50MzJfdCBwYWdlSUQpIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0
YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3Vz
ZXJfZGF0YShzdXJmYWNlUmVzb3VyY2UpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIGNvbXBvc2l0b3IgPSBzdGF0aWNfY2FzdDxX
YXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsK
KyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dlYlBhZ2Uoc3VyZmFjZSwgcGFnZUlE
KTsKKyAgICB9Cit9OworCitib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkK
K3sKKyAgICBlZ2xJbWFnZVRhcmdldFRleHR1cmUyZCA9IChQRk5HTEVHTElNQUdFVEFSR0VUVEVY
VFVSRTJET0VTUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUy
RE9FUyIpOworICAgIGlmICghZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMmQpIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvckVHTCByZXF1aXJlcyBnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbFF1ZXJ5
V2F5bGFuZEJ1ZmZlciA9IChQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCllZ2xHZXRQcm9jQWRk
cmVzcygiZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wiKTsKKyAgICBpZiAoIWVnbFF1ZXJ5V2F5bGFu
ZEJ1ZmZlcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRDb21wb3NpdG9yRUdMIHJl
cXVpcmVzIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGVnbEJpbmRXYXlsYW5kRGlzcGxheSA9IChQRk5FR0xCSU5EV0FZTEFORERJ
U1BMQVlXTCllZ2xHZXRQcm9jQWRkcmVzcygiZWdsQmluZFdheWxhbmREaXNwbGF5V0wiKTsKKyAg
ICBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheSA9IChQRk5FR0xVTkJJTkRXQVlMQU5ERElTUExBWVdM
KWVnbEdldFByb2NBZGRyZXNzKCJlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMIik7CisgICAgaWYg
KCFlZ2xCaW5kV2F5bGFuZERpc3BsYXkgfHwgIWVnbFVuYmluZFdheWxhbmREaXNwbGF5KSB7Cisg
ICAgICAgIGdfd2FybmluZygiRUdMIHN1cHBvcnRzIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxh
eSBleHRlbnNpb24gYnV0IGRvZXMgbm90IHByb3ZpZGUgZXh0ZW5zaW9uIGZ1bmN0aW9ucy4iKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZWdsQ29udGV4dCA9IEdMQ29u
dGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgpOworICAgIGlmICghbV9lZ2xDb250ZXh0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fZWdsQ29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgR1NvdXJjZSBzb3VyY2U7CisgICAgZ3BvaW50ZXIg
ZmRUYWc7CisgICAgc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXk7Cit9IFdheWxhbmRMb29wU291
cmNlOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgd2F5bGFuZExvb3BTb3VyY2VDb25kaXRpb24g
PSBHX0lPX0lOIHwgR19JT19IVVAgfCBHX0lPX0VSUjsKKworc3RhdGljIEdTb3VyY2VGdW5jcyB3
YXlsYW5kTG9vcFNvdXJjZUZ1bmN0aW9ucyA9IHsKKyAgICAvLyBwcmVwYXJlCisgICAgW10oR1Nv
dXJjZSAqc291cmNlLCBpbnQgKnRpbWVvdXQpIC0+IGdib29sZWFuIHsKKyAgICAgICAgKnRpbWVv
dXQgPSAtMTsKKyAgICAgICAgYXV0byogd2xMb29wU291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxX
YXlsYW5kTG9vcFNvdXJjZSo+KHNvdXJjZSk7CisgICAgICAgIHdsX2Rpc3BsYXlfZmx1c2hfY2xp
ZW50cyh3bExvb3BTb3VyY2UtPmRpc3BsYXkpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
fSwKKyAgICBudWxscHRyLCAvLyBjaGVjaworICAgIC8vIGRpc3BhdGNoCisgICAgW10oR1NvdXJj
ZSogc291cmNlLCBHU291cmNlRnVuYyBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdi
b29sZWFuIHsKKyAgICAgICAgYXV0byogd2xMb29wU291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxX
YXlsYW5kTG9vcFNvdXJjZSo+KHNvdXJjZSk7CisgICAgICAgIHVuc2lnbmVkIGV2ZW50cyA9IGdf
c291cmNlX3F1ZXJ5X3VuaXhfZmQoc291cmNlLCB3bExvb3BTb3VyY2UtPmZkVGFnKSAmIHdheWxh
bmRMb29wU291cmNlQ29uZGl0aW9uOworICAgICAgICBpZiAoZXZlbnRzICYgR19JT19IVVAgfHwg
ZXZlbnRzICYgR19JT19FUlIpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5bGFuZCBE
aXNwbGF5IEV2ZW50IFNvdXJjZTogbG9zdCBjb25uZWN0aW9uIHRvIG5lc3RlZCBXYXlsYW5kIGNv
bXBvc2l0b3IiKTsKKyAgICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZXZlbnRzICYgR19JT19JTikKKyAgICAgICAgICAgIHdsX2V2ZW50
X2xvb3BfZGlzcGF0Y2god2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcCh3bExvb3BTb3VyY2UtPmRp
c3BsYXkpLCAwKTsKKyAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAgIH0sCisg
ICAgbnVsbHB0ciwgLy8gZmluYWxpemUKKyAgICBudWxscHRyLCAvLyBjbG9zdXJlX2NhbGxiYWNr
CisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9tYXJzaGFsbAorfTsKKworc3RhdGljIEdSZWZQdHI8
R1NvdXJjZT4gY3JlYXRlV2F5bGFuZExvb3BTb3VyY2Uoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3Bs
YXkpCit7CisgICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ19zb3VyY2Vf
bmV3KCZ3YXlsYW5kTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKFdheWxhbmRMb29wU291cmNl
KSkpOworICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIk5lc3RlZCBXYXlsYW5k
IGNvbXBvc2l0b3IgZGlzcGxheSBldmVudCBzb3VyY2UiKTsKKyAgICBnX3NvdXJjZV9zZXRfcHJp
b3JpdHkoc291cmNlLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFVTFQgKyAxKTsKKworICAgIGF1dG8q
IHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3VyY2UqPihzb3Vy
Y2UuZ2V0KCkpOworICAgIHdsTG9vcFNvdXJjZS0+ZGlzcGxheSA9IGRpc3BsYXk7CisgICAgd2xM
b29wU291cmNlLT5mZFRhZyA9IGdfc291cmNlX2FkZF91bml4X2ZkKHNvdXJjZS5nZXQoKSwgd2xf
ZXZlbnRfbG9vcF9nZXRfZmQod2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChkaXNwbGF5KSksIHN0
YXRpY19jYXN0PEdJT0NvbmRpdGlvbj4od2F5bGFuZExvb3BTb3VyY2VDb25kaXRpb24pKTsKKyAg
ICBnX3NvdXJjZV9hdHRhY2goc291cmNlLmdldCgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBz
b3VyY2U7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpXYXlsYW5kQ29tcG9zaXRvcigpCit7Cisg
ICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX2Rpc3BsYXk+IGRpc3BsYXkod2xfZGlzcGxheV9jcmVh
dGUoKSk7CisgICAgaWYgKCFkaXNwbGF5KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVk
IFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgb2JqZWN0Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSAid2Via2l0
Z3RrLXdheWxhbmQtY29tcG9zaXRvci0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwor
ICAgIGlmICh3bF9kaXNwbGF5X2FkZF9zb2NrZXQoZGlzcGxheS5nZXQoKSwgZGlzcGxheU5hbWUu
dXRmOCgpLmRhdGEoKSkgPT0gLTEpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5
bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBjcmVhdGUgZGlzcGxheSBzb2NrZXQiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IGNv
bXBvc2l0b3JHbG9iYWwod2xfZ2xvYmFsX2NyZWF0ZShkaXNwbGF5LmdldCgpLCAmd2xfY29tcG9z
aXRvcl9pbnRlcmZhY2UsIHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLnZlcnNpb24sIHRoaXMsCisg
ICAgICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgdm9pZCogZGF0YSwgdWludDMyX3Qg
dmVyc2lvbiwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqIHJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX2NvbXBvc2l0b3Jf
aW50ZXJmYWNlLCBzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KHZlcnNpb24pLCAzKSwgaWQpKQor
ICAgICAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwg
JmNvbXBvc2l0b3JJbnRlcmZhY2UsIHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4oZGF0
YSksIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdsX2NsaWVu
dF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgICAgICB9KSk7CisgICAgaWYgKCFjb21wb3Np
dG9yR2xvYmFsKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9z
aXRvciBjb3VsZCBub3QgcmVnaXN0ZXIgY29tcG9zaXRvciBnbG9iYWwiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IHdlYmtpdGd0
a0dsb2JhbCh3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXkuZ2V0KCksICZ3bF93ZWJraXRndGtfaW50
ZXJmYWNlLCAxLCB0aGlzLAorICAgICAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHZv
aWQqIGRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90IGlkKSB7CisgICAgICAgICAgICBp
ZiAoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9IHdsX3Jlc291cmNlX2NyZWF0ZShjbGll
bnQsICZ3bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAgICAgICAgICAgd2xf
cmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHJlc291cmNlLCAmd2Via2l0Z3RrSW50ZXJmYWNl
LCBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KGRhdGEpLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19tZW1vcnkoY2xp
ZW50KTsKKyAgICAgICAgfSkpOworICAgIGlmICghd2Via2l0Z3RrR2xvYmFsKSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgcmVnaXN0
ZXIgd2Via2l0Z3RrIGdsb2JhbCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFpbml0aWFsaXplRUdMKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFu
ZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBpbml0aWFsaXplIEVHTCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFlZ2xCaW5kV2F5bGFuZERpc3BsYXkoUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBkaXNwbGF5LmdldCgpKSkgeworICAgICAg
ICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IGJpbmQg
bmVzdGVkIGRpc3BsYXkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGlzcGxh
eU5hbWUgPSBXVEZNb3ZlKGRpc3BsYXlOYW1lKTsKKyAgICBtX2Rpc3BsYXkgPSBXVEZNb3ZlKGRp
c3BsYXkpOworICAgIG1fY29tcG9zaXRvckdsb2JhbCA9IFdURk1vdmUoY29tcG9zaXRvckdsb2Jh
bCk7CisgICAgbV93ZWJraXRndGtHbG9iYWwgPSBXVEZNb3ZlKHdlYmtpdGd0a0dsb2JhbCk7Cisg
ICAgbV9ldmVudFNvdXJjZSA9IGNyZWF0ZVdheWxhbmRMb29wU291cmNlKG1fZGlzcGxheS5nZXQo
KSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmdldFRleHR1cmUoV2ViUGFnZVByb3h5
JiB3ZWJQYWdlLCB1bnNpZ25lZCYgdGV4dHVyZSwgSW50U2l6ZSYgdGV4dHVyZVNpemUpCit7Cisg
ICAgaWYgKGF1dG8qIHN1cmZhY2UgPSBtX3BhZ2VNYXAuZ2V0KCZ3ZWJQYWdlKSkKKyAgICAgICAg
cmV0dXJuIHN1cmZhY2UtPnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodGV4dHVyZSwgdGV4dHVy
ZVNpemUpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6
YmluZFN1cmZhY2VUb1dlYlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqIHN1cmZhY2Us
IHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBudWxscHRy
OworICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkpIHsKKyAgICAgICAgaWYg
KHBhZ2UtPnBhZ2VJRCgpID09IHBhZ2VJRCkgeworICAgICAgICAgICAgd2ViUGFnZSA9IHBhZ2U7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXdlYlBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIHN1cmZhY2UtPnNldFdlYlBhZ2Uod2ViUGFnZSk7Cisg
ICAgbV9wYWdlTWFwLnNldCh3ZWJQYWdlLCBzdXJmYWNlKTsKK30KKwordm9pZCBXYXlsYW5kQ29t
cG9zaXRvcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sKKyAgICBt
X3BhZ2VNYXAuYWRkKCZ3ZWJQYWdlLCBudWxscHRyKTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9z
aXRvcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIGlm
IChhdXRvKiBzdXJmYWNlID0gbV9wYWdlTWFwLnRha2UoJndlYlBhZ2UpKQorICAgICAgICBzdXJm
YWNlLT5zZXRXZWJQYWdlKG51bGxwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDI3MWM1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XbFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgdm9pZCAqRUdMSW1hZ2VLSFI7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdMQ29udGV4dDsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2F5bGFuZENvbXBvc2l0
b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdheWxhbmRDb21wb3NpdG9yKTsKKyAgICBm
cmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2F5bGFuZENvbXBvc2l0b3I+OworcHVibGljOgor
ICAgIHN0YXRpYyBXYXlsYW5kQ29tcG9zaXRvciYgc2luZ2xldG9uKCk7CisKKyAgICBjbGFzcyBC
dWZmZXIgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCdWZmZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBCdWZmZXIqIGdldE9y
Q3JlYXRlKHN0cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICB+QnVmZmVyKCk7CisKKyAgICAg
ICAgdm9pZCB1c2UoKTsKKyAgICAgICAgdm9pZCB1bnVzZSgpOworCisgICAgICAgIEVHTEltYWdl
S0hSIGNyZWF0ZUltYWdlKCkgY29uc3Q7CisgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgp
IGNvbnN0OworCisgICAgICAgIFdlYWtQdHI8QnVmZmVyPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1
cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIEJ1ZmZlcihzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2soc3RydWN0IHdsX2xpc3RlbmVyKiwgdm9pZCopOworCisg
ICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSogbV9yZXNvdXJjZSB7IG51bGxwdHIgfTsKKyAgICAg
ICAgc3RydWN0IHdsX2xpc3RlbmVyIG1fZGVzdHJveUxpc3RlbmVyOworICAgICAgICB1aW50MzJf
dCBtX2J1c3lDb3VudCB7IDAgfTsKKyAgICAgICAgV2Vha1B0ckZhY3Rvcnk8QnVmZmVyPiBtX3dl
YWtQdHJGYWN0b3J5OworICAgIH07CisKKyAgICBjbGFzcyBTdXJmYWNlIHsKKyAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3VyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IHB1YmxpYzoKKyAgICAgICAgU3VyZmFjZSgpOworICAgICAgICB+U3VyZmFjZSgpOworCisgICAg
ICAgIHZvaWQgYXR0YWNoQnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICB2b2lk
IHJlcXVlc3RGcmFtZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgYm9vbCBjb21taXQo
KTsKKworICAgICAgICB2b2lkIHNldFdlYlBhZ2UoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKSB7IG1f
d2ViUGFnZSA9IHdlYlBhZ2U7IH0KKyAgICAgICAgYm9vbCBwcmVwYXJlVGV4dHVyZUZvclBhaW50
aW5nKHVuc2lnbmVkJiwgV2ViQ29yZTo6SW50U2l6ZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgdm9pZCBtYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQoKTsKKworICAgICAgICBXZWFrUHRyPEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFdlYWtQdHI8QnVmZmVyPiBtX3BlbmRpbmdCdWZmZXI7
CisgICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgbV9pbWFn
ZTsKKyAgICAgICAgVmVjdG9yPHdsX3Jlc291cmNlKj4gbV9mcmFtZUNhbGxiYWNrTGlzdDsKKyAg
ICAgICAgV2ViUGFnZVByb3h5KiBtX3dlYlBhZ2UgeyBudWxscHRyIH07CisgICAgfTsKKworICAg
IGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2Rpc3BsYXk7IH0KKyAgICBTdHJp
bmcgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9CisKKyAgICB2
b2lkIGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCB1aW50NjRfdCBwYWdlSUQpOworICAg
IHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOworICAgIHZvaWQgdW5yZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CisKKyAgICBib29sIGdldFRleHR1cmUoV2ViUGFnZVBy
b3h5JiwgdW5zaWduZWQmLCBXZWJDb3JlOjpJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgV2F5
bGFuZENvbXBvc2l0b3IoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZUVHTCgpOworCisgICAgU3Ry
aW5nIG1fZGlzcGxheU5hbWU7CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX2Rp
c3BsYXk+IG1fZGlzcGxheTsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xv
YmFsPiBtX2NvbXBvc2l0b3JHbG9iYWw7CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0
IHdsX2dsb2JhbD4gbV93ZWJraXRndGtHbG9iYWw7CisgICAgR1JlZlB0cjxHU291cmNlPiBtX2V2
ZW50U291cmNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHQ+IG1fZWds
Q29udGV4dDsKKyAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFN1cmZhY2UqPiBtX3BhZ2VNYXA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxB
TkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVu
Y2VzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNH
dGsuY3BwCmluZGV4IGFlMTRlOWUuLjNmMDU4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCkBAIC0yNywzMSArMjcsNTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisjaW5j
bHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KIAorI2lmIFVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5WDExLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVT
dG9yZSgpCiB7Ci0jaWYgUExBVEZPUk0oV0FZTEFORCkKLSAgICBpZiAoV2ViQ29yZTo6UGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheTo6VHlwZTo6V2F5bGFuZCkgewotICAgICAgICAvLyBGSVhNRTogQWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgdW5kZXIgV2F5bGFuZCBpcyBub3QgeWV0IHN1cHBvcnRlZC4KLSAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTgwMwotICAgICAgICBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgfQotI2VuZGlmCi0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQotICAgIHNldEZvcmNlQ29tcG9z
aXRpbmdNb2RlKHRydWUpOwotI2VuZGlmCiAjaWYgIUVOQUJMRShPUEVOR0wpCiAgICAgc2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwogI2Vsc2UKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1
ZSk7CisjZWxzZQogICAgIGlmIChnZXRlbnYoIldFQktJVF9GT1JDRV9DT01QT1NJVElOR19NT0RF
IikpCiAgICAgICAgIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwotICAgIGlmIChnZXRl
bnYoIldFQktJVF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUiKSkKKyNlbmRpZgorCisgICAgaWYg
KGdldGVudigiV0VCS0lUX0RJU0FCTEVfQ09NUE9TSVRJTkdfTU9ERSIpKSB7CiAgICAgICAgIHNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorICAgIGlmIChQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpYMTEpIHsKKyAgICAgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworICAgICAgICBP
cHRpb25hbDxpbnQ+IGRhbWFnZUJhc2U7CisgICAgICAgIGlmICghZGlzcGxheS5zdXBwb3J0c1hD
b21wb3NpdGUoKSB8fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2UoZGFtYWdlQmFzZSkpCisgICAg
ICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgfQog
I2VuZGlmCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5k
KSB7CisgICAgICAgIGlmICghV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmlzUnVubmlu
ZygpKQorICAgICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2Up
OworICAgIH0KKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5HTCkKIH0KIAogdm9pZCBX
ZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVTdHJpbmdWYWx1ZUZvcktleShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9Y
RGFtYWdlTm90aWZpZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTMzZmNj
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlm
aWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJYRGFtYWdlTm90aWZpZXIu
aCIKLQotI2lmIFBMQVRGT1JNKFgxMSkKLQotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5WDExLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9u
cy9YZGFtYWdlLmg+Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgT3B0aW9uYWw8aW50PiBzX2Rh
bWFnZUV2ZW50QmFzZTsKLQotWERhbWFnZU5vdGlmaWVyJiBYRGFtYWdlTm90aWZpZXI6OnNpbmds
ZXRvbigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4gbm90
aWZpZXI7Ci0gICAgcmV0dXJuIG5vdGlmaWVyOwotfQotCi1YRGFtYWdlTm90aWZpZXI6OlhEYW1h
Z2VOb3RpZmllcigpCi17Ci0gICAgZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkuc3VwcG9ydHNYRGFtYWdlKHNfZGFtYWdlRXZlbnRC
YXNlKTsKLX0KLQotdm9pZCBYRGFtYWdlTm90aWZpZXI6OmFkZChEYW1hZ2UgZGFtYWdlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKLXsKLSAgICBpZiAoIXNfZGFtYWdl
RXZlbnRCYXNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMu
aXNFbXB0eSgpKQotICAgICAgICBnZGtfd2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Ci0g
ICAgbV9ub3RpZnlGdW5jdGlvbnMuYWRkKGRhbWFnZSwgV1RGTW92ZShub3RpZnlGdW5jdGlvbikp
OwotfQotCi12b2lkIFhEYW1hZ2VOb3RpZmllcjo6cmVtb3ZlKERhbWFnZSBkYW1hZ2UpCi17Ci0g
ICAgaWYgKCFzX2RhbWFnZUV2ZW50QmFzZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9ub3Rp
ZnlGdW5jdGlvbnMucmVtb3ZlKGRhbWFnZSk7Ci0gICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlz
RW1wdHkoKSkKLSAgICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVyKG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOwot
fQotCi1HZGtGaWx0ZXJSZXR1cm4gWERhbWFnZU5vdGlmaWVyOjpmaWx0ZXJYRGFtYWdlRXZlbnQo
R2RrWEV2ZW50KiBldmVudCwgR2RrRXZlbnQqLCBYRGFtYWdlTm90aWZpZXIqIG5vdGlmaWVyKQot
ewotICAgIEFTU0VSVChzX2RhbWFnZUV2ZW50QmFzZSk7Ci0gICAgYXV0byogeEV2ZW50ID0gc3Rh
dGljX2Nhc3Q8WEV2ZW50Kj4oZXZlbnQpOwotICAgIGlmICh4RXZlbnQtPnR5cGUgIT0gc19kYW1h
Z2VFdmVudEJhc2UudmFsdWUoKSArIFhEYW1hZ2VOb3RpZnkpCi0gICAgICAgIHJldHVybiBHREtf
RklMVEVSX0NPTlRJTlVFOwotCi0gICAgYXV0byogZGFtYWdlRXZlbnQgPSByZWludGVycHJldF9j
YXN0PFhEYW1hZ2VOb3RpZnlFdmVudCo+KHhFdmVudCk7Ci0gICAgaWYgKG5vdGlmaWVyLT5ub3Rp
ZnkoZGFtYWdlRXZlbnQtPmRhbWFnZSkpIHsKLSAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVu
dC0+eGFueS5kaXNwbGF5LCBkYW1hZ2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKLSAgICAg
ICAgcmV0dXJuIEdES19GSUxURVJfUkVNT1ZFOwotICAgIH0KLQotICAgIHJldHVybiBHREtfRklM
VEVSX0NPTlRJTlVFOwotfQotCi1ib29sIFhEYW1hZ2VOb3RpZmllcjo6bm90aWZ5KERhbWFnZSBk
YW1hZ2UpIGNvbnN0Ci17Ci0gICAgaWYgKGNvbnN0IGF1dG8mIG5vdGlmeUZ1bmN0aW9uID0gbV9u
b3RpZnlGdW5jdGlvbnMuZ2V0KGRhbWFnZSkpIHsKLSAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkzMzRjYzIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBQTEFURk9S
TShYMTEpCi0KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotdHlwZWRlZiB1bnNpZ25lZCBs
b25nIERhbWFnZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFhEYW1hZ2VOb3RpZmll
ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWERhbWFnZU5vdGlmaWVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VO
b3RpZmllcj47Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFhEYW1hZ2VOb3RpZmllciYgc2luZ2xldG9u
KCk7Ci0KLSAgICB2b2lkIGFkZChEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHJlbW92ZShEYW1hZ2UpOwotCi1wcml2YXRlOgotICAgIFhEYW1hZ2VOb3RpZmllcigp
OwotCi0gICAgc3RhdGljIEdka0ZpbHRlclJldHVybiBmaWx0ZXJYRGFtYWdlRXZlbnQoR2RrWEV2
ZW50KiwgR2RrRXZlbnQqLCBYRGFtYWdlTm90aWZpZXIqKTsKLSAgICBib29sIG5vdGlmeShEYW1h
Z2UpIGNvbnN0OwotCi0gICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4g
bV9ub3RpZnlGdW5jdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCBkYmQwMjgw
Li4zNzM1YTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMzAsMTQgKzMwLDEy
IEBACiAjaW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKIAogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKworI2luY2x1ZGUgIkFjY2VsZXJh
dGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAKLSNpZiBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU0LDI2ICs1MiwxOCBAQCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6flRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKIFRocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChX
ZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KHdlYlBhZ2Up
CiAgICAgLCBtX2NvbXBvc2l0b3JDbGllbnQoKnRoaXMpCi0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0gICAgLCBtX3JlZGlyZWN0ZWRXaW5kb3coUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OmNyZWF0ZSh3ZWJQYWdlKSkKLSAgICAsIG1fY29tcG9zaXRvcihUaHJlYWRl
ZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50LCBtX3JlZGlyZWN0ZWRXaW5k
b3cgPyBtX3JlZGlyZWN0ZWRXaW5kb3ctPndpbmRvdygpIDogMCkpCi0jZWxzZQotICAgICwgbV9j
b21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2NvbXBvc2l0b3JDbGllbnQp
KQotI2VuZGlmCisgICAgLCBtX3N1cmZhY2UoQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUod2Vi
UGFnZSkpCisgICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoJm1f
Y29tcG9zaXRvckNsaWVudCwgbV9zdXJmYWNlID8gbV9zdXJmYWNlLT53aW5kb3coKSA6IDApKQog
ewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGly
ZWN0ZWRXaW5kb3cpCi0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3Jl
ZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotI2VuZGlmCisgICAgaWYgKG1fc3VyZmFjZSkKKyAg
ICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlE
KCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRh
dGUoKQogewogICAgIG1fY29tcG9zaXRvci0+aW52YWxpZGF0ZSgpOwogICAgIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpOwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQotICAgIG1fcmVkaXJlY3RlZFdpbmRvdyA9IG51bGxwdHI7Ci0jZW5kaWYKKyAg
ICBtX3N1cmZhY2UgPSBudWxscHRyOwogfQogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQpAQCAtOTUsMTIgKzg1LDggQEAgdm9pZCBUaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJD
b3JlOjpJbnRTaXoKIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAgICAgIG1f
cmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOwotICAgICAgICBtX2xh
eWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsK
LSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKG1f
d2ViUGFnZS5zaXplKCkpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0g
bV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKIAogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgbV9jb21wb3NpdG9yLT5zZXRE
ZXZpY2VTY2FsZUZhY3RvcihtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CkBAIC0xMTQs
MTIgKzEwMCw5IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSNp
ZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVk
V2luZG93KSB7Ci0gICAgICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKHNpemUpOwotICAg
ICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5w
aXhtYXAoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+
cmVzaXplKHNpemUpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9z
dXJmYWNlLT5zdXJmYWNlSUQoKTsKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6
ZURpZENoYW5nZShzaXplKTsKICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZVZpZXdwb3J0U2l6
ZShzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9U
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGE0MWExMTYuLjg5MGU3YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c7CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2U7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBmaW5hbCA6
IHB1YmxpYyBDb29yZGluYXRlZExheWVyVHJlZUhvc3QgewpAQCAtMTA1LDkgKzEwNSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAgQ29tcG9zaXRvckNsaWVudCBtX2Nv
bXBvc2l0b3JDbGllbnQ7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBtX3JlZGlyZWN0
ZWRXaW5kb3c7Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBtX3N1cmZhY2U7CiAgICAgUmVmUHRyPFRocmVhZGVkQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9y
OwogICAgIGZsb2F0IG1fbGFzdFNjYWxlRmFjdG9yIHsgMSB9OwogICAgIFdlYkNvcmU6OkludFBv
aW50IG1fcHJldlNjcm9sbFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZmQ3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5j
cHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNs
dWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgiCisjZW5kaWYKKworI2lmIFVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVgx
MS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRT
dXJmYWNlOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKK3sKKyNpZiBQTEFURk9STShXQVlMQU5E
KQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxh
dGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRT
dXJmYWNlV2F5bGFuZDo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisjaWYgVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0
dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZTo6QWNjZWxlcmF0ZWRTdXJm
YWNlKFdlYlBhZ2UmIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1f
c2l6ZSh3ZWJQYWdlLnNpemUoKSkKK3sKKyAgICBtX3NpemUuc2NhbGUobV93ZWJQYWdlLmRldmlj
ZVNjYWxlRmFjdG9yKCkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2U6On5BY2NlbGVyYXRlZFN1
cmZhY2UoKQoreworfQorCitib29sIEFjY2VsZXJhdGVkU3VyZmFjZTo6cmVzaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKHNpemUpOworICAgIHNjYWxl
ZFNpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIGlmIChzY2Fs
ZWRTaXplID09IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zaXplID0g
c2NhbGVkU2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
YjgyYzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXpl
Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJm
YWNlPiBjcmVhdGUoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkU3VyZmFjZSgp
OworCisgICAgdmlydHVhbCB1aW50NjRfdCB3aW5kb3coKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH07CisgICAgdmlydHVhbCBib29s
IHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisKK3Byb3RlY3RlZDoKKyAgICBBY2Nl
bGVyYXRlZFN1cmZhY2UoV2ViUGFnZSYpOworCisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAg
IFdlYkNvcmU6OkludFNpemUgbV9zaXplOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJh
dGVkU3VyZmFjZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iNmYwYjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcApAQCAt
MCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oIgorCisjaWYgUExBVEZP
Uk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kLmg+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlz
cGxheSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkpOworcHVibGljOgorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PiBjcmVhdGUoKQor
ICAgIHsKKyAgICAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkgPSB3bF9kaXNwbGF5X2Nv
bm5lY3QoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoIWRpc3BsYXkpIHsKKyAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFp
bGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgZGlzcGxheTogJXMiLCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PihuZXcgV2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5KGRpc3BsYXkpKTsKKyAgICB9CisKKyAgICB2b2lkIGJpbmRTdXJmYWNl
VG9QYWdlKHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlLCBXZWJQYWdlJiBwYWdlKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3dlYmtpdGd0aykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB3bF93ZWJraXRndGtfYmluZF9zdXJmYWNlX3RvX3BhZ2UocmVpbnRlcnByZXRfY2FzdDxzdHJ1
Y3Qgd2xfd2Via2l0Z3RrKj4obV93ZWJraXRndGsuZ2V0KCkpLCBzdXJmYWNlLCBwYWdlLnBhZ2VJ
RCgpKTsKKyAgICAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobV9kaXNwbGF5KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KHN0cnVjdCB3bF9kaXNwbGF5
KiBkaXNwbGF5KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShkaXNwbGF5KTsKKyAgICAgICAg
UGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKnRoaXMpOwor
ICAgIH0KKworICAgIHZvaWQgcmVnaXN0cnlHbG9iYWwoY29uc3QgY2hhciogaW50ZXJmYWNlLCB1
aW50MzJfdCBuYW1lKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6cmVnaXN0cnlHbG9iYWwoaW50ZXJmYWNlLCBuYW1lKTsKKyAgICAgICAgaWYgKCFzdGQ6
OnN0cmNtcChpbnRlcmZhY2UsICJ3bF93ZWJraXRndGsiKSkKKyAgICAgICAgICAgIG1fd2Via2l0
Z3RrLnJlc2V0KHN0YXRpY19jYXN0PHN0cnVjdCB3bF9wcm94eSo+KHdsX3JlZ2lzdHJ5X2JpbmQo
bV9yZWdpc3RyeS5nZXQoKSwgbmFtZSwgJndsX3dlYmtpdGd0a19pbnRlcmZhY2UsIDEpKSk7Cisg
ICAgfQorCisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3Byb3h5PiBtX3dlYmtpdGd0azsKK307
CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PiYgd2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3Rk
Ojp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4+IHdheWxhbmREaXNwbGF5KFdh
eWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRlKCkpOworICAgIHJldHVybiB3YXlsYW5kRGlz
cGxheTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ+IEFj
Y2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQoreworICAg
IHJldHVybiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKSA/IHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2VXYXlsYW5kPihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCh3ZWJQ
YWdlKSkgOiBudWxscHRyOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpBY2NlbGVy
YXRlZFN1cmZhY2VXYXlsYW5kKFdlYlBhZ2UmIHdlYlBhZ2UpCisgICAgOiBBY2NlbGVyYXRlZFN1
cmZhY2Uod2ViUGFnZSkKKyAgICAsIG1fc3VyZmFjZSh3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXko
KS0+Y3JlYXRlU3VyZmFjZSgpKQorICAgICwgbV93aW5kb3cod2xfZWdsX3dpbmRvd19jcmVhdGUo
bV9zdXJmYWNlLmdldCgpLCBzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEs
IG1fc2l6ZS5oZWlnaHQoKSkpKQoreworICAgIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpLT5i
aW5kU3VyZmFjZVRvUGFnZShtX3N1cmZhY2UuZ2V0KCksIG1fd2ViUGFnZSk7Cit9CisKK0FjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQ6On5BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKCkKK3sKKyAg
ICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93aW5kb3cpOworfQorCitib29sIEFjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQ6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmICgh
QWNjZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2luZG93LCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpLCAwLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXls
YW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWM1
ODFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9XbFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHdheWxhbmQtZWds
LWNvcmUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFj
ZVdheWxhbmQgZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kPiBjcmVhdGUoV2ViUGFnZSYpOworICAgIH5BY2NlbGVyYXRlZFN1cmZh
Y2VXYXlsYW5kKCk7CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihtX3dpbmRvdyk7IH0KKyAgICB1aW50NjRf
dCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7
IH0KKyAgICBib29sIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZChXZWJQYWdlJik7CisKKyAg
ICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gbV9zdXJmYWNlOworICAg
IHN0cnVjdCB3bF9lZ2xfd2luZG93KiBtX3dpbmRvdyB7IG51bGxwdHIgfTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJm
YWNlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxl
cmF0ZWRTdXJmYWNlWDExLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
NTU1N2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkU3VyZmFjZVgxMS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9l
eHRlbnNpb25zL1hjb21wb3NpdGUuaD4KKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVgxMT4gQWNjZWxl
cmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKK3sKKyAgICBpZiAoIWRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLnN1cHBvcnRzWENvbXBvc2l0ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVgxMT4obmV3IEFjY2VsZXJh
dGVkU3VyZmFjZVgxMSh3ZWJQYWdlKSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVgxMTo6QWNj
ZWxlcmF0ZWRTdXJmYWNlWDExKFdlYlBhZ2UmIHdlYlBhZ2UpCisgICAgOiBBY2NlbGVyYXRlZFN1
cmZhY2Uod2ViUGFnZSkKKyAgICAsIG1fZGlzcGxheShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSkKK3sKKyAgICBT
Y3JlZW4qIHNjcmVlbiA9IERlZmF1bHRTY3JlZW5PZkRpc3BsYXkobV9kaXNwbGF5KTsKKworICAg
IEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBtX2Rpc3BsYXkpOworICAgIEdka1Zpc3VhbCogdmlz
dWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgp
KTsKKyAgICBpZiAoIXZpc3VhbCkKKyAgICAgICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lz
dGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworCisgICAgWFVuaXF1ZUNvbG9y
bWFwIGNvbG9ybWFwKFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dPZlNjcmVl
bihzY3JlZW4pLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKSk7CisKKyAg
ICBYU2V0V2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOworICAgIHdpbmRvd0F0dHJp
YnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBUcnVlOworICAgIHdpbmRvd0F0dHJpYnV0ZXMuY29s
b3JtYXAgPSBjb2xvcm1hcC5nZXQoKTsKKworICAgIC8vIENXQm9yZGVyUGl4ZWwgbXVzdCBiZSBw
cmVzZW50IHdoZW4gdGhlIGRlcHRoIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhcmVudCdzIG9uZS4KKyAg
ICAvLyBTZWUgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci90cmVlL2Rp
eC93aW5kb3cuYz9pZD14b3JnLXNlcnZlci0xLjE2LjAjbjcwMy4KKyAgICB3aW5kb3dBdHRyaWJ1
dGVzLmJvcmRlcl9waXhlbCA9IDA7CisKKyAgICBtX3BhcmVudFdpbmRvdyA9IFhDcmVhdGVXaW5k
b3cobV9kaXNwbGF5LAorICAgICAgICBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwKKyAgICAg
ICAgLTEsIC0xLCAxLCAxLAorICAgICAgICAwLAorICAgICAgICBnZGtfdmlzdWFsX2dldF9kZXB0
aCh2aXN1YWwpLAorICAgICAgICBJbnB1dE91dHB1dCwKKyAgICAgICAgR0RLX1ZJU1VBTF9YVklT
VUFMKHZpc3VhbCksCisgICAgICAgIENXT3ZlcnJpZGVSZWRpcmVjdCB8IENXQ29sb3JtYXAgfCBD
V0JvcmRlclBpeGVsLAorICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7CisgICAgWE1hcFdpbmRv
dyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93LmdldCgpKTsKKworICAgIHdpbmRvd0F0dHJpYnV0
ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlmeU1hc2s7CisgICAgd2luZG93QXR0cmlidXRl
cy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOworCisgICAgLy8gQ3JlYXRlIHRoZSB3aW5kb3cg
b2YgYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5k
b3dzLgorICAgIG1fd2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCisgICAgICAgIG1f
cGFyZW50V2luZG93LmdldCgpLAorICAgICAgICAwLCAwLAorICAgICAgICBzdGQ6Om1heCgxLCBt
X3NpemUud2lkdGgoKSksCisgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSksCisg
ICAgICAgIDAsCisgICAgICAgIENvcHlGcm9tUGFyZW50LAorICAgICAgICBJbnB1dE91dHB1dCwK
KyAgICAgICAgQ29weUZyb21QYXJlbnQsCisgICAgICAgIENXRXZlbnRNYXNrLAorICAgICAgICAm
d2luZG93QXR0cmlidXRlcyk7CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93Lmdl
dCgpKTsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFhFdmVudCBldmVudDsKKyAgICAgICAg
WFdpbmRvd0V2ZW50KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFN0cnVjdHVyZU5vdGlmeU1h
c2ssICZldmVudCk7CisgICAgICAgIGlmIChldmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVu
dC54bWFwLndpbmRvdyA9PSBtX3dpbmRvdy5nZXQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgTm9FdmVudE1h
c2spOworICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93Lmdl
dCgpLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisgICAgbV9waXhtYXAgPSBYQ29tcG9zaXRl
TmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKK30KKworQWNjZWxl
cmF0ZWRTdXJmYWNlWDExOjp+QWNjZWxlcmF0ZWRTdXJmYWNlWDExKCkKK3sKKyAgICBBU1NFUlQo
bV9kaXNwbGF5KTsKKyAgICBBU1NFUlQobV93aW5kb3cpOworICAgIEFTU0VSVChtX3BhcmVudFdp
bmRvdyk7CisKKyAgICAvLyBFeHBsaWNpdGx5IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0
byBlbnN1cmUgaXQgaGFwcGVucyBpbiB0aGlzIG9yZGVyLgorICAgIG1fd2luZG93LnJlc2V0KCk7
CisgICAgbV9wYXJlbnRXaW5kb3cucmVzZXQoKTsKK30KKworYm9vbCBBY2NlbGVyYXRlZFN1cmZh
Y2VYMTE6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmICghQWNjZWxlcmF0
ZWRTdXJmYWNlOjpyZXNpemUoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0
byBjcmVhdGUgZW1wdHkgd2luZG93cy4KKyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93
aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgbV9z
aXplLmhlaWdodCgpKSk7CisgICAgWEZsdXNoKG1fZGlzcGxheSk7CisKKyAgICAvLyBSZWxlYXNl
IHRoZSBwcmV2aW91cyBwaXhtYXAgbGF0ZXIgdG8gZ2l2ZSBzb21lIHRpbWUgdG8gdGhlIFVJIHBy
b2Nlc3MgdG8gdXBkYXRlLgorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKHN0ZDo6
Y2hyb25vOjpzZWNvbmRzKDUpLCBbcGl4bWFwID0gV1RGTW92ZShtX3BpeG1hcCldIHsgfSk7Cisg
ICAgbV9waXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2lu
ZG93LmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZVgxMS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVy
YXRlZFN1cmZhY2VYMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDcy
ZDUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9YRGlz
cGxheSBEaXNwbGF5OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIFBpeG1hcDsKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyBXaW5kb3c7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
OworCitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VYMTEgZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0
ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VY
MTEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVgxMT4gY3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB+
QWNjZWxlcmF0ZWRTdXJmYWNlWDExKCk7CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQorICAgIHVpbnQ2NF90IHN1cmZhY2VJ
RCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4bWFwLmdldCgpOyB9CisgICAgYm9vbCBy
ZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IEFjY2VsZXJhdGVkU3VyZmFjZVgxMShXZWJQYWdlJik7CisKKyAgICBEaXNwbGF5KiBtX2Rpc3Bs
YXkgeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKKyAg
ICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1fcGFyZW50V2luZG93OworICAgIFdlYkNvcmU6OlhV
bmlxdWVQaXhtYXAgbV9waXhtYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKaW5kZXggOWEwOTJlZC4uMmZjZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAKKyNpbmNsdWRlICJBY2Nl
bGVyYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCkBAIC00NiwyMCArNDcs
OCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgotCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgotI2lmIGRlZmluZWQoR0RLX1dJTkRP
V0lOR19YMTEpCi0jZGVmaW5lIFJlZ2lvbiBYUmVnaW9uCi0jZGVmaW5lIEZvbnQgWEZvbnQKLSNk
ZWZpbmUgQ3Vyc29yIFhDdXJzb3IKLSNkZWZpbmUgU2NyZWVuIFhTY3JlZW4KLSNpbmNsdWRlIDxn
ZGsvZ2RreC5oPgotI2VuZGlmCi0KLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKLSNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIgotI2VuZGlmCisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC0xMzcsOSArMTI2LDcgQEAgUmVmPExheWVyVHJlZUhvc3RHdGs+IExheWVyVHJlZUhvc3RHdGs6
OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQogCiBMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVI
b3N0R3RrKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCi0j
aWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgLCBtX3JlZGlyZWN0ZWRX
aW5kb3coUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZSh3ZWJQYWdlKSkKLSNlbmRp
ZgorICAgICwgbV9zdXJmYWNlKEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKHdlYlBhZ2UpKQog
ICAgICwgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcihzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6
OnJlbmRlckZyYW1lLCB0aGlzKSkKIHsKICAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6
OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CkBAIC0xNjcsMjkgKzE1NCwy
MiBAQCBMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3RrKFdlYlBhZ2UmIHdlYlBhZ2Up
CiAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5n
ZXQoKSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3Jl
ZGlyZWN0ZWRXaW5kb3cpIHsKKyAgICBpZiAobV9zdXJmYWNlKSB7CiAgICAgICAgIGNyZWF0ZVRl
eHR1cmVNYXBwZXIoKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1f
cmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5j
b250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogICAgIH0KLSNlbmRpZgogfQogCiBi
b29sIExheWVyVHJlZUhvc3RHdGs6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7Ci0jaWYgVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgdWludDY0X3QgbmF0aXZlSGFuZGxlID0g
bV9yZWRpcmVjdGVkV2luZG93ID8gbV9yZWRpcmVjdGVkV2luZG93LT53aW5kb3coKSA6IG1fbGF5
ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7Ci0jZWxzZQotICAgIHVpbnQ2NF90IG5hdGl2ZUhhbmRs
ZSA9IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7Ci0jZW5kaWYKLQorICAgIHVpbnQ2NF90
IG5hdGl2ZUhhbmRsZSA9IG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+d2luZG93KCkgOiBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEOwogICAgIGlmICghbmF0aXZlSGFuZGxlKSB7CiAgICAgICAg
IG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICBpZiAoIW1fY29udGV4dCkgewotICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0
ZUNvbnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG5h
dGl2ZUhhbmRsZSksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgICAgIG1fY29u
dGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0
PEdMTmF0aXZlV2luZG93VHlwZT4obmF0aXZlSGFuZGxlKSwgJlBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOwogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMjksOSArMjA5LDcgQEAgdm9pZCBM
YXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKICAgICBtX2NvbnRleHQgPSBudWxscHRyOwog
ICAgIExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQotICAgIG1fcmVkaXJlY3RlZFdpbmRvdyA9IG51bGxwdHI7Ci0jZW5k
aWYKKyAgICBtX3N1cmZhY2UgPSBudWxscHRyOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6
OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkKQEAgLTI3MSwyNCArMjQ5LDE2
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBu
ZXdTaXplKQogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlz
cGxheUluUmVjdChGbG9hdFJlY3QoMCwgb2xkU2l6ZS5oZWlnaHQoKSwgbmV3U2l6ZS53aWR0aCgp
LCBuZXdTaXplLmhlaWdodCgpIC0gb2xkU2l6ZS5oZWlnaHQoKSkpOwogICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAg
ICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG5ld1NpemUpOwotICAgICAgICBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKLSAg
ICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKG5ld1Np
emUpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5z
dXJmYWNlSUQoKTsKIAogICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChGb3JSZXNpemUpOwog
fQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKG1f
cmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZSht
X3dlYlBhZ2Uuc2l6ZSgpKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9
IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1f
c3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgpKSkKKyAgICAgICAg
bV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7CiAK
ICAgICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2YgdGhlIHNjYWxlIGZhY3RvciBjaGFuZ2Ugdmlh
IFdlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5o
CmluZGV4IGQ2OWRlOTcuLjQ0NzQ1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC0zOSw3ICszOSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZTsKIAogY2xhc3MgTGF5ZXJUcmVlSG9zdEd0
ayBmaW5hbCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTEwOSw5ICsxMDksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OwogICAgIFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVNYXRyaXg7Ci0jaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93PiBtX3JlZGlyZWN0ZWRXaW5kb3c7Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgUmVuZGVyRnJhbWVTY2hlZHVs
ZXIgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMzJhZTIuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIgotCi0jaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KLSNpbmNsdWRlIDxYMTEvWGxpYi5oPgotI2luY2x1
ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgot
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93PiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBh
Z2UpCi17Ci0gICAgaWYgKCFkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpKS5zdXBwb3J0c1hDb21wb3NpdGUoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdz4obmV3IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KHdlYlBhZ2UpKTsKLX0K
LQotUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KFdlYlBhZ2UmIHdlYlBhZ2UpCi0gICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKLSAgICAsIG1fZGlz
cGxheShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5uYXRpdmUoKSkKLSAgICAsIG1fc2l6ZSh3ZWJQYWdlLnNpemUoKSkKLXsKLSAg
ICBtX3NpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgU2Ny
ZWVuKiBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7Ci0KLSAgICBB
U1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gbV9kaXNwbGF5KTsKLSAgICBHZGtWaXN1YWwqIHZpc3Vh
bCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7
Ci0gICAgaWYgKCF2aXN1YWwpCi0gICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5c3Rl
bV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLQotICAgIFhVbmlxdWVDb2xvcm1h
cCBjb2xvcm1hcChYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290V2luZG93T2ZTY3JlZW4o
c2NyZWVuKSwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9jTm9uZSkpOwotCi0gICAg
WFNldFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKLSAgICB3aW5kb3dBdHRyaWJ1
dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gVHJ1ZTsKLSAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9y
bWFwID0gY29sb3JtYXAuZ2V0KCk7Ci0KLSAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJl
c2VudCB3aGVuIHRoZSBkZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCi0gICAg
Ly8gU2VlIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgv
d2luZG93LmM/aWQ9eG9yZy1zZXJ2ZXItMS4xNi4wI243MDMuCi0gICAgd2luZG93QXR0cmlidXRl
cy5ib3JkZXJfcGl4ZWwgPSAwOwotCi0gICAgbV9wYXJlbnRXaW5kb3cgPSBYQ3JlYXRlV2luZG93
KG1fZGlzcGxheSwKLSAgICAgICAgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksCi0gICAgICAg
IC0xLCAtMSwgMSwgMSwKLSAgICAgICAgMCwKLSAgICAgICAgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgo
dmlzdWFsKSwKLSAgICAgICAgSW5wdXRPdXRwdXQsCi0gICAgICAgIEdES19WSVNVQUxfWFZJU1VB
TCh2aXN1YWwpLAotICAgICAgICBDV092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dC
b3JkZXJQaXhlbCwKLSAgICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3co
bV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdy5nZXQoKSk7Ci0KLSAgICB3aW5kb3dBdHRyaWJ1dGVz
LmV2ZW50X21hc2sgPSBTdHJ1Y3R1cmVOb3RpZnlNYXNrOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMu
b3ZlcnJpZGVfcmVkaXJlY3QgPSBGYWxzZTsKLQotICAgIC8vIENyZWF0ZSB0aGUgd2luZG93IG9m
IGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93
cy4KLSAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LAotICAgICAgICBtX3Bh
cmVudFdpbmRvdy5nZXQoKSwKLSAgICAgICAgMCwgMCwKLSAgICAgICAgc3RkOjptYXgoMSwgbV9z
aXplLndpZHRoKCkpLAotICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpLAotICAg
ICAgICAwLAotICAgICAgICBDb3B5RnJvbVBhcmVudCwKLSAgICAgICAgSW5wdXRPdXRwdXQsCi0g
ICAgICAgIENvcHlGcm9tUGFyZW50LAotICAgICAgICBDV0V2ZW50TWFzaywKLSAgICAgICAgJndp
bmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQo
KSk7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICBYRXZlbnQgZXZlbnQ7Ci0gICAgICAgIFhX
aW5kb3dFdmVudChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBTdHJ1Y3R1cmVOb3RpZnlNYXNr
LCAmZXZlbnQpOwotICAgICAgICBpZiAoZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQu
eG1hcC53aW5kb3cgPT0gbV93aW5kb3cuZ2V0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgWFNlbGVjdElucHV0KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNr
KTsKLSAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQo
KSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwotICAgIG1fcGl4bWFwID0gWENvbXBvc2l0ZU5h
bWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7Ci19Ci0KLVJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQotewotICAg
IEFTU0VSVChtX2Rpc3BsYXkpOwotICAgIEFTU0VSVChtX3dpbmRvdyk7Ci0gICAgQVNTRVJUKG1f
cGFyZW50V2luZG93KTsKLQotICAgIC8vIEV4cGxpY2l0bHkgcmVzZXQgdGhlc2UgYmVjYXVzZSB3
ZSBuZWVkIHRvIGVuc3VyZSBpdCBoYXBwZW5zIGluIHRoaXMgb3JkZXIuCi0gICAgbV93aW5kb3cu
cmVzZXQoKTsKLSAgICBtX3BhcmVudFdpbmRvdy5yZXNldCgpOwotfQotCi12b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBJ
bnRTaXplIHNjYWxlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShtX3dlYlBhZ2Uu
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgaWYgKHNjYWxlZFNpemUgPT0gbV9zaXplKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3NpemUgPSBzY2FsZWRTaXplOwotCi0gICAgLy8gUmVzaXpl
IHRoZSB3aW5kb3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0
ZSBlbXB0eSB3aW5kb3dzLgotICAgIFhSZXNpemVXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5n
ZXQoKSwgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVp
Z2h0KCkpKTsKLSAgICBYRmx1c2gobV9kaXNwbGF5KTsKLQotICAgIC8vIFJlbGVhc2UgdGhlIHBy
ZXZpb3VzIHBpeG1hcCBsYXRlciB0byBnaXZlIHNvbWUgdGltZSB0byB0aGUgVUkgcHJvY2VzcyB0
byB1cGRhdGUuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
OnNlY29uZHMoNSksIFtwaXhtYXAgPSBXVEZNb3ZlKG1fcGl4bWFwKV0geyB9KTsKLSAgICBtX3Bp
eG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0
KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRhNTRkOS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTYgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykKLQotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0K
LXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwotdHlwZWRlZiB1bnNpZ25lZCBsb25n
IFBpeG1hcDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoV2ViUGFnZSYpOwotICAg
IH5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOwotCi0gICAgV2luZG93IHdpbmRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9Ci0gICAgUGl4bWFwIHBpeG1hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGl4bWFwLmdldCgpOyB9Ci0gICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwotCi1wcml2YXRlOgotICAgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KFdlYlBhZ2UmKTsKLQotICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKLSAgICBEaXNwbGF5KiBtX2Rp
c3BsYXkgeyBudWxscHRyIH07Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Ci0gICAgV2Vi
Q29yZTo6WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKLSAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93
IG1fcGFyZW50V2luZG93OwotICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9waXhtYXA7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMjA4YjZlNi4uNTBiZDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0zMDAsNiArMzAwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS0+c2V0RGVmYXVsdE9yaWdpblF1b3RhKDI1VUxM
ICogMTAyNCAqIDEwMjQpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIG1f
d2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSA9IHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5TmFtZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmICghcGFy
YW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlh
Q2FjaGVEaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCBiYjg4NzgyLi5jNzcwZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtMTk3LDYgKzE5NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEFsbEdlb2xvY2F0
aW9uUGVybWlzc2lvbnMoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBT
dHJpbmcgd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsgfQorI2VuZGlmCisKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqKTsKICAgICBzdGF0
aWMgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2Jq
ZWN0Kik7CiAKQEAgLTQwNCw2ICs0MDgsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpVc2VyR2VzdHVyZVRva2VuICosIHVpbnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOworCisj
aWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBTdHJpbmcgbV93YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXlOYW1lOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="commit-queue"
          id="309839"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286292</attachid>
            <date>2016-08-17 03:05:42 -0700</date>
            <delta_ts>2016-08-22 02:59:57 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>790083</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
klIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAA4KEUkAAAAAAAAAAAAAAAAJABwAZmFzdC9kb20v
VVQJAANbHbRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAAOChFJAAAAAAAAAAAAAAAAFAAc
AGZhc3QvZG9tL2JlZm9yZWxvYWQvVVQJAANbHbRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIA
CAAOChFJVblv1MEAAABPAQAAQgAcAGZhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLXZpZGVvLWlu
LWJlZm9yZWxvYWQtbGlzdGVuZXItc3RkZXJyLnR4dFVUCQADWx20V1sdtFd1eAsAAQT1AQAABFAA
AACtjkFrwkAUhO/+ivGUCrq83cQkLngQU4oIFoKQg3iI8WkCm03QjfTnm4BQCh57mhkYPj5FMpxR
PJMRSGoZahUJXwYomlrkbWtYZHzaVm6IdWMdWycSfrBp2rrvh0UU01xLimI/VMHxLyRbpbvN7ksD
AWl8pul3qntyZ87Wc7iyw5kveWccKtt2w3pUBU+xSbAETcG321DGI/XOUvn/YNlDfi1j8jX2Jb/V
Av0QvA/bGTPxUOZ32OZ1KMrcWjZ3MXoCUEsDBAoAAAAAACAKEUkAAAAAAAAAAAAAAAAMABwAZmFz
dC9ldmVudHMvVVQJAAN8HbRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAgChFJaQstfsEA
AABPAQAAPwAcAGZhc3QvZXZlbnRzL21lZGlhLWZvY3VzLWluLXN0YW5kYWxvbmUtbWVkaWEtZG9j
dW1lbnQtc3RkZXJyLnR4dFVUCQADfB20V3wdtFd1eAsAAQT1AQAABFAAAACtjjGLwkAUhHt/xVjF
A13eejHrLliIyiGCQhAsxCImTxPYbIJu5H6+CRychaXVzMDw8Y1JRiOajqQCSSOVIRJhREirUiR1
bVkc+LwpfBeLynl2Xiz5wbaqy7YftVJKG0lKhxMdnV4gE43DPN6utz8GCMlgFce72LTkxmYu8Liy
R8aXpLEehaubbj2KlIdYLzEDDcG3W1f6vfE7S/UJyxbybzmlb4N9zm+1QL+EYOAaa78C5Mkdrvo7
pHniHNu76D0BUEsDBAoAAAAAADkCEUkAAAAAAAAAAAAAAAALABwAZmFzdC9mb3Jtcy9VVAkAA54P
tFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIADkCEUkeyN70rAAAAOoAAAAzABwAZmFzdC9m
b3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaC1zdGRlcnIudHh0VVQJAAOeD7RXng+0
V3V4CwABBPUBAAAEUAAAAH2NMQ+CMBSEd3/Fm0loilao3Yw6GJ0YdDAOFR7QBPuwfWr896JxdrrL
5e67qczyVOo0K0BKkxVmLkWRK6joKuww9CiOeNk5/siKPKNnscYH9jRcR3+aKqW1WSyU1DN9hiRJ
ID0tD8sYkUuMdA8V7snWzrcl3u4YGRrnXex+4dFxtwmBgjnD00aIIxSYwHpwPrL1FQI18J/IneXv
2vYBbf36XWAtYNt6CmNVTN5QSwMECgAAAAAAQgIRSQAAAAAAAAAAAAAAAAwAHABmYXN0L2ZyYW1l
cy9VVAkAA6sPtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIADUKEUnbCNNCOwAAAD8AAAAv
ABwAZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3VzLXN0ZGVyci50eHRVVAkAA6Ud
tFerD7RXdXgLAAEE9QEAAARQAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQq
QMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAAAAAAWAIRSQAAAAAAAAAAAAAAAAwAHABmYXN0
L2ltYWdlcy9VVAkAA9cPtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAE8KEUkhj704MgAA
ADMAAAAsABwAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAkA
A9YdtFfXD7RXdXgLAAEE9QEAAARQAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYKmXnJ+UVF
qcklCimJJYkKyRmpydl6XABQSwMECgAAAAAAaQIRSQAAAAAAAAAAAAAAAAwAHABmYXN0L2xvYWRl
ci9VVAkAA/YPtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFgKEUnbCNNCOwAAAD8AAABS
ABwAZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNh
bi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUCQAD5x20V+gPtFd1eAsAAQT1AQAABFAAAABz
LClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4
AFBLAwQUAAIACABaChFJ2wjTQjsAAAA/AAAAUwAcAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVk
LXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0
VVQJAAPrHbRX7A+0V3V4CwABBPUBAAAEUAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARK
KJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBBQAAgAIAGEKEUnbCNNCOwAAAD8AAAAt
ABwAZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS1zdGRlcnIudHh0VVQJAAP1HbRX
9g+0V3V4CwABBPUBAAAEUAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDE
M4sVklIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAJsCEUkAAAAAAAAAAAAAAAAPABwAZmFzdC9z
Y3JvbGxpbmcvVVQJAANWELRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAACOChFJAAAAAAAA
AAAAAAAAEwAcAGZhc3Qvc2Nyb2xsaW5nL2lvcy9VVAkAA0setFf0I7RXdXgLAAEE9QEAAARQAAAA
UEsDBBQAAgAIAI4KEUnN2pZUyAAAACEBAAA4ABwAZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1l
dmVudHMtYmFjay1mb3J3YXJkLWFjdHVhbC50eHRVVAkAA0setFdLHrRXdXgLAAEE9QEAAARQAAAA
VVDbasMwDH3XVxzyPMK6Pyglg0FHAwns2fWUxNS1hmUv5O+nsI2xt4N0btLIWhRlcQXqs8QI/uRU
EIMWTpwVWoJNV8k3uKlwxiwhzbg6f0MROHy4mRGSmfA39s4v3BJdErR6z6oP2KRi3Y2U2TTKObBC
JjT9cRga3I1lWmNOVkJWfsd1QzN2w4jT5bU/d2PXmCftCbrIisc/eKDn48v554Bu73+SakfYskYz
YhxavDnFU0t73G+tqca49S6rpQX7Qq5M9C+S6AtQSwMEFAACAAgAjgoRSdoRaaDoAAAAwQEAADYA
HABmYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWV2ZW50cy1iYWNrLWZvcndhcmQtZGlmZi50eHRV
VAkAA0setFdLHrRXdXgLAAEE9QEAAARQAAAAxY7BTsMwDIbveQrfSxqGhLh2bEVCDFHRip7d1N0i
sqaKHba9PSvbAYkH4GL71y9/+rTWYD6CT3tis0ZBU7a1aal7cXJdj8n53ryTJ2TSbtqFkdjtk0cJ
0Xg8hSRaiEVH4uSFzYAshm0M3rtxa1zga9L0RaOw7tB+6iHEA8Ze03EiK9TnchSVZdl/+6CVhP7H
pihA3988QDaPolCgYMIt8S4c4PbXvVC6WtY1XKjlDF2FNAo4PnfZ0/J587c7fybfQ0ewyKFFhrtc
wQWTrCXmIXl/qjAy9TNIYqLZoCnrBlZvr9WmbEr1DVBLAwQUAAIACACOChFJkDh7MLoAAAASAQAA
OgAcAGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtZXZlbnRzLWJhY2stZm9yd2FyZC1leHBlY3Rl
ZC50eHRVVAkAA0setFdLHrRXdXgLAAEE9QEAAARQAAAAVY/BasNADETv+xWDz6EknxCCby0x2D+w
3sr2ks0qrLQx/vvIpLT0NkgzT6OBRAW6eIWEwimBnpQVKYpSpiIQjTZdudzgJ6WCmWOeMfpwgzI8
Hn4mxGwQeuvgw0Ifzl0zpIZAIgdsXLHuICGyjFCJJOAJTXfu+wZ3c1nWnJOV4JW+MW5ohrYfcLl+
dZ/t0DbGdPsFWXjF8U+e3A75eaDd+1+42hNRflfvHlNNaet8EcPbUksl5/7dcO4FUEsDBBQAAgAI
AI4KEUlA0/XPEwgAANYbAAA+ABwAZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1ldmVudHMtYmFj
ay1mb3J3YXJkLXByZXR0eS1kaWZmLmh0bWxVVAkAA0setFdLHrRXdXgLAAEE9QEAAARQAAAAvVlr
b9vIFf3uX0HYaA0sTEqyLUeSHRWJLaOLZlujNpqPxZAcihMPOezMUI9s97/vnRdFUqQkYNM6cMh5
n3vvuY+hH1KZ0fnZQ4pRDI8MS+RFKeICy4+XpUz8ySV0C7mleH42oyR/v/JmKyKIxLH365kHPxJv
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
B6RjJ6jKaADKgvnzw0A99Punn7+YVocGVDcQp6SQ0rE3CryvqLZSeNeBbf4/afWjAs/0BEVO+xX5
AtSBCiOKoPpISkq3L+rvRbFHoPjgJf6xAWA0PAFsz6T/QZgcjU6BM+qH87Z4ffMe//HLy5fF2+KP
sKf10AkZcp3+c97vUEsDBBQAAgAIAI4KEUkaNhv7ywAAADUBAAAzABwAZmFzdC9zY3JvbGxpbmcv
aW9zL3Njcm9sbFRvLWF0LXBhZ2UtbG9hZC1hY3R1YWwudHh0VVQJAANLHrRXVhC0V3V4CwABBPUB
AAAEUAAAAHVPzWqDQBC+71N8eC5S8wYhWCikRKoQetyuo1m6OmVnN+LbZ8RceuhlDt//dCRJkG42
4TfyGO002eQdxEUOwc8jFo4/go23IyGw7ZH8RKUxlxmSnSORF6ycsfgQIESweqMnAQ8ommPbFphU
pX5VDprLC/X4XlF0ddvhdPloznVXF5ppPsmRvyu9LwDdaU6o/sEP5u34fn5i9QadOCsuN85BKwhV
iasVHEqzDdGNc89LuRu+4AXV6848XxlyCGtjo2iVsilmMubPTGMeUEsDBBQAAgAIAI4KEUmGZ636
7wAAAN8BAAAxABwAZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbFRvLWF0LXBhZ2UtbG9hZC1kaWZm
LnR4dFVUCQADSx60V0setFd1eAsAAQT1AQAABFAAAADFjs1uwkAMhO95Ct+XzRaE1B4DLZWq9oBI
1ahHszGwkslGsZeft28IubX3ygfL82nGY60F9xU5HUncCyq6VVW6irbvQce1TIFrtyEmFLKhPcSG
JBwTo8bOMV5jUqskajuSxCpuh6JOfBeZQ7N3Icp4fUaLalvck+WItaVLS16pzvWimTHmH6ug14Q8
FCkKsPPJI5j55AmKIoPbbMhTOFENdzvQiRqFaWbXi7IcxdVNe46pB0F6Zv42zTLzunj7+G2SQ0xc
w5ZgmkOFArM8gyH/HJo6nvO743tIfxiRJO9JZJeYr2vspP/WY+0S9bV/AFBLAwQUAAIACACOChFJ
zO2dgbkAAAAOAQAANQAcAGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGxUby1hdC1wYWdlLWxvYWQt
ZXhwZWN0ZWQudHh0VVQJAANLHrRXVhC0V3V4CwABBPUBAAAEUAAAAFWOsW7DMAxEd33FwXMRNJ8Q
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
UgiCh9JDjE8TWDdBN6E/vwkU2kOOPc0MDB+fIhmvSK9kApJGKRNpIUONsrmLom0tixOf32o/xq5x
np0Xe+7ZNu196B+JitXaSNLrMEyiz7+QBKdtnqXZqwEiMjjk+XtuBnJnLy7wuLHHha9FZz1q13bj
6uuSl0j32ICW4MdjLPOZmrKM4n+wHCC/lppCg2PFk1qgL0KwcJ21LwGq4gnX/BzKqnCO7VPMvgFQ
SwMECgAAAAAA3AIRSQAAAAAAAAAAAAAAABEAHABodHRwL3Rlc3RzL2NhY2hlL1VUCQADzxC0V/Qj
tFd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAzQoRSf1bbpzBAAAATwEAADAAHABodHRwL3Rlc3Rz
L2NhY2hlL21lbW9yeS1jYWNoZS1wcnVuaW5nLXN0ZGVyci50eHRVVAkAA8EetFfPELRXdXgLAAEE
9QEAAARQAAAArY5Ba4NAFITv+RXTkwnE5e0au7rQQ0lCkEIKEsih9GD1JQrrKska8vOrUCiFHHua
GRg+PkXyOaQklBokjVJGxUJFCmXXiqLvLYsjf701fop15zw7LzZ8Y9v17dg/Uq11bCQlMtUUf/6F
HF/zfbbfGWBFBts8f8/NSB5s5QKPM3tUfCoG69G4fpjWrSl5iWyDF9ASfLlM5WmmHlmu5D9YjpBf
y4Qig0PND7VAd0Iwd4O1iwB1cYXrfg5lXTjH9ipm31BLAwQKAAAAAADjAhFJAAAAAAAAAAAAAAAA
EwAcAGh0dHAvdGVzdHMvY29va2llcy9VVAkAA9oQtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQA
AgAIANMKEUmMClcQvAEAAIArAAA5ABwAaHR0cC90ZXN0cy9jb29raWVzL3RoaXJkLXBhcnR5LWNv
b2tpZS1yZWxheGluZy1zdGRlcnIudHh0VVQJAAPNHrRX2hC0V3V4CwABBPUBAAAEUAAAAO3au26D
MBQG4L1P4Qco+MLFkI1LWFp1iaoOVQdDnNQKwQicVnn7GiXt0o6AGnEWLhbG+NPRbyRghIYOiRzK
EaErxlYed6kfokofXdG2tXRfZPmgjPskzafuDqrZu7n8kLVuj7IxrzHn3FtREsR+zPgbylV/yLQ+
KLkxuhN7iap30extN9TqWlVntOv0ETFkNCL3dpjhUrRTtVxdthjj5152PS5Pqt6W2uBHVXaiO+Pr
sLLDme7kRh1PtbBjDO2qkj0u0iwqeBY5ScETx/dSexR7kbNOYz/yvTwII4q3wgjbvzFCNcMo+XCe
2ImqShilG+wlaZalhDnhOiaOXxB6uUsSpkFCgoTxIv15pMtM+++9W6rGNl8m1d+xP23jqW3JYMuW
aBuQ37Z2NzyS9fxlG1xtPQJ1+w9sF1y3HPJ2MlvI28lsQwJ1O5ltBGvZ7douOBOgbiez5QTWsjlt
IRNGsvXhPWFOW8jbkWw55O2ctpC349hGFPJ2TlvI25FsIW9ntYW8Hcc2hryd1RbydiRbyNtZbSFv
R7FlBL47TGfrQSbMaQtr2a3YQt1C3k5gG0DeTmVL4X+wG7ZdRN1+AVBLAwQKAAAAAAALAxFJAAAA
AAAAAAAAAAAAEAAcAGh0dHAvdGVzdHMvbWlzYy9VVAkAAyYRtFf0I7RXdXgLAAEE9QEAAARQAAAA
UEsDBBQAAgAIAPoKEUkVNTWSegAAALwAAAAqABwAaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWlt
cG9ydC1zdGRlcnIudHh0VVQJAAMYH7RXJhG0V3V4CwABBPUBAAAEUAAAAI2OQQ7DIAwE73mFP0Ag
7aEVvyHEVSwZjIyR+vwS5QPVXlY7h9kspREnI6mAqqIRPsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMz
dv/tbG5Ph6PSRM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhpnxoTYEnHf7oqfeTzupcsMS8/UEsDBAoA
AAAAAPMCEUkAAAAAAAAAAAAAAAAWABwAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL1VUCQAD+RC0V/Qj
tFd1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA4woRSdsI00I7AAAAPwAAADcAHABodHRwL3Rlc3Rz
L25hdmlnYXRpb24vZmFsbGJhY2stYW5jaG9yLXJlbG9hZC1zdGRlcnIudHh0VVQJAAPpHrRX+RC0
V3V4CwABBPUBAAAEUAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sV
klIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAPUCEUkAAAAAAAAAAAAAAAAUABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9VVAkAA/4QtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAABADEUkAAAAA
AAAAAAAAAAAqABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQJ
AAMwEbRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAD1AhFJauvnAsEAAABPAQAATAAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFs
bG93ZWQyLXN0ZGVyci50eHRVVAkAA/4QtFf+ELRXdXgLAAEE9QEAAARQAAAArY5Ba8JAFITv/orp
KRZ0eXm71bjQg6iIFBSC4EF6SOOzCayboBvx5zeBgh48epoZGD4+png0pGQYj0FkWVvDSo8N8uqk
srp2onby81WGLmaVD+KDmstVXFWf2r5nY5KJjYlZE398P0I0dtN0vVovLWDIYpGmm9S25MYdfBTw
KwEHOWaNCyh93XTrWuYywGqOT9AAcj535a3HzywTfoFlC7lbJqQttoU81QLdCFHfN869RyiyC3z1
f8iLzHtxF9X7A1BLAwQUAAIACAAACxFJY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAAyAftFcv
EbRXdXgLAAEE9QEAAARQAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1y
tsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUw
ziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACAABCxFJY6qsbIIAAACo
AAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFm
ZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAAyIftFcwEbRXdXgLAAEE9QEAAARQ
AAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5S
CMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeS
yp2WOdKOza8xRJuC7GpN1PGavlBLAwQKAAAAAAAdAxFJAAAAAAAAAAAAAAAAGgAcAGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvVVQJAANKEbRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAI
CxFJacZuZjQBAABwBQAATgAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRy
b2wtcHJlZmxpZ2h0LWNyZWRlbnRpYWwtYXN5bmMtc3RkZXJyLnR4dFVUCQADMB+0Vz4RtFd1eAsA
AQT1AQAABFAAAADtkr9OwzAQxneewg+A4z9xYidb4pAFxFIhBsTgpG6xmtiR44L69jgqZSkSU6f2
Bp98utN3309HMckhFpBwgElJWUmyRAgMejcmapoGnbzq7tGE5FmHL+d3xm6TRn/qwU2jtuGN05zy
kmDBGcv5O2jMvJPO7YxeBefVVoP+Q9ltHAOTG0x/ABvvRkBBcADfR5mlFWzMoMvjixB6mbWfUbc3
w7pzAT2Zzit/QD+y2iPpvF6ZcT+oqLHUTa9nFJ20tcAcUsJTyAryAIWsU1i0eRWDSZ5laK2CivM2
KGMXlWb5V9Go6VUwziLS4rRuJIMNawlkTEpY1VUDU1zRmjepIJn8XenodD7lpDM2lo+m5jv6J1ty
zjamZaXI84xtcWIrbmz/ZVtc/G7xwpZeJdvi0nd7FWy/AVBLAwQUAAIACAAICxFJyisMB0wBAADg
CgAATQAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0
LWNyZWRlbnRpYWwtc3luYy1zdGRlcnIudHh0VVQJAAMwH7RXPhG0V3V4CwABBPUBAAAEUAAAAO2V
z06EMBDG7z5FH8DSPxQK3KCVi8bLxngwHgrbXZsFSkpXs29vCepFEy9ykh466aSTb75fminFJIU4
g4QDTArKCpJGOM1Ba/tIjWOno0fd3Bof3Wv/Zt3JDMdI6lfd2bHXg3/iNKW8IDjjjKX8GUgznYS1
J6N33jp11KB9UcMxlIHRdqa9gIOzPaDAW4Cvg8x8FRxMp4tlRwg9TNpNqDmbbt9Yj+5M45S7oA9Z
7ZCwTu9Mf+5U0JjzptUTCk7qKsMcUsJjyHJyAzNRxTCv0zIsJniSoL3yKtQPXplhVpHzuQxGTau8
sQMiNY4rKRiUrCaQMSFgWZUSxrikFZdxRhLx1dLidPqMUWOGkF5MTVf0J7acrs0Wz2zpxnZhG8Lc
UuD5jW3+yTbb3u3vbNnabP/tu6Us3ebtamz5NhPWYpuQ7S9bjS3d5u0fsH0HUEsDBBQAAgAIAAgL
EUnO3BQcNAEAAHAFAABLABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1wcmVmbGlnaHQtaGVhZGVycy1hc3luYy1zdGRlcnIudHh0VVQJAAMwH7RXPhG0V3V4CwABBPUB
AAAEUAAAAO2Sv07DMBDGd57CD4Djv42TbIlNFhBLhRgQg5O6xWpiR44L6tvjqJQFJKZO5QaffLrT
d99PRzHJIS4gEQCTivKK5BmjJej9mOlpGkz2bLp7G7NHEz982Fu3y5R5N4OfRuPii6A5FRXBheA8
F69A2Xkvvd9bs44+6J0B/Zt2uzQGJj/Y/gi2wY+AgugBvk0ySyvY2sFUpxch9DSbMKPuYIdN5yN6
sF3Q4Yi+ZE1A0geztuNh0EljqdvezCg5aZsCC0iJYJCX5A4WsmGwbPM6BZditUIbHXWad1Fbt6io
5V8no7bX0XqHSItZoySHircEci4lrJtaQYZr2gjFCrKS3yudnM7nnHXWpfLJ1HxDf2PL+KXZ4oUt
vUq2xU+2KS0rJZ4/2JZntsX/3f7JluNLs72Ku/0EUEsDBBQAAgAIAA4LEUl3yNRwIQEAALgCAABA
ABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tY29va2llLXN0b3JhZ2Ut
c3RkZXJyLnR4dFVUCQADPB+0V0oRtFd1eAsAAQT1AQAABFAAAADtkM9OwzAMxu88RR6ANH+aNl1v
bUIvIC4T4oA4pF02rLVJlWagvT2pxhASPAI+2LJl6/P345SVmFaYSURZzUXNq6ygEg1+ysw8jzZ7
tv09xOzRxg8fjuAOmbbvdvTzZF18kbzksma0kkKU8hVpWI7K+yPYbfTBHCwa3ow7pDM0+xGGM9oH
PyGOokf0Nsmsq2gPo60vmRDytNiwkP4E4673kTxAH0w4ky9ZG4jywW5hOo0maaxzGOxCkpOurajE
nMkciw27w5Vqc7zpyiaFULIoyM5Ek+5dNOBWFb32TTIKg4ngHWEdzVutBNaiY1gIpXDTNhrntOGt
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
c6N8OGAhHLv6tNsSwmXOR3CaDn6/HbjjyfVgfD48/Ya+jEe9/mAbONLKnbfIRvdnjyXjn6lQGY51
r4HefugeHb3LDe9t4cyEe7Xx5ri1xQd1b6w3qAdLQmyZEo8G1DO3bLmQiiQoFVzlt08HkKveqiGk
8P6PFmqrvdQNm/P2wXlwdP/kB3AJ/i8WtnrFfwFQSwMECgAAAAAA4wMRSQAAAAAAAAAAAAAAAAkA
HABpbXBvcnRlZC9VVAkAA7oStFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAOMDEUkAAAAA
AAAAAAAAAAANABwAaW1wb3J0ZWQvdzNjL1VUCQADuhK0V/QjtFd1eAsAAQT1AQAABFAAAABQSwME
CgAAAAAA4wMRSQAAAAAAAAAAAAAAACAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1VUCQADuhK0V/QjtFd1eAsAAQT1AQAABFAAAABQSwMECgAAAAAA4wMRSQAAAAAAAAAAAAAAACYA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL1VUCQADuhK0V/QjtFd1eAsA
AQT1AQAABFAAAABQSwMECgAAAAAA4wMRSQAAAAAAAAAAAAAAACoAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9VVAkAA7oStFf0I7RXdXgLAAEE9QEAAARQAAAAUEsD
BAoAAAAAAOMDEUkAAAAAAAAAAAAAAAAwABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvYmFzaWMvVVQJAAO6ErRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACADS
CxFJRpZ2z5IAAACfAAAARwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL2Jhc2ljL21vZGUtbm8tY29ycy1zdGRlcnIudHh0VVQJAAOsILRXuhK0V3V4CwABBPUBAAAE
UAAAAB3HTQuCMBgA4Hu/4j0W5NrSmvOqRZBINKNDdFj6FsN9yBz194ue27OmbJvQPGEcKCtSWqRb
QrMMOm+JGkeD5IqPo46kwfjxYdDuRSp8o/GjRRdvgnOeF4xuRCYEvUMjL+da4jRp71b/lN457OLv
cGjbExivengqbbCH+VDuZQyo7C4EHypvlXZS1ktIRM7SxewLUEsDBBQAAgAIANILEUmBqZ5DkgAA
AJ8AAABOABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMv
bW9kZS1uby1jb3JzLXdvcmtlci1zdGRlcnIudHh0VVQJAAOrILRXuhK0V3V4CwABBPUBAAAEUAAA
AB3HwQqCMBgA4HtPsWNBri2zbV61CBKJZnSIDkv/Yjj3yxz1+kXf7Vszvk2YTLggjOcpy9OMSs5I
iwM14+iAXuFxtJHWED8YeutftIQ3OBwH8PGmhBAy5yxTG6XYndT6cq40TJNFv/qnQO+hjb+TQ9Oc
iEPTkaexDjoy74u9jgHMsAsBQ4mDsV7rakkSJXm6mH0BUEsDBAoAAAAAAOUDEUkAAAAAAAAAAAAA
AAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9VVAkA
A70StFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIANILEUkZjqpxqgAAALoDAABEABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLWJhc2ljLXN0
ZGVyci50eHRVVAkAA6sgtFe7ErRXdXgLAAEE9QEAAARQAAAAzc49DsIgGADQ3VMwamIRChXo6k9M
NMaIxsE4YPtpiBQaJHp9jbMHYHzbKwmdFkQWVCBCa0ZqVmEuJWpCh03fO8AnuK5twltI7xAf1t/x
HF7gQt+BT2clhOA1JZXiSpAL2urjfqPh+bTBT36YBe+hSV+j1eGwQy6YFt2MddCi4WO21CmC6RYx
hjgPnbFe680YFUpSNhqU/3pqmnOvImXWPZZ5T2Xd4zyX3gdQSwMEFAACAAgA0gsRSQQmj+aqAAAA
ugMAAEsAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2Nv
cnMtYmFzaWMtd29ya2VyLXN0ZGVyci50eHRVVAkAA6sgtFe6ErRXdXgLAAEE9QEAAARQAAAAzc67
CsIwFADQ3a/IqGDjTdOapqsPBEsRoziIQ9SrBNOkxKC/rzj7ARnPdnJg0wyqjAkCrOZQ85IyycjF
d1T3vUV6wPPaRNpifPvwMO5O5/hC6/sOXTxKIURRMyhlIQWcSKv220bh82m8m/ww887hJX5NVrvd
hlivr+SmjcUrGT5mSxUD6m4Rgg9z32njlGrGJJMV46NB/qeXA6Tdmybd42XSvYKn3ZOp9D5QSwME
FAACAAgA0wsRSZpXVtOcAAAAPgEAAEsAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9jb3JzL2NvcnMtbm8tcHJlZmxpZ2h0LXN0ZGVyci50eHRVVAkAA60gtFe9ErRX
dXgLAAEE9QEAAARQAAAAzc49DoIwGADQ3VN01ERqC0gpK2hMJMRYjINxqPBpGvpDSqPX1zh7AMe3
vZjQLCJ5RBkitEhIkTCc0Rh1zmA5jhrwGW57FXAD4eX8oOwDV/AE7UYDNlw4YywtKFnzlDNyRY04
HWsB06ScXX1ROmuhCx+jXdsekHayR3epNPRoPpRbETxIs/He+coZqawQ9RJFPKfJYhb/6sXJv/Te
UEsDBBQAAgAIANMLEUn+bD7SnAAAAD4BAABSABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW5vLXByZWZsaWdodC13b3JrZXItc3RkZXJyLnR4dFVU
CQADrSC0V70StFd1eAsAAQT1AQAABFAAAADNzjEOgjAUANDdU/xRE6ktoKWsoDGREGM1Dsahwtc0
lJaURq+vcfYAjm97MWWriGYR40BZntA84STmAhrXEzUMBskZbzsdSI3h5Xyn7YOU+ETjhh5tuAjO
eZozuhSp4PQKtTwdKonjqJ1dfFE4a7EJH8P2eNyDcaqFu9IGW5h2xUYGj6pfe+986XqlrZTVHCKR
sWQ2iX/1BPuX3htQSwMECgAAAAAAmQURSQAAAAAAAAAAAAAAAAYAHABtZWRpYS9VVAkAA/IVtFf0
I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIADIMEUkvB++jwgAAAE8BAAAtABwAbWVkaWEvYWNj
ZXNzaWJsaXR5LWRlc2NyaWJlcy12aWRlby1zdGRlcnIudHh0VVQJAANgIbRXcxO0V3V4CwABBPUB
AAAEUAAAAK2OQWvCQBSE7/6K8RQFXd7uJjEu9FC0lFCIEAoeSg9pfJrAugm6Cf78JuDBg0dP8w0M
w6dIxktKlnIFkkZro2MRhxplcxZF21oWe/77qv0Ym8Z5dl5suWfbtOeBf+QqihIjJYXrdah+H08U
9u95lmafBgjJ4CPPd7kZnjt7cIHHiT0OfCw661G7thtbX5e8QLrFG2gBvlxGmE7UM8tIvcAyerRM
SBt8V/xUC3QjBDPXWTsPUBVXuOY+KKvCObZXMfkHUEsDBAoAAAAAAJkFEUkAAAAAAAAAAAAAAAAP
ABwAbWVkaWEvY29udHJvbHMvVVQJAAPyFbRX9CO0V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAACZ
BRFJAAAAAAAAAAAAAAAAFAAcAG1lZGlhL2NvbnRyb2xzL2lwYWQvVVQJAAPyFbRX9CO0V3V4CwAB
BPUBAAAEUAAAAFBLAwQUAAIACACLDRFJ+zsNhL4AAABPAQAAWQAcAG1lZGlhL2NvbnRyb2xzL2lw
YWQvY2xvc2UtcGFnZS13aXRoLXBpY3R1cmUtaW4tcGljdHVyZS12aWRlby1hc3NlcnRpb24tZmFp
bHVyZS1zdGRlcnIudHh0VVQJAAPlI7RX8hW0V3V4CwABBPUBAAAEUAAAAK2OsQrCMBiEd5/inKqg
4U9aWw04iIqIoFAEB3Go9dcWYlo0FR/fFgQdHJ3uDo6PT5EM+zTsywgkdRBoRcIPCWlxFUlZGhY7
Pq5y18S0sI6tEzN+sCnKa933ofRlpKVUKqSBf/iCDEbYTeL1cr3QQEAa8zjexLomV+ZkPYcLO5z4
nFTGIbdl1axHnnIPyxnGoB74dmtKu6V+WkZ/sKwhH8sh+RrbjH9qgZ4Er2MrY7oesuQOW7wPaZZY
y+YuWi9QSwMECgAAAAAAmQQRSQAAAAAAAAAAAAAAAAwAHABtZWRpYS90cmFjay9VVAkAAxEUtFf0
I7RXdXgLAAEE9QEAAARQAAAAUEsDBAoAAgAAAIgMEUn+JzjgNQAAADUAAAAqABwAbWVkaWEvdHJh
Y2svdHJhY2staW4tYmFuZC1zdHlsZS1hY3R1YWwudHh0VVQJAAP/IbRXDRS0V3V4CwABBPUBAAAE
UAAAAEZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZAoK
UEsDBBQAAgAIAIgMEUkOgSw70AEAAI4DAAAoABwAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1z
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
ABwAcmV0cmllcy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWV2ZW50cy1iYWNrLWZvcndhcmQt
ZGlmZi50eHRVVAkAA7AjtFewI7RXdXgLAAEE9QEAAARQAAAAzY7BTsMwDIbveQrfSxqGhLh2bEVC
DFHRip3d1N0isqaKHba9PS3bAYkX4GL71y9/+rTWYD6CTwdis0ZBU25rs6X2xcl1PSbnO/NOnpBJ
u3EfBmJ3SB4lROPxHJJoIRYdiZMXNpEkuonXI4thG4P3btgZF/iaNH3RIKxbtJ+6D/GIsdN0GskK
dbmcRGVZ9l+80EpC/2NVFKDvbx4gm0dRKFAw4o54H45w++teKF0t6xou1HKGrkIaBBxPXfa0fN78
7abP5DtoCRY5bJHhLldwwSRriblP3p8rjEzdDJKYaDZoyrqB1dtrtSmbUn0DUEsDBBQAAgAIAG4N
EUmQOHswugAAABIBAABCABwAcmV0cmllcy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWV2ZW50
cy1iYWNrLWZvcndhcmQtZXhwZWN0ZWQudHh0VVQJAAOwI7RXsCO0V3V4CwABBPUBAAAEUAAAAFWP
wWrDQAxE7/sVg8+hJJ8Qgm8tMdg/sN7K9pLNKqy0Mf77yKS09DZIM0+jgUQFuniFhMIpgZ6UFSmK
UqYiEI02Xbnc4CelgpljnjH6cIMyPB5+JsRsEHrr4MNCH85dM6SGQCIHbFyx7iAhsoxQiSTgCU13
7vsGd3NZ1pyTleCVvjFuaIa2H3C5fnWf7dA2xnT7BVl4xfFPntwO+Xmg3ftfuNoTUX5X7x5TTWnr
fBHD21JLJef+3XDuBVBLAwQUAAIACABuDRFJ+nxmKxcIAADeGwAARgAcAHJldHJpZXMvZmFzdC9z
Y3JvbGxpbmcvaW9zL3Njcm9sbC1ldmVudHMtYmFjay1mb3J3YXJkLXByZXR0eS1kaWZmLmh0bWxV
VAkAA7AjtFewI7RXdXgLAAEE9QEAAARQAAAAvVlrb9vIFf3uX0HYaA0sTEqyLUeSHRWJLaOLZluj
NpqPxZAcihMPOezMUI9s97/vnRdFUqQkYNM6cMh5n/s8d+iHVGZ0fvaQYhTDI8MSeVGKuMDy42Up
E39yCd1Cbimen80oyd+vvNmKCCJx7P165sGPxBvpxzhiHEnC8pmXsxzf66GQ8RhzP2RSsmzmjYqN
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
QHWD45QUqB17o8D7imorhXcd2Ob/061+VOKZnqDIab8iX8B1oNKIIqhCkpLS7Yv6u1HsEShCeIl/
bAIYDU8A2zPpf5AmR6NT4Iz64bwtXt+8x3/88vJl8bb4I97TemhiBq7Tf9b7HVBLAwQUAAIACABu
DRFJYCbfkdIAAABNAQAAOwAcAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbFRvLWF0
LXBhZ2UtbG9hZC1hY3R1YWwudHh0VVQJAAOwI7RXsCO0V3V4CwABBPUBAAAEUAAAAHWPwWrDQAxE
7/sVg8/F1M0XhOBCISWmNpQet2vZWbq2ymo3xn9fGefSQy46vJFmRh1JEqSrTfiNPEY7TTZ5B3GR
Q/DziIXjj2DT7UgIbHskP1FpzGWGZOdI5AkrZyw+BAgRrM7oScADiubYtgUm3dJ73RzUlxfq8b2i
6Oq2w+ny3pzrri7U03yQI39TeW8AutGcUD3gLw/4wbwe3853Vm/oxFm5XDkHjSZUJT6t4FCaraB2
n3teyv3gC15QPe/K/cUhh7A2NopGqZpiJmP+1TfmD1BLAwQUAAIACABuDRFJF+H62fgAAAAIAgAA
OQAcAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbFRvLWF0LXBhZ2UtbG9hZC1kaWZm
LnR4dFVUCQADsCO0V7AjtFd1eAsAAQT1AQAABFAAAADNjz9vwkAMxfd8Cu/hcqUgVd0CLZWqdkCk
KupocgZOMrno7OPPt28I2drulQfL76fnZxtjwH4GTgcS+4yKdrGu7Jo2b16HNk+enV0REwoZ3+5D
Q+IPiVFDtIyXkNQoiZpIkljFRtLou31bFLVSx8Dsm531QYbpIxhU0+KODAd0hs4t1Uqu0LNmeZ7/
g5Ow1oTcH1SWYKajB8ino0coywyutaKa/JEc3OxAR2oUxplZzqpqEBdX7SmkDnjpWP676f4vMMny
l9nr+89tsg+JHWwIxgWsUWBSZNAHn3zjwqm4Ob762LsBSaprEtkm5ssSo3RpHdaYqPvnG1BLAwQU
AAIACABuDRFJzO2dgbkAAAAOAQAAPQAcAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9s
bFRvLWF0LXBhZ2UtbG9hZC1leHBlY3RlZC50eHRVVAkAA7AjtFewI7RXdXgLAAEE9QEAAARQAAAA
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
XPaz+OnpqQ/1kuQlVKhW8F2b1pkZwVdA2sr8p8V8PHd1K2EEiX+Y9sBfBfQTc23K9JR3I/fW7Z1M
BC0hpiJ5f54pVcrlaIS+ok204nwFi0oqNXXNsxGjsRx9/WdFxHY0iW6ia/cjgtYy+irP72Ffs999
0N454ZiEOobkDeb9ASKtg/n+Zt5YAqDci8KY4y18QD4AbiTl+0t/E9DvC7PJ/ehvEE+oWaNHpNDo
6cvL6AuJ/0yV+/hYUYZHv4LuIklCWmZAE0nzCjpuLkbAHHBvqAhUXLjOV0zJkSBKUNgvhTKs8XAG
7l+NKJfu12ceIhWWkA8heBWH0N9UiEVqowD1pA228a7ocn/E3OGHnuu7fSAzaLZxZ4q+2AStd0Lm
3SnorJ9h3gbsWozL+xtwLYzft2ZB0h+fA8J9ee9GICwA438GMzsBzOy3AnN7ApjbYTC/koRAd4sD
y42ArHVhn3Qxmo8m0kZaaovM8L49p5HE3nGPkqQx76BHfj7BI78vYlneDbvl04eXF+eSp7Vplytw
C5UneKZtG9Th44a5SQetOoCYn2D+gWBffxchfyzY+feCnf4fwS6GwT5/+NMv+3yRGa8Y9DokmETB
FySDafSbJtaPqr7zE5wzGR/JJrjPY/4WWSf93eTS+MeWwsUpMCfHkr5KEugW04qx7Sf973tYQ1Wi
Ij8W7IC/OmivT5eR72FS58M0KSD+5p84/wtQSwMECgAAAAAAkQQRSQAAAAAAAAAAAAAAAAkAHABz
ZWN1cml0eS9VVAkAAwIUtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAJEEEUkAAAAAAAAA
AAAAAAAfABwAc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUCQADAhS0V/QjtFd1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAkQQRSdNVXOnCAAAATwEAAJsAHABzZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1maWxlLXVybC1hbGxvd2VkLWJ5LW1lZGlhLXNyYy1z
dGFyLXdpdGgtQWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVBy
b3RvY29sLWVuYWJsZWQtc3RkZXJyLnR4dFVUCQADAhS0VwIUtFd1eAsAAQT1AQAABFAAAACtjkFr
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
kmPR7foSt6+X3z2fKQt8U7ikVawdli4MYbNvGKEloktN7yNkEajlF7Uw8j2V7krRpk670t3LEUjE
mK/w8TnmNzoGclXnPrlhwWns5fZ0mCExmaeOWE+hrpuS9KHStpSP3u+XEfhSZJzHMT2VRb6gOpWu
W66Jqc4C3zYO27m2kbiUqiXyvXub2ZaWiy1tT/9kPoyapopU+9KJNbIVxil1vgZCO++Q3X49TYar
YcyOvGcvkZRgZR9l1z7KDNV25fE+L11PyFcZ83Id85xjZj3dkUlpxrbOI+WOScscBTEm8mXbHewJ
linQuwo4MF1HbL0tU+WeqaLHnkNJtaCq9GjHNfYEoQ/AiesYqAwfTlCkzgzkM3DqoZmK+Aq2Spv0
7MJ621WcRTQtMb3BLv3nH0z2eHKYskNN5+PsnGZ6vd+vH+Mjw59Gwt/h+HreLzTN4a/STr2dLvtz
YkScPobXbP/OCMBPmk2TzoeJHHf/evk8/TqeZ2Jy6iwx5mBR/W1aclZTeqTxpILwGUIaXm2q9088
7P3tdGdSnOMaYn2tsQX/Qu9c3mkqbxxfJ73X1FLn/Xj6/t5/P/VcezJv/r8993X343T8uTt9fM/I
njvBZE7H/QvPxaa79/zWqX392BL243g47fklfHkEfq79z6b3flz/fjqf99OpX2/H+Q/nb+N3378l
dtv4f/6fp1//hT9tF8d39GM/7olrks1U+cazhcdnnWk+S1/jrfMKVj6XmYp6qmWGFb59wiUieRPV
WoKl/E1r6HWNbBrt9XL8dmMS3tMurM8pR+aXfkunfQfPuvU34woWtg4Sn2L2/dlAk4/T/RX8eLbv
Wb1hY9MGIQL7ZopllFg4etfrx8vx9h28tXg+OSJqs9n/2N/YQvnpxQV58XzHp1cHD/t1qxz71V2Z
Xa+NlitOPL3CpHXQO1hyXOb5DoMjegE7Zssv9xEcGf4AS6R91nn7T57vM71CJu5qLS+cWseg56i0
ae7V8Xu7cut8aN4YrC3UukbWMC+Vv/XPzmTibsuzK+UH/L4vb/2srSZetwRio0pFOcNjjNoHn+CZ
I/z17X76O0eonx7Nti5rn9J6BbCIK/d/1lYNuwH2MNMBej6GsSZ1doUGR+f4OP7D9cxznFx0zZaS
g+453h7Do3eeF+sl7XoV8mcHSbr/T7+Gq3zgf95ng3dGiZSe/Dx4VpJumPMRpgK0y+Efrz+7v+6y
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
ppw3eH/5sZ829fP9dD59Tsyl4/0x/aU6/PW5f7z/9XL8++l4+4ev24/jP13/etnfT68codxkVcpS
rxp+WOr1+jFioMe/vi6vCd47jss/jrfLX4eRmrof8dE9lzUcs/UrXX3yXOSy/LLU6WP/Pf3E4fh2
uhwP3Eo261kx6a5JRO6nvx//Gpa6nV6+hp34awTb2eqCrAR4CnCq13m9Xe/3aaPZVxFkz9aPGj/m
P+wf+7+uL/98fH389Xm7fh5vj9ORXU3nJ2DXGGhYLfFd/+v4PZ/72/341+vX7Xa8PP66HROxmN0q
mRVFTZ6m4lY8XVJOfljpfuYbW8iseXgKSKTz+Xr/mL7zcdtf7m/X2we7SNbeYNw0Z2tBG1cZ3ix9
5P36dXs9QunKqgYne/9c8nH89di9ft0f14/d2/Xy2J2v+wO4diMEnTfKd2PR73O55etGif/rdn0k
QtjhdJt4xKAQisisz8Ttfdj90+O0P7N3M6vEy93a+fv+Otz2P8cT+Otj/+t/T8Sev+4f+zO7nrOe
u4zkA9fTvP/t+JOXNBc9/MD743b9W7rc+7e3kRzNfmrWVo9cgvu41/d9UkDDed6O9GW5d1NE4GYQ
t3VL78cHez0VOYR1mfwTP29fl/GC/jjy3yiKF1pisWGl77f94ZSE/nQZlNDn9Zw+ebAewxXgVlNZ
Q26ihJDinm/V9evBq+zQVLTDwiPl/nX/+degavkNy6XWrHB98WKzgs3NSHpR9mOJQpsd+0xtf+5P
o2L8PO4fw+8M7gdbQ2WzOrrJx/NtS3J8/Lvl3/46/mK1kM+6cE8fLMtbfv8v1+Hl/uPlv6R/G47k
fL2Dm5C1npnOtbz0U13QU28zsp+fgVrzELXm4IpBRnWRaS/X3PV5v78ugyK8fr+cwHfZrMmIzGCl
UiwGn2aDiGYl2JPP0tCL872Ezo9zrOld3+l+TRs9v9TpwksBt1R6nf84Ojl/P96u2LWQWVuUSTY7
VnKrI+aJ49P60skTW7YfXMfcjoyCEQqBH09x2ni2+tpkDUBk1uRmWWN/e/3r/r7/PPJL6KwxwpQX
tLzN+H6+vuzP/+78+c63pM59VbUiOrl+nu1F2rNh/1l1ZclKXuBTfL1+/mZPLhDd5+uNet0PHp3i
N4qolBD5jRr+5vVv7BZJevMsa1O7Hr3OGq219Oaon36eLmMR6P3rZdiwYVm2qtZooq58LOzWPw9K
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
vRy8DBR8jXokUEr0cSBFYOoUURgceLpD049DxZAo8y+naGY/UEsDBAoAAAAAADgFEUkAAAAAAAAA
AAAAAAALABwAc3ZnL3N0cm9rZS9VVAkAAzsVtFf0I7RXdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAI
ACQNEUmDEiAuiAAAAJoAAAAlABwAc3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4
dFVUCQADIyO0VzsVtFd1eAsAAQT1AQAABFAAAAAdjLEKwkAQRHu/Yn7AIweGyCGCJMFCOwsLsbiY
RQ8uu+GyCerXm1jNvOExh/EJWyCzbmNdVgAP6Yzv+0jmSs0p6BKlsBKrqWiiKH0395st8nx7x65O
SdLeoTz+rbdeSM+BqfLDyyHw5GNo0c4En5L/OHhFJD8ohAkUablDN85DQ2Dh9ZeSmNUPUEsDBAoA
AAAAAEoNEUkAAAAAAAAAAAAAAAAMABwAdHJhbnNpdGlvbnMvVVQJAANrI7RX9CO0V3V4CwABBPUB
AAAEUAAAAFBLAwQKAAAAAABKDRFJAAAAAAAAAAAAAAAADwAcAHRyYW5zaXRpb25zLzNkL1VUCQAD
ayO0V/QjtFd1eAsAAQT1AQAABFAAAABQSwMECgACAAAASg0RSf4nOOA1AAAANQAAADAAHAB0cmFu
c2l0aW9ucy8zZC9pbnRlcnJ1cHRlZC10cmFuc2l0aW9uLWFjdHVhbC50eHRVVAkAA2sjtFdrI7RX
dXgLAAEE9QEAAARQAAAARkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8g
YmUgY2FsbGVkCgpQSwMEFAACAAgASg0RSbUwMQnZAAAAmQEAAC4AHAB0cmFuc2l0aW9ucy8zZC9p
bnRlcnJ1cHRlZC10cmFuc2l0aW9uLWRpZmYudHh0VVQJAANrI7RXayO0V3V4CwABBPUBAAAEUAAA
AMWOQU4DMQxF9zmF99M0artjNaCChMoKKrp2Ew8TyZOMYkd0bk8GITgCK0vfX+8/ay2498x1InFH
VHSPlzd3oesp6s95qJGDeyUmFLJxHnMiiVNl1Fwc45KrWiVRW0gqqzgtmCRqzEncIbiYlEqps1Kw
fy9Lt5l8y7Z6U9N13X95oNeK/G3R92B3mwN0u80e+t7Y8xgFVibImCsHSFnBF5TRdE/3zy93cI4T
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
bmcvZGVsZXRlLWVtb2ppLXN0ZGVyci50eHRVVAUAA0EctFd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACABWDRFJg+HxpEcLAACaVAAADQAYAAAAAAABAAAApIG/xwIAZXJyb3JfbG9nLnR4dFVUBQAD
gyO0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACAKEUkAAAAAAAAAAAAAAAAFABgAAAAAAAAA
EADtQU3TAgBmYXN0L1VUBQADfB20V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAANQBEUkAAAAA
AAAAAAAAAAAMABgAAAAAAAAAEADtQYzTAgBmYXN0L2NhbnZhcy9VVAUAA98OtFd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACADOARFJ6MkmJL4AAABPAQAAOQAYAAAAAAABAAAApIHS0wIAZmFzdC9j
YW52YXMvY2FudmFzLWNyZWF0ZVBhdHRlcm4tdmlkZW8tbG9hZGluZy1zdGRlcnIudHh0VVQFAAPT
DrRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAxAkRSX3jaRiOAAAANAEAACYAGAAAAAAAAQAA
AKSBA9UCAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRlcnIudHh0VVQFAAPPHLRXdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA6AERSQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B8dUC
AGZhc3QvY3NzL1VUBQADBA+0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIANMJEUnbCNNCOwAA
AD8AAAApABgAAAAAAAEAAACkgTTWAgBmYXN0L2Nzcy9jb21wYXJlLWNvbnRlbnQtc3R5bGUtc3Rk
ZXJyLnR4dFVUBQAD7Ry0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAA4KEUkAAAAAAAAAAAAA
AAAJABgAAAAAAAAAEADtQdLWAgBmYXN0L2RvbS9VVAUAA1sdtFd1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAAAOChFJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UEV1wIAZmFzdC9kb20vYmVmb3Jl
bG9hZC9VVAUAA1sdtFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAOChFJVblv1MEAAABPAQAA
QgAYAAAAAAABAAAApIFj1wIAZmFzdC9kb20vYmVmb3JlbG9hZC9yZW1vdmUtdmlkZW8taW4tYmVm
b3JlbG9hZC1saXN0ZW5lci1zdGRlcnIudHh0VVQFAANbHbRXdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAIAoRSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BoNgCAGZhc3QvZXZlbnRzL1VUBQAD
fB20V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACAKEUlpCy1+wQAAAE8BAAA/ABgAAAAAAAEA
AACkgebYAgBmYXN0L2V2ZW50cy9tZWRpYS1mb2N1cy1pbi1zdGFuZGFsb25lLW1lZGlhLWRvY3Vt
ZW50LXN0ZGVyci50eHRVVAUAA3wdtFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA5AhFJAAAA
AAAAAAAAAAAACwAYAAAAAAAAABAA7UEg2gIAZmFzdC9mb3Jtcy9VVAUAA54PtFd1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAA5AhFJHsje9KwAAADqAAAAMwAYAAAAAAABAAAApIFl2gIAZmFzdC9m
b3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAAOeD7RXdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAQgIRSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BftsC
AGZhc3QvZnJhbWVzL1VUBQADqw+0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADUKEUnbCNNC
OwAAAD8AAAAvABgAAAAAAAEAAACkgcTbAgBmYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUt
Zm9jdXMtc3RkZXJyLnR4dFVUBQADpR20V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFgCEUkA
AAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQWjcAgBmYXN0L2ltYWdlcy9VVAUAA9cPtFd1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACABPChFJIY+9ODIAAAAzAAAALAAYAAAAAAABAAAApIGu3AIAZmFz
dC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAUAA9YdtFd1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABpAhFJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UFG3QIAZmFz
dC9sb2FkZXIvVVQFAAP2D7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWAoRSdsI00I7AAAA
PwAAAFIAGAAAAAAAAQAAAKSBjN0CAGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVyci50eHRVVAUAA+cdtFd1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABaChFJ2wjTQjsAAAA/AAAAUwAYAAAAAAABAAAApIFT
3gIAZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1j
YW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVyci50eHRVVAUAA+sdtFd1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACABhChFJ2wjTQjsAAAA/AAAALQAYAAAAAAABAAAApIEb3wIAZmFzdC9sb2FkZXIvcmVs
b2FkLXBvbGljeS1kZWxlZ2F0ZS1zdGRlcnIudHh0VVQFAAP1HbRXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAmwIRSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1Bvd8CAGZhc3Qvc2Nyb2xsaW5n
L1VUBQADVhC0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI4KEUkAAAAAAAAAAAAAAAATABgA
AAAAAAAAEADtQQbgAgBmYXN0L3Njcm9sbGluZy9pb3MvVVQFAANLHrRXdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAjgoRSc3allTIAAAAIQEAADgAGAAAAAAAAQAAAKSBU+ACAGZhc3Qvc2Nyb2xs
aW5nL2lvcy9zY3JvbGwtZXZlbnRzLWJhY2stZm9yd2FyZC1hY3R1YWwudHh0VVQFAANLHrRXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAjgoRSdoRaaDoAAAAwQEAADYAGAAAAAAAAQAAAKSBjeEC
AGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtZXZlbnRzLWJhY2stZm9yd2FyZC1kaWZmLnR4dFVU
BQADSx60V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI4KEUmQOHswugAAABIBAAA6ABgAAAAA
AAEAAACkgeXiAgBmYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWV2ZW50cy1iYWNrLWZvcndhcmQt
ZXhwZWN0ZWQudHh0VVQFAANLHrRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAjgoRSUDT9c8T
CAAA1hsAAD4AGAAAAAAAAQAAAKSBE+QCAGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtZXZlbnRz
LWJhY2stZm9yd2FyZC1wcmV0dHktZGlmZi5odG1sVVQFAANLHrRXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAjgoRSRo2G/vLAAAANQEAADMAGAAAAAAAAQAAAKSBnuwCAGZhc3Qvc2Nyb2xsaW5n
L2lvcy9zY3JvbGxUby1hdC1wYWdlLWxvYWQtYWN0dWFsLnR4dFVUBQADSx60V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAI4KEUmGZ6367wAAAN8BAAAxABgAAAAAAAEAAACkgdbtAgBmYXN0L3Nj
cm9sbGluZy9pb3Mvc2Nyb2xsVG8tYXQtcGFnZS1sb2FkLWRpZmYudHh0VVQFAANLHrRXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAjgoRScztnYG5AAAADgEAADUAGAAAAAAAAQAAAKSBMO8CAGZh
c3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGxUby1hdC1wYWdlLWxvYWQtZXhwZWN0ZWQudHh0VVQFAANL
HrRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAjgoRSexQR1/5BwAANBwAADkAGAAAAAAAAQAA
AKSBWPACAGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGxUby1hdC1wYWdlLWxvYWQtcHJldHR5LWRp
ZmYuaHRtbFVUBQADSx60V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAALUCEUkAAAAAAAAAAAAA
AAAKABgAAAAAAAAAEADtQcT4AgBmYXN0L3RleHQvVVQFAAOFELRXdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgApgoRSZSo6wxrAQAADAYAACMAGAAAAAAAAQAAAKSBCPkCAGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItMi1zdGRlcnIudHh0VVQFAAN4HrRXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
2QIRSQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B0PoCAGZhc3QveHNsL1VUBQADyhC0V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAMkKEUlO+yD4iAAAAOcAAAAlABgAAAAAAAEAAACkgRP7AgBm
YXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQFAAO6HrRXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAyQoRSf2iLmSPAAAA7gAAACcAGAAAAAAAAQAAAKSB+vsCAGZhc3QveHNs
L3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUBQADuh60V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAMoKEUnPj2YOUAAAAKAAAAAkABgAAAAAAAEAAACkger8AgBmYXN0L3hzbC94c2x0
LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAUAA7setFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CADLChFJgUp3rUsAAACsAAAANAAYAAAAAAABAAAApIGY/QIAZmFzdC94c2wveHNsdC10cmFuc2Zv
cm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUBQADvh60V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAJENEUkEA1YOmwEAABADAAARABgAAAAAAAEAAACkgVH+AgBmdWxsX3Jlc3VsdHMu
anNvblVUBQAD8iO0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAANwCEUkAAAAAAAAAAAAAAAAF
ABgAAAAAAAAAEADtQTcAAwBodHRwL1VUBQADzxC0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ANgKEUkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQXYAAwBodHRwL3Rlc3RzL1VUBQAD2B60V3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAANgKEUkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQbsA
AwBodHRwL3Rlc3RzL2FwcGNhY2hlL1VUBQAD2B60V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
ANgKEUmssqIqwwAAAE8BAAAkABgAAAAAAAEAAACkgQkBAwBodHRwL3Rlc3RzL2FwcGNhY2hlL3Zp
ZGVvLXN0ZGVyci50eHRVVAUAA9getFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADcAhFJAAAA
AAAAAAAAAAAAEQAYAAAAAAAAABAA7UEqAgMAaHR0cC90ZXN0cy9jYWNoZS9VVAUAA88QtFd1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACADNChFJ/VtunMEAAABPAQAAMAAYAAAAAAABAAAApIF1AgMA
aHR0cC90ZXN0cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1zdGRlcnIudHh0VVQFAAPBHrRX
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA4wIRSQAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1B
oAMDAGh0dHAvdGVzdHMvY29va2llcy9VVAUAA9oQtFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CADTChFJjApXELwBAACAKwAAOQAYAAAAAAABAAAApIHtAwMAaHR0cC90ZXN0cy9jb29raWVzL3Ro
aXJkLXBhcnR5LWNvb2tpZS1yZWxheGluZy1zdGRlcnIudHh0VVQFAAPNHrRXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAACwMRSQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BHAYDAGh0dHAvdGVz
dHMvbWlzYy9VVAUAAyYRtFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAD6ChFJFTU1knoAAAC8
AAAAKgAYAAAAAAABAAAApIFmBgMAaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRl
cnIudHh0VVQFAAMYH7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA8wIRSQAAAAAAAAAAAAAA
ABYAGAAAAAAAAAAQAO1BRAcDAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9VVAUAA/kQtFd1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACADjChFJ2wjTQjsAAAA/AAAANwAYAAAAAAABAAAApIGUBwMAaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2ZhbGxiYWNrLWFuY2hvci1yZWxvYWQtc3RkZXJyLnR4dFVUBQAD
6R60V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAPUCEUkAAAAAAAAAAAAAAAAUABgAAAAAAAAA
EADtQUAIAwBodHRwL3Rlc3RzL3NlY3VyaXR5L1VUBQAD/hC0V3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAABADEUkAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQY4IAwBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAUAAzARtFd1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAD1AhFJauvnAsEAAABPAQAATAAYAAAAAAABAAAApIHyCAMAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4
dFVUBQAD/hC0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAAALEUljqqxsggAAAKgAAABAABgA
AAAAAAEAAACkgTkKAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94
c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAMgH7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
AQsRSWOqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBNQsDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50
eHRVVAUAAyIftFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAdAxFJAAAAAAAAAAAAAAAAGgAY
AAAAAAAAABAA7UFDDAMAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9VVAUAA0oRtFd1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAICxFJacZuZjQBAABwBQAATgAYAAAAAAABAAAApIGXDAMAaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtY3JlZGVudGlh
bC1hc3luYy1zdGRlcnIudHh0VVQFAAMwH7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACAsR
ScorDAdMAQAA4AoAAE0AGAAAAAAAAQAAAKSBUw4DAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWNyZWRlbnRpYWwtc3luYy1zdGRlcnIudHh0VVQFAAMw
H7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACAsRSc7cFBw0AQAAcAUAAEsAGAAAAAAAAQAA
AKSBJhADAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0
LWhlYWRlcnMtYXN5bmMtc3RkZXJyLnR4dFVUBQADMB+0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAA4LEUl3yNRwIQEAALgCAABAABgAAAAAAAEAAACkgd8RAwBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2Nyb3NzLW9yaWdpbi1jb29raWUtc3RvcmFnZS1zdGRlcnIudHh0VVQFAAM8H7RXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgADgsRSV0M5d8fAQAAuAIAAEYAGAAAAAAAAQAAAKSBehMD
AGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLW5vLWNyZWRlbnRpYWwtcHJv
bXB0LXN0ZGVyci50eHRVVAUAAzwftFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADNCBFJWwRY
DqIFAABNEAAACgAYAAAAAAABAAAApIEZFQMAaHR0cGQuY29uZlVUBQADARu0V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAOMDEUkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQf8aAwBpbXBvcnRl
ZC9VVAUAA7oStFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADjAxFJAAAAAAAAAAAAAAAADQAY
AAAAAAAAABAA7UFCGwMAaW1wb3J0ZWQvdzNjL1VUBQADuhK0V3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAOMDEUkAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQYkbAwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1VUBQADuhK0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOMDEUkA
AAAAAAAAAAAAAAAmABgAAAAAAAAAEADtQeMbAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL1VUBQADuhK0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOMDEUkAAAAAAAAA
AAAAAAAqABgAAAAAAAAAEADtQUMcAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9VVAUAA7oStFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADjAxFJAAAAAAAAAAAA
AAAAMAAYAAAAAAAAABAA7UGnHAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvYmFzaWMvVVQFAAO6ErRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA0gsRSUaWds+S
AAAAnwAAAEcAGAAAAAAAAQAAAKSBER0DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL21vZGUtbm8tY29ycy1zdGRlcnIudHh0VVQFAAOsILRXdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgA0gsRSYGpnkOSAAAAnwAAAE4AGAAAAAAAAQAAAKSBJB4DAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL21vZGUtbm8tY29ycy13
b3JrZXItc3RkZXJyLnR4dFVUBQADqyC0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOUDEUkA
AAAAAAAAAAAAAAAvABgAAAAAAAAAEADtQT4fAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9jb3JzL1VUBQADvRK0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIANIL
EUkZjqpxqgAAALoDAABEABgAAAAAAAEAAACkgacfAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtYmFzaWMtc3RkZXJyLnR4dFVUBQADqyC0V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIANILEUkEJo/mqgAAALoDAABLABgAAAAAAAEAAACkgc8gAwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtYmFzaWMt
d29ya2VyLXN0ZGVyci50eHRVVAUAA6sgtFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADTCxFJ
mldW05wAAAA+AQAASwAYAAAAAAABAAAApIH+IQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW5vLXByZWZsaWdodC1zdGRlcnIudHh0VVQFAAOtILRX
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA0wsRSf5sPtKcAAAAPgEAAFIAGAAAAAAAAQAAAKSB
HyMDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1u
by1wcmVmbGlnaHQtd29ya2VyLXN0ZGVyci50eHRVVAUAA60gtFd1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAACZBRFJAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFHJAMAbWVkaWEvVVQFAAPyFbRX
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMgwRSS8H76PCAAAATwEAAC0AGAAAAAAAAQAAAKSB
hyQDAG1lZGlhL2FjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUBQADYCG0
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAJkFEUkAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADt
QbAlAwBtZWRpYS9jb250cm9scy9VVAUAA/IVtFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACZ
BRFJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UH5JQMAbWVkaWEvY29udHJvbHMvaXBhZC9VVAUA
A/IVtFd1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACLDRFJ+zsNhL4AAABPAQAAWQAYAAAAAAAB
AAAApIFHJgMAbWVkaWEvY29udHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1w
aWN0dXJlLXZpZGVvLWFzc2VydGlvbi1mYWlsdXJlLXN0ZGVyci50eHRVVAUAA+UjtFd1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAACZBBFJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGYJwMAbWVk
aWEvdHJhY2svVVQFAAMRFLRXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAiAwRSf4nOOA1AAAA
NQAAACoAGAAAAAAAAQAAAKSB3icDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtYWN0
dWFsLnR4dFVUBQAD/yG0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIgMEUkOgSw70AEAAI4D
AAAoABgAAAAAAAEAAACkgXcoAwBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWRpZmYu
dHh0VVQFAAP/IbRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiAwRSQz65Oo2AQAAMwIAACwA
GAAAAAAAAQAAAKSBqSoDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtZXhwZWN0ZWQu
dHh0VVQFAAP/IbRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiAwRSbHZSeD4CAAAtSQAADAA
GAAAAAAAAQAAAKSBRSwDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtcHJldHR5LWRp
ZmYuaHRtbFVUBQAD/yG0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIoMEUlKdRtHvQAAAE8B
AAA0ABgAAAAAAAEAAACkgac1AwBtZWRpYS90cmFjay90cmFjay1pbnNlcnQtYWZ0ZXItbG9hZC1j
cmFzaC1zdGRlcnIudHh0VVQFAAMDIrRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEAsRScnt
rj2TAgAA2CQAABoAGAAAAAAAAQAAAKSB0jYDAHB5d2Vic29ja2V0LndzLmxvZy1lcnIudHh0VVQF
AAM/H7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEAsRSZg+E2cIAQAAjwIAABoAGAAAAAAA
AQAAAKSBuTkDAHB5d2Vic29ja2V0LndzLmxvZy1vdXQudHh0VVQFAAM/H7RXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAzggRSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBFTsDAHB5d2Vic29j
a2V0Lndzcy5sb2ctZXJyLnR4dFVUBQADBBu0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAM4I
EUkAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgWo7AwBweXdlYnNvY2tldC53c3MubG9nLW91dC50
eHRVVAUAAwQbtFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACFBBFJAAAAAAAAAAAAAAAACgAY
AAAAAAAAABAA7UG/OwMAcXVpY2tsb29rL1VUBQAD6hO0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAHAMEUnSCr3s0QEAAN4lAAAfABgAAAAAAAEAAACkgQM8AwBxdWlja2xvb2sva2V5bm90ZS0w
OS1zdGRlcnIudHh0VVQFAAPUIbRXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAkQ0RSUUmHTnR
JwAAy6oAAAwAGAAAAAAAAQAAAKSBLT4DAHJlc3VsdHMuaHRtbFVUBQAD8iO0V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAG4NEUkAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQURmAwByZXRyaWVz
L1VUBQADsCO0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAG4NEUkAAAAAAAAAAAAAAAANABgA
AAAAAAAAEADtQYZmAwByZXRyaWVzL2Zhc3QvVVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAbg0RSQAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1BzWYDAHJldHJpZXMvZmFzdC9zY3Jv
bGxpbmcvVVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAbg0RSQAAAAAAAAAAAAAA
ABsAGAAAAAAAAAAQAO1BHmcDAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9zL1VUBQADsCO0V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG4NEUnN2pZUyAAAACEBAABAABgAAAAAAAEAAACkgXNn
AwByZXRyaWVzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtZXZlbnRzLWJhY2stZm9yd2FyZC1h
Y3R1YWwudHh0VVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbg0RSSHVghHtAAAA
0QEAAD4AGAAAAAAAAQAAAKSBtWgDAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1l
dmVudHMtYmFjay1mb3J3YXJkLWRpZmYudHh0VVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAbg0RSZA4ezC6AAAAEgEAAEIAGAAAAAAAAQAAAKSBGmoDAHJldHJpZXMvZmFzdC9zY3Jv
bGxpbmcvaW9zL3Njcm9sbC1ldmVudHMtYmFjay1mb3J3YXJkLWV4cGVjdGVkLnR4dFVUBQADsCO0
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG4NEUn6fGYrFwgAAN4bAABGABgAAAAAAAEAAACk
gVBrAwByZXRyaWVzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtZXZlbnRzLWJhY2stZm9yd2Fy
ZC1wcmV0dHktZGlmZi5odG1sVVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbg0R
SWAm35HSAAAATQEAADsAGAAAAAAAAQAAAKSB53MDAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9z
L3Njcm9sbFRvLWF0LXBhZ2UtbG9hZC1hY3R1YWwudHh0VVQFAAOwI7RXdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAbg0RSRfh+tn4AAAACAIAADkAGAAAAAAAAQAAAKSBLnUDAHJldHJpZXMvZmFz
dC9zY3JvbGxpbmcvaW9zL3Njcm9sbFRvLWF0LXBhZ2UtbG9hZC1kaWZmLnR4dFVUBQADsCO0V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG4NEUnM7Z2BuQAAAA4BAAA9ABgAAAAAAAEAAACkgZl2
AwByZXRyaWVzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGxUby1hdC1wYWdlLWxvYWQtZXhwZWN0
ZWQudHh0VVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbg0RSaYDiigHCAAA6hwA
AEEAGAAAAAAAAQAAAKSByXcDAHJldHJpZXMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbFRvLWF0
LXBhZ2UtbG9hZC1wcmV0dHktZGlmZi5odG1sVVQFAAOwI7RXdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAkQQRSQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BS4ADAHNlY3VyaXR5L1VUBQADAhS0
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAJEEEUkAAAAAAAAAAAAAAAAfABgAAAAAAAAAEADt
QY6AAwBzZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQFAAMCFLRXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAkQQRSdNVXOnCAAAATwEAAJsAGAAAAAAAAQAAAKSB54ADAHNlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby13aXRoLWZpbGUtdXJsLWFsbG93ZWQtYnktbWVk
aWEtc3JjLXN0YXItd2l0aC1BbGxvd0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZVN0YXJUb01h
dGNoQW55UHJvdG9jb2wtZW5hYmxlZC1zdGRlcnIudHh0VVQFAAMCFLRXdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAkQ0RSTsMXHXuCgcAKTsnAAoAGAAAAAAAAQAAAKSBfoIDAHN0YXRzLmpzb25V
VAUAA/IjtFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABnBRFJAAAAAAAAAAAAAAAABAAYAAAA
AAAAABAA7UGwjQoAc3ZnL1VUBQADkRW0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAA8FEUkA
AAAAAAAAAAAAAAANABgAAAAAAAAAEADtQe6NCgBzdmcvYXMtaW1hZ2UvVVQFAAPtFLRXdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgA+QwRSdsI00I7AAAAPwAAAD8AGAAAAAAAAQAAAKSBNY4KAHN2
Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMtZGlzYWJsZWQtc3RkZXJy
LnR4dFVUBQAD1SK0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGcFEUkAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQemOCgBzdmcvY3VzdG9tL1VUBQADkRW0V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAFENEUn6IDkbiAAAAJoAAAAkABgAAAAAAAEAAACkgS6PCgBzdmcvY3VzdG9tL3plcm8t
ZGFzaGFycmF5LXN0ZGVyci50eHRVVAUAA3kjtFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA4
BRFJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UEUkAoAc3ZnL3N0cm9rZS9VVAUAAzsVtFd1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAkDRFJgxIgLogAAACaAAAAJQAYAAAAAAABAAAApIFZkAoA
c3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4dFVUBQADIyO0V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAEoNEUkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQUCRCgB0cmFuc2l0
aW9ucy9VVAUAA2sjtFd1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABKDRFJAAAAAAAAAAAAAAAA
DwAYAAAAAAAAABAA7UGGkQoAdHJhbnNpdGlvbnMvM2QvVVQFAANrI7RXdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgACAAAASg0RSf4nOOA1AAAANQAAADAAGAAAAAAAAQAAAKSBz5EKAHRyYW5zaXRpb25z
LzNkL2ludGVycnVwdGVkLXRyYW5zaXRpb24tYWN0dWFsLnR4dFVUBQADayO0V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAEoNEUm1MDEJ2QAAAJkBAAAuABgAAAAAAAEAAACkgW6SCgB0cmFuc2l0
aW9ucy8zZC9pbnRlcnJ1cHRlZC10cmFuc2l0aW9uLWRpZmYudHh0VVQFAANrI7RXdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgASg0RSQCCS9I/AAAAQwAAADIAGAAAAAAAAQAAAKSBr5MKAHRyYW5z
aXRpb25zLzNkL2ludGVycnVwdGVkLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0VVQFAANrI7RXdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgASg0RSYXk0ETaBwAA6hkAADYAGAAAAAAAAQAAAKSBWpQK
AHRyYW5zaXRpb25zLzNkL2ludGVycnVwdGVkLXRyYW5zaXRpb24tcHJldHR5LWRpZmYuaHRtbFVU
BQADayO0V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFcFEUkAAAAAAAAAAAAAAAALABgAAAAA
AAAAEADtQaScCgB3ZWJhcmNoaXZlL1VUBQADdRW0V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AE0NEUnbCNNCOwAAAD8AAAA6ABgAAAAAAAEAAACkgemcCgB3ZWJhcmNoaXZlL3Rlc3QtbGluay1y
ZWwtc3VicmVzb3VyY2UtYmVmb3JlbG9hZC1zdGRlcnIudHh0VVQFAANxI7RXdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgA0AwRSdpwTLcGMgEATDgkABkAGAAAAAAAAQAAAKSBmJ0KAHdwdHdrX3By
b2Nlc3NfbG9nLm91dC50eHRVVAUAA4citFd1eAsAAQT1AQAABFAAAABQSwUGAAAAAJUAlQA8PgAA
8c8LAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286588</attachid>
            <date>2016-08-22 02:59:57 -0700</date>
            <delta_ts>2016-08-24 04:24:36 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>209533</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYmQ2ZmRiLi5hMjk5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTIxICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIERvY3VtZW50JiBp
bnN0ZWFkIG9mIERvY3VtZW50KiB3aGVuIGdldHRpbmcgY29va2llcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA5MzM0Y2ZiLi5lMzIzZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtMTQ0LDYgKzE0NCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCiAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKQEAgLTM0OCwyNCArMzUw
LDYgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogZW5kaWYgKCkKIAogaWYgKEVO
QUJMRV9XQVlMQU5EX1RBUkdFVCkKLSAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgot
ICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICAgICBE
RVBFTkRTICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3Rr
V2F5bGFuZENsaWVudFByb3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5l
ciBzZXJ2ZXItaGVhZGVyIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L1dlYktpdEd0a1dheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCi0gICAgICAgIENP
TU1BTkQgd2F5bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwg
PiAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFBy
b3RvY29sLmgKLSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFBy
b3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXls
YW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdh
eWxhbmQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50
U291cmNlLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJm
YWNlLmNwcAotICAgICkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwot
ICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLmMKLSAgICApCi0KICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgICAgICR7V0FZTEFORF9JTkNMVURFX0RJUlN9CiAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5k
ZXggZGU2MTI0OC4uZTZhODBjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcApAQCAtMTksMTAgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKIAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQotCiAjaW5jbHVkZSAiR0xDb250
ZXh0LmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU3BlY2lmaWMuaD4KIAogI2lmIFVTRShFR0wpCkBAIC01NywxMiArNTQsNiBAQCBpbmxpbmUg
VGhyZWFkR2xvYmFsR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCgpCiAgICAgcmV0dXJuICpUaHJl
YWRHbG9iYWxHTENvbnRleHQ6OnN0YXRpY0dMQ29udGV4dDsKIH0KIAotR0xDb250ZXh0KiBHTENv
bnRleHQ6OnNoYXJpbmdDb250ZXh0KCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4sIHNoYXJpbmcsIChjcmVhdGVPZmZzY3Jl
ZW5Db250ZXh0KCkpKTsKLSAgICByZXR1cm4gc2hhcmluZy5nZXQoKTsKLX0KLQogI2lmIFBMQVRG
T1JNKFgxMSkKIC8vIEJlY2F1c2Ugb2YgZHJpdmVyIGJ1Z3MsIGV4aXRpbmcgdGhlIHByb2dyYW0g
d2hlbiB0aGVyZSBhcmUgYWN0aXZlIHBidWZmZXJzCiAvLyBjYW4gY3Jhc2ggdGhlIFggc2VydmVy
ICh0aGlzIGhhcyBiZWVuIG9ic2VydmVkIHdpdGggdGhlIG9mZmljaWFsIE52aWRpYSBkcml2ZXJz
KS4KQEAgLTExMSwxMiArMTAyLDMwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29u
dGV4dHNBdEV4aXQoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAorc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKQoreworI2lmIFVTRShPUEVOR0xfRVNfMikK
KyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWluaXRpYWxp
emVkKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyAgICAg
ICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKKyNlbmRp
ZgorfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRl
eHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0KiBz
aGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBQbGF0
Zm9ybURpc3BsYXkqIHBsYXRmb3JtRGlzcGxheSkKIHsKKyAgICBpZiAoIWluaXRpYWxpemVPcGVu
R0xTaGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUGxhdGZv
cm1EaXNwbGF5JiBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5ID8gKnBsYXRmb3JtRGlzcGxheSA6
IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOwogI2lmIFBMQVRGT1JNKFdBWUxBTkQp
ICYmIFVTRShFR0wpCi0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5
cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgaWYgKGF1
dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUs
IHNoYXJpbmdDb250ZXh0KSkKKyAgICBpZiAoZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNw
bGF5OjpUeXBlOjpXYXlsYW5kKSB7CisgICAgICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENv
bnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBkaXNwbGF5KSkKICAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRleHQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CkBAIC0xMjgsMzQgKzEzNyw2MyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBH
TENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiAjZWxz
ZQogICAgIFhJRCBHTFhXaW5kb3dIYW5kbGUgPSBzdGF0aWNfY2FzdDxYSUQ+KHdpbmRvd0hhbmRs
ZSk7CiAjZW5kaWYKLSAgICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVh
dGVDb250ZXh0KEdMWFdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgIGlmIChhdXRv
IGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoR0xYV2luZG93SGFuZGxl
LCBkaXNwbGF5KSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CiAjZW5kaWYK
ICNpZiBVU0UoRUdMKQotICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNy
ZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIGRp
c3BsYXkpKQogICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKICNlbmRpZgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1HTENvbnRleHQ6OkdMQ29udGV4dCgpCitzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoUGxhdGZv
cm1EaXNwbGF5KiBwbGF0Zm9ybURpc3BsYXkpCiB7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIGFk
ZEFjdGl2ZUNvbnRleHQodGhpcyk7CisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXNJZk5l
ZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjcmVhdGVDb250
ZXh0Rm9yV2luZG93KDAsIHBsYXRmb3JtRGlzcGxheSA/IHBsYXRmb3JtRGlzcGxheSA6ICZQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBk
aXNwbGF5KQoreworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChk
aXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAg
ICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRl
eHQoZGlzcGxheSkpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisjaWYgVVNFKEdMWCkKKyAgICBp
ZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVTaGFyaW5nQ29udGV4dChk
aXNwbGF5KSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CisjZW5kaWYKKyNp
ZiBVU0UoRUdMKQorICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0
ZVNoYXJpbmdDb250ZXh0KGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250
ZXh0KTsKICNlbmRpZgorICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBz
aGFyaW5nQ29udGV4dCkKK0dMQ29udGV4dDo6R0xDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgZGlz
cGxheSkKKyAgICA6IG1fZGlzcGxheShkaXNwbGF5KQogewotICAgIHJldHVybiBjcmVhdGVDb250
ZXh0Rm9yV2luZG93KDAsIHNoYXJpbmdDb250ZXh0KTsKKyNpZiBQTEFURk9STShYMTEpCisgICAg
aWYgKGRpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAg
ICBhZGRBY3RpdmVDb250ZXh0KHRoaXMpOworI2VuZGlmCiB9CiAKIEdMQ29udGV4dDo6fkdMQ29u
dGV4dCgpCiB7CiAgICAgaWYgKHRoaXMgPT0gY3VycmVudENvbnRleHQoKS0+Y29udGV4dCgpKQot
ICAgICAgICBjdXJyZW50Q29udGV4dCgpLT5zZXRDb250ZXh0KDApOworICAgICAgICBjdXJyZW50
Q29udGV4dCgpLT5zZXRDb250ZXh0KG51bGxwdHIpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBy
ZW1vdmVBY3RpdmVDb250ZXh0KHRoaXMpOworICAgIGlmIChtX2Rpc3BsYXkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZW1vdmVBY3RpdmVDb250ZXh0KHRo
aXMpOwogI2VuZGlmCiB9CiAKQEAgLTE2NSw3ICsyMDMsNyBAQCBib29sIEdMQ29udGV4dDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotR0xDb250ZXh0KiBHTENv
bnRleHQ6OmdldEN1cnJlbnQoKQorR0xDb250ZXh0KiBHTENvbnRleHQ6OmN1cnJlbnQoKQogewog
ICAgIHJldHVybiBjdXJyZW50Q29udGV4dCgpLT5jb250ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IGQ0Mzk0NTQuLjFiODZhM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCkBAIC0y
MSw3ICsyMSw3IEBACiAjZGVmaW5lIEdMQ29udGV4dF9oCiAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgotI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxh
eS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYgVVNFKEVHTCkgJiYgIVBM
QVRGT1JNKEdUSykKQEAgLTM5LDIxICszOSwxOCBAQCB0eXBlZGVmIHVpbnQ2NF90IEdMTmF0aXZl
V2luZG93VHlwZTsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19kZXZpY2UgY2Fpcm9fZGV2aWNlX3Q7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFgxMSkKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBE
aXNwbGF5OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHQpOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEdMQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVPZmZz
Y3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZyA9IDApOwotICAgIHN0YXRpYyBHTENvbnRl
eHQqIGdldEN1cnJlbnQoKTsKLSAgICBzdGF0aWMgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCgp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0Rm9y
V2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSog
PSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRl
T2Zmc2NyZWVuQ29udGV4dChQbGF0Zm9ybURpc3BsYXkqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3Jt
RGlzcGxheSYpOworICAgIHN0YXRpYyBHTENvbnRleHQqIGN1cnJlbnQoKTsKKworICAgIFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQogCi0gICAg
R0xDb250ZXh0KCk7CiAgICAgdmlydHVhbCB+R0xDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpID0g
MDsKQEAgLTY3LDI2ICs2NCwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjYWlyb19kZXZpY2Vf
dCogY2Fpcm9EZXZpY2UoKSA9IDA7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBz
dGF0aWMgRGlzcGxheSogc2hhcmVkWDExRGlzcGxheSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFu
dXBTaGFyZWRYMTFEaXNwbGF5KCk7CisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCisg
ICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpID0g
MDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oWDExKQorcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dCopOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFj
dGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cEFjdGl2ZUNv
bnRleHRzQXRFeGl0KCk7Ci0KLSNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2
aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCkgPSAwOwog
I2VuZGlmCiAKLSAgICBjbGFzcyBEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
fkRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgfTsKLQogcHJvdGVjdGVkOgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEYXRhPiBtX2NvbnRleHREYXRhOworICAgIEdMQ29udGV4dChQbGF0Zm9ybURpc3BsYXkm
KTsKKworICAgIFBsYXRmb3JtRGlzcGxheSYgbV9kaXNwbGF5OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggMTVjZDRkZi4uNmE3MzAy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBHCiB7CiAgICAgc3dpdGNoIChyZW5kZXJTdHlsZSkgewogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbjoKLSAgICAgICAgbV9nbENvbnRleHQg
PSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0OjpzaGFyaW5nQ29u
dGV4dCgpKTsKKyAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVl
bkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1
cnJlbnRHTENvbnRleHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtODUsNyArODUsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIAogUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4
dCgpCiB7Ci0gICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpIDogR0xDb250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOworICAg
IHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdM
Q29udGV4dDo6Y3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlcgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIGlmIChtX2Nv
bnRleHQtPm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC0+bV9zdGF0ZS5ib3VuZEZCTyA9
PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgR0xDb250ZXh0KiBwcmV2
aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICAgICAgR0xD
b250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKICAg
ICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKICAg
ICAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4
IDJlOTFhYTMuLjhkNjE2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogCisjaW5jbHVkZSAiR0xD
b250ZXh0LmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxtdXRleD4KIApAQCAtNTks
NiArNjAsOCBAQAogCiAjaWYgVVNFKEVHTCkKICNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZvcm1EaXNwbGF5
KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgaWYgKEdES19JU19XQVlMQU5E
X0RJU1BMQVkoZGlzcGxheSkpCi0gICAgICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNw
bGF5V2F5bGFuZD4oZ2RrX3dheWxhbmRfZGlzcGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KSk7
CiAjZW5kaWYKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNP
UkVfWCkKQEAgLTEwMyw2ICsxMDYsMTggQEAgUGxhdGZvcm1EaXNwbGF5JiBQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKQogICAgIHJldHVybiAqZGlzcGxheTsKIH0KIAorc3RhdGljIFBs
YXRmb3JtRGlzcGxheSogc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmc7CisKK1BsYXRmb3Jt
RGlzcGxheSYgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKQor
eworICAgIHJldHVybiBzX3NoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyA/ICpzX3NoYXJlZERp
c3BsYXlGb3JDb21wb3NpdGluZyA6IHNoYXJlZERpc3BsYXkoKTsKK30KKwordm9pZCBQbGF0Zm9y
bURpc3BsYXk6OnNldFNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyhQbGF0Zm9ybURpc3BsYXkm
IGRpc3BsYXkpCit7CisgICAgc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcgPSAmZGlzcGxh
eTsKK30KKwogUGxhdGZvcm1EaXNwbGF5OjpQbGF0Zm9ybURpc3BsYXkoKQogI2lmIFVTRShFR0wp
CiAgICAgOiBtX2VnbERpc3BsYXkoRUdMX05PX0RJU1BMQVkpCkBAIC0xMTcsNyArMTMyLDIyIEBA
IFBsYXRmb3JtRGlzcGxheTo6flBsYXRmb3JtRGlzcGxheSgpCiAjZW5kaWYKIH0KIAorI2lmICFQ
TEFURk9STShFRkwpCitHTENvbnRleHQqIFBsYXRmb3JtRGlzcGxheTo6c2hhcmluZ0dMQ29udGV4
dCgpCit7CisgICAgaWYgKCFtX3NoYXJpbmdHTENvbnRleHQpCisgICAgICAgIG1fc2hhcmluZ0dM
Q29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoKnRoaXMpOworICAgIHJl
dHVybiBtX3NoYXJpbmdHTENvbnRleHQuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShFR0wp
CitzdGF0aWMgSGFzaFNldDxQbGF0Zm9ybURpc3BsYXkqPiYgZWdsRGlzcGxheXMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFBsYXRmb3JtRGlzcGxheSo+PiBkaXNwbGF5
czsKKyAgICByZXR1cm4gZGlzcGxheXM7Cit9CisKIEVHTERpc3BsYXkgUGxhdGZvcm1EaXNwbGF5
OjplZ2xEaXNwbGF5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWdsRGlzcGxheUluaXRpYWxpemVk
KQpAQCAtMTMwLDcgKzE2MCw3IEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdM
RGlzcGxheSgpCiAgICAgbV9lZ2xEaXNwbGF5SW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAgICAgaWYg
KG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkgewotLy8gRUdMIGlzIG9wdGlvbmFsbHkg
c29mdCBsaW5rZWQgb24gV2luZG93cy4KKyAgICAgICAgLy8gRUdMIGlzIG9wdGlvbmFsbHkgc29m
dCBsaW5rZWQgb24gV2luZG93cy4KICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIGF1dG8gZWds
R2V0RGlzcGxheSA9IGVnbEdldERpc3BsYXlQdHIoKTsKICAgICAgICAgaWYgKCFlZ2xHZXREaXNw
bGF5KQpAQCAtMTQxLDM2ICsxNzEsMzcgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxp
emVFR0xEaXNwbGF5KCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZWds
SW5pdGlhbGl6ZShtX2VnbERpc3BsYXksIDAsIDApID09IEVHTF9GQUxTRSkgeworICAgIGlmIChl
Z2xJbml0aWFsaXplKG1fZWdsRGlzcGxheSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gRUdMX0ZBTFNF
KSB7CiAgICAgICAgIExPR19FUlJPUigiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQu
Iik7CiAgICAgICAgIHRlcm1pbmF0ZUVHTERpc3BsYXkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICBzdGF0aWMgY29uc3QgRUdMZW51bSBlZ2xB
UElWZXJzaW9uID0gRUdMX09QRU5HTF9FU19BUEk7Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBF
R0xlbnVtIGVnbEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0FQSTsKLSNlbmRpZgotICAgIGlmIChl
Z2xCaW5kQVBJKGVnbEFQSVZlcnNpb24pID09IEVHTF9GQUxTRSkgewotICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBzZXQgRUdMIEFQSSglZCkuIiwgZWdsR2V0RXJyb3IoKSk7Ci0gICAgICAg
IHRlcm1pbmF0ZUVHTERpc3BsYXkoKTsKLSAgICAgICAgcmV0dXJuOworICAgIGVnbERpc3BsYXlz
KCkuYWRkKHRoaXMpOworCisgICAgc3RhdGljIGJvb2wgZWdsQXRleGl0SGFuZGxlckluaXRpYWxp
emVkID0gZmFsc2U7CisgICAgaWYgKCFlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsKKyAg
ICAgICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMgZ2xv
YmFsIGRpc3BsYXkgbGlzdC4KKyAgICAgICAgLy8gU2luY2UgdGhlIGdsb2JhbCBQbGF0Zm9ybURp
c3BsYXkgaW5zdGFuY2UgaXMgY3JlYXRlZCBiZWZvcmUsCisgICAgICAgIC8vIHdoZW4gdGhlIFBs
YXRmb3JtRGlzcGxheSBkZXN0cnVjdG9yIGlzIGNhbGxlZCwgRUdMIGhhcyBhbHJlYWR5IHJlbW92
ZWQgdGhlCisgICAgICAgIC8vIGRpc3BsYXkgZnJvbSB0aGUgbGlzdCwgY2F1c2luZyBlZ2xUZXJt
aW5hdGUoKSB0byBjcmFzaC4gU28sIGhlcmUgd2UgcmVnaXN0ZXIKKyAgICAgICAgLy8gb3VyIG93
biBhdGV4aXQgaGFuZGxlciwgYWZ0ZXIgRUdMIGhhcyBiZWVuIGluaXRpYWxpemVkIGFuZCBhZnRl
ciB0aGUgZ2xvYmFsCisgICAgICAgIC8vIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgdG8gZW5z
dXJlIHdlIGNhbGwgZWdsVGVybWluYXRlKCkgYmVmb3JlIHRoZSBvdGhlcgorICAgICAgICAvLyBF
R0wgYXRleGl0IGhhbmRsZXJzIGFuZCB0aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IuCisg
ICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3
OTczLgorICAgICAgICBlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAg
ICBzdGQ6OmF0ZXhpdChbXSB7CisgICAgICAgICAgICB3aGlsZSAoIWVnbERpc3BsYXlzKCkuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byogZGlzcGxheSA9IGVnbERpc3BsYXlzKCku
dGFrZUFueSgpOworICAgICAgICAgICAgICAgIGRpc3BsYXktPnRlcm1pbmF0ZUVHTERpc3BsYXko
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CiAgICAgfQotCi0gICAgLy8gRUdMIHJlZ2lz
dGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMgZ2xvYmFsIGRpc3BsYXkgbGlzdC4K
LSAgICAvLyBTaW5jZSB0aGUgZ2xvYmFsIFBsYXRmb3JtRGlzcGxheSBpbnN0YW5jZSBpcyBjcmVh
dGVkIGJlZm9yZSwKLSAgICAvLyB3aGVuIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVzdHJ1Y3RvciBp
cyBjYWxsZWQsIEVHTCBoYXMgYWxyZWFkeSByZW1vdmVkIHRoZQotICAgIC8vIGRpc3BsYXkgZnJv
bSB0aGUgbGlzdCwgY2F1c2luZyBlZ2xUZXJtaW5hdGUoKSB0byBjcmFzaC4gU28sIGhlcmUgd2Ug
cmVnaXN0ZXIKLSAgICAvLyBvdXIgb3duIGF0ZXhpdCBoYW5kbGVyLCBhZnRlciBFR0wgaGFzIGJl
ZW4gaW5pdGlhbGl6ZWQgYW5kIGFmdGVyIHRoZSBnbG9iYWwKLSAgICAvLyBpbnN0YW5jZSBoYXMg
YmVlbiBjcmVhdGVkIHRvIGVuc3VyZSB3ZSBjYWxsIGVnbFRlcm1pbmF0ZSgpIGJlZm9yZSB0aGUg
b3RoZXIKLSAgICAvLyBFR0wgYXRleGl0IGhhbmRsZXJzIGFuZCB0aGUgUGxhdGZvcm1EaXNwbGF5
IGRlc3RydWN0b3IuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTc5NzMuCi0gICAgc3RkOjphdGV4aXQoW10geyBQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKS50ZXJtaW5hdGVFR0xEaXNwbGF5KCk7IH0pOwogfQogCiB2b2lkIFBsYXRm
b3JtRGlzcGxheTo6dGVybWluYXRlRUdMRGlzcGxheSgpCiB7CisgICAgbV9zaGFyaW5nR0xDb250
ZXh0ID0gbnVsbHB0cjsKICAgICBBU1NFUlQobV9lZ2xEaXNwbGF5SW5pdGlhbGl6ZWQpOwogICAg
IGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgK
aW5kZXggOTIwOWY0NS4uNzU5MmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKQEAgLTM1LDEwICszNSwxMyBAQCB0eXBlZGVm
IHZvaWQgKkVHTERpc3BsYXk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR0xDb250
ZXh0OworCiBjbGFzcyBQbGF0Zm9ybURpc3BsYXkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBsYXRmb3JtRGlzcGxheSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBQbGF0Zm9ybURpc3BsYXkmIHNoYXJlZERpc3BsYXkoKTsKKyAgICBzdGF0aWMgUGxh
dGZvcm1EaXNwbGF5JiBzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKTsKICAgICB2aXJ0dWFs
IH5QbGF0Zm9ybURpc3BsYXkoKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC01NSw2ICs1
OCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAor
I2lmICFQTEFURk9STShFRkwpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFu
eSBwbGF0Zm9ybSBpZmRlZiwgYnV0IEVGTCBoYXMgaXRzIG93biBFR0xDb250ZXh0IGNsYXNzCisg
ICAgLy8gaW5zdGVhZCBvZiB1c2luZyB0aGUgR0xDb250ZXh0IGNvbW1vbiBBUEkuCisgICAgR0xD
b250ZXh0KiBzaGFyaW5nR0xDb250ZXh0KCk7CisjZW5kaWYKKwogI2lmIFVTRShFR0wpCiAgICAg
RUdMRGlzcGxheSBlZ2xEaXNwbGF5KCkgY29uc3Q7CiAjZW5kaWYKQEAgLTYyLDYgKzcxLDggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtRGlzcGxheSgpOwogCisgICAgc3RhdGlj
IHZvaWQgc2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKFBsYXRmb3JtRGlzcGxheSYpOwor
CiAjaWYgVVNFKEVHTCkKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUVHTERpc3BsYXkoKTsK
IApAQCAtNzYsNiArODcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2VnbERpc3BsYXlJbml0
aWFsaXplZCB7IGZhbHNlIH07CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
PiBtX3NoYXJpbmdHTENvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDhmNDhjMjAuLjNjZDJhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCkBAIC04OCw4ICs4OCw4IEBAIEltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0
YSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1
cnJlbnQoKTsKLSAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0
OjpjdXJyZW50KCk7CisgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9z
aXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
aWYgKG1fdGV4dHVyZSkKICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsK
QEAgLTEwOCw3ICsxMDgsOCBAQCBJbWFnZUJ1ZmZlckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIHZvaWQgSW1hZ2VCdWZmZXJE
YXRhOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCkKIHsKLSAgICBHTENvbnRleHQ6OnNoYXJpbmdD
b250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRl
eHQoKTsKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CkBAIC0xMTksMTUgKzEyMCwxNCBAQCB2b2lk
IEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpCiAgICAgZ2xQaXhlbFN0
b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCAsIEdMX1JHQkEsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogCi0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmlj
ZSA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+Y2Fpcm9EZXZpY2UoKTsKLSAgICBtX2Nv
bXBvc2l0b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3Rl
eHR1cmUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0
dXJlLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CisgICAgbV9jb21wb3NpdG9y
U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNv
bnRleHQtPmNhaXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9z
aXRvclRleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKICAgICBtX2Nv
bXBvc2l0b3JDciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NvbXBvc2l0b3JTdXJmYWNlLmdl
dCgpKSk7CiAgICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2NvbXBvc2l0b3JDci5nZXQoKSwgQ0FJ
Uk9fQU5USUFMSUFTX05PTkUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCgpCiB7Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBH
TENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29u
dGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwogCiAgICAgaWYgKCFtX2NvbXBvc2l0b3JUZXh0
dXJlKSB7CiAgICAgICAgIGNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKTsKQEAgLTE1OSw3ICsxNTks
OCBAQCB2b2lkIGNsZWFyU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAKIHZvaWQg
SW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiB7Ci0gICAgR0xDb250ZXh0
OjpzaGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBhdXRvKiBjb250
ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFy
aW5nR0xDb250ZXh0KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAg
ICAvLyBXZSBtdXN0IGdlbmVyYXRlIHRoZSB0ZXh0dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVy
ZSBpcyBubyBDYWlybyBBUEkgZm9yIGV4dHJhY3RpbmcgaXQKICAgICAvLyBmcm9tIGEgcHJlLWV4
aXN0aW5nIHN1cmZhY2UuCkBAIC0xNzQsNyArMTc1LDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6
OmNyZWF0ZUNhaXJvR0xTdXJmYWNlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwIC8qIGxldmVsICovLCBHTF9SR0JBLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
LCAwIC8qIGJvcmRlciAqLywgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKLSAgICBH
TENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CiAgICAgY2Fp
cm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7CiAKICAgICAvLyBU
aHJlYWQtYXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9uLUludGVsIGRy
aXZlcnMuCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEYKICAgICBB
U1NFUlQobV90ZXh0dXJlKTsKIAogICAgIC8vIENhaXJvIG1heSBjaGFuZ2UgdGhlIGFjdGl2ZSBj
b250ZXh0LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0ZXIgZmx1c2hpbmcu
Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1
cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4
dDo6Y3VycmVudCgpOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
ICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC02
MDksNyArNjA5LDcgQEAgYm9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEJiwgR0MzRGVudW0gdGFyZ2V0LCBQbGEKIAogICAgIGNhaXJvX3N1cmZh
Y2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KDAs
IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdWludDMyX3QgZmJvOwogICAgIGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZmYm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCBhMmJjNzViLi4wYWUzMWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogCiAjaWYgVVNFKENB
SVJPKQogI2luY2x1ZGUgPGNhaXJvLmg+CkBAIC00MCw2ICszOSwxMSBAQAogI2luY2x1ZGUgPFgx
MS9YbGliLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiUGxh
dGZvcm1EaXNwbGF5V2F5bGFuZC5oIgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjZW5kaWYK
KwogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAvLyBjYWlyby1nbC5oIGluY2x1
ZGVzIHNvbWUgZGVmaW5pdGlvbnMgZnJvbSBHTFggdGhhdCBjb25mbGljdCB3aXRoCiAvLyB0aGUg
b25lcyBwcm92aWRlZCBieSB1cy4gU2luY2UgR0xDb250ZXh0RUdMIGRvZXNuJ3QgdXNlIGFueSBH
TFgKQEAgLTUwLDExICs1NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEVH
TERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKLX0KLQogc3RhdGljIGNvbnN0IEVHTGlu
dCBnQ29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgRUdM
X0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCkBAIC02Miw3ICs2MSwxMyBAQCBzdGF0aWMgY29u
c3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRlc1tdID0gewogICAgIEVHTF9OT05FCiB9OwogCi1z
dGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6
RUdMU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUpCisjaWYgVVNFKE9QRU5HTF9FU18yKQorc3RhdGlj
IGNvbnN0IEVHTGVudW0gZ0VHTEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0VTX0FQSTsKKyNlbHNl
CitzdGF0aWMgY29uc3QgRUdMZW51bSBnRUdMQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfQVBJOwor
I2VuZGlmCisKK2Jvb2wgR0xDb250ZXh0RUdMOjpnZXRFR0xDb25maWcoRUdMRGlzcGxheSBkaXNw
bGF5LCBFR0xDb25maWcqIGNvbmZpZywgRUdMU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUpCiB7CiAg
ICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCkBAIC04
NywyNyArOTIsMjMgQEAgc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmln
LCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2UKICAgICAgICAgYXR0cmlidXRl
TGlzdFsxM10gPSBFR0xfUElYTUFQX0JJVDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHTENv
bnRleHRFR0w6OldpbmRvd1N1cmZhY2U6CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlN1cmZhY2Vs
ZXNzOgogICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAg
IHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0
LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1
cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3Qs
IGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVy
bmVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4
dERhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0
ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxh
eSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVH
TENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0
PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9
PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBFR0xEaXNw
bGF5IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZp
ZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkp
CisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgV2luZG93U3VyZmFjZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWds
Q3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4
dEF0dHJpYnV0ZXMpOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
ZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKICAg
ICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTExNywxOSArMTE4LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOwot
ICAgIGdsQ29udGV4dC0+bV9jb250ZXh0RGF0YSA9IFdURk1vdmUoY29udGV4dERhdGEpOwotICAg
IHJldHVybiBnbENvbnRleHQ7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBX
aW5kb3dTdXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkK
K3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxh
eSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xE
aXNwbGF5KCk7CiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygm
Y29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwg
JmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBz
aGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKQEAgLTE0MywxOCArMTM5LDM2IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQoRUdMQ29udGV4dCBzaGFyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3Vy
ZmFjZSwgUGJ1ZmZlclN1cmZhY2UpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFj
ZSwgUGJ1ZmZlclN1cmZhY2UpKTsKIH0KIAotI2lmIFBMQVRGT1JNKFgxMSkKLXN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xD
b250ZXh0IHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0
Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9
IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05P
X0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgY29uc3QgY2hhciogZXh0
ZW5zaW9ucyA9IGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBp
ZiAoIXN0cnN0cihleHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IikgJiYg
IXN0cnN0cihleHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19vcGVuZ2wiKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0
RUdMQ29uZmlnKCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQorICAgIGlmICghZ2V0RUdMQ29uZmln
KGRpc3BsYXksICZjb25maWcsIFN1cmZhY2VsZXNzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNv
bmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgaWYgKGNvbnRl
eHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZv
cm1EaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpKTsKK30KKwor
I2lmIFBMQVRGT1JNKFgxMSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxh
eSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkg
PSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOworICAgIEVHTENvbmZpZyBjb25maWc7Cisg
ICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3Jl
YXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJp
YnV0ZXMpOwpAQCAtMTY3LDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhVbmlxdWVQaXht
YXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNwbGF5LCBEZWZhdWx0Um9vdFdpbmRvdyh4
MTFEaXNwbGF5KSwgMSwgMSwgZGVwdGgpOwogICAgIGlmICghcGl4bWFwKSB7CiAgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwpAQCAtMTgwLDQ5ICsxOTQsMTA3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFw
Q29udGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3Vy
ZmFjZSwgV1RGTW92ZShwaXhtYXApKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZh
Y2UsIFdURk1vdmUocGl4bWFwKSkpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNw
bGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIGlmICghc2hhcmVkRUdMRGlz
cGxheSgpKQorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNw
bGF5KCk7CisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNw
bGF5LCAmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIHN1
Y2Nlc3MgPSB0cnVlOwotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSNpZiAhVVNFKE9QRU5HTF9F
U18yKQotICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7Ci0jZW5kaWYK
LSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVn
bENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRB
dHRyaWJ1dGVzKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gd2xT
dXJmYWNlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KHBsYXRmb3JtRGlzcGxheSku
Y3JlYXRlU3VyZmFjZSgpKTsKKyAgICBpZiAoIXdsU3VyZmFjZSkgeworICAgICAgICBlZ2xEZXN0
cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIGlmICghc3VjY2VzcykKKworICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJmYWNlLmdldCgpLCAxLCAxKTsKKyAgICBFR0xT
dXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywg
d2luZG93LCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAg
ICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgd2xfZWdsX3dp
bmRvd19kZXN0cm95KHdpbmRvdyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAot
ICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRp
Y19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAg
ICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hh
cmluZ0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZh
Y2UsIFdURk1vdmUod2xTdXJmYWNlKSwgd2luZG93KSk7Cit9CisjZW5kaWYKKworc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSkKK3sK
KyAgICBpZiAocGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoZWdsQmluZEFQSShnRUdMQVBJVmVy
c2lvbikgPT0gRUdMX0ZBTFNFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENv
bnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBwbGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4
dCgpID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdH
TENvbnRleHQoKSktPm1fY29udGV4dCA6IEVHTF9OT19DT05URVhUOworICAgIGF1dG8gY29udGV4
dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBwbGF0Zm9ybURpc3BsYXks
IGVnbFNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICBjb250ZXh0ID0gY3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWds
U2hhcmluZ0NvbnRleHQpOworICAgIGlmICghY29udGV4dCkgewogI2lmIFBMQVRGT1JNKFgxMSkK
KyAgICAgICAgaWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpU
eXBlOjpYMTEpCisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0
Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlz
cGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVXYXlsYW5k
Q29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorICAg
IH0KICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250
ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJD
b250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworCisgICAgcmV0dXJu
IGNvbnRleHQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkp
Cit7CisgICAgaWYgKHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BM
QVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGVnbEJpbmRBUEkoZ0VHTEFQ
SVZlcnNpb24pID09IEVHTF9GQUxTRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvIGNvbnRleHQgPSBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsK
KyNpZiBQTEFURk9STShYMTEpCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGlmIChwbGF0
Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAg
ICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKICNl
bmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNv
bnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOworI2VuZGlmCisg
ICAgfQogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJD
b250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZm
ZXJDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAot
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkK
K0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUp
CisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9zdXJmYWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICBBU1NFUlQo
dHlwZSAhPSBQaXhtYXBTdXJmYWNlKTsKKyAgICBBU1NFUlQodHlwZSA9PSBTdXJmYWNlbGVzcyB8
fCBzdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKTsKIH0KIAogI2lmIFBMQVRGT1JNKFgxMSkKLUdM
Q29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVH
TENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4
bWFwKQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
ICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogICAgICwgbV90eXBlKFBpeG1hcFN1cmZhY2UpCiAg
ICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCkBAIC0yMzAsNiArMzAyLDE4IEBAIEdMQ29u
dGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBYVW5pcXVlUGl4bWFwCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCitH
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENv
bnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xf
c3VyZmFjZT4mJiB3bFN1cmZhY2UsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2xXaW5kb3cpCisgICAg
OiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9z
dXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX3R5cGUoV2luZG93U3VyZmFjZSkKKyAgICAsIG1fd2xT
dXJmYWNlKFdURk1vdmUod2xTdXJmYWNlKSkKKyAgICAsIG1fd2xXaW5kb3cod2xXaW5kb3cpCit7
Cit9CisjZW5kaWYKKwogR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKIHsKICNpZiBVU0Uo
Q0FJUk8pCkBAIC0yMzcsNyArMzIxLDcgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkK
ICAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAot
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBFR0xEaXNw
bGF5IGRpc3BsYXkgPSBtX2Rpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIGlmIChtX2NvbnRleHQp
IHsKICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwogICAgICAg
ICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19DT05URVhUKTsKQEAgLTI0Niw2ICszMzAsMTEgQEAgR0xDb250ZXh0RUdMOjp+R0xD
b250ZXh0RUdMKCkKIAogICAgIGlmIChtX3N1cmZhY2UpCiAgICAgICAgIGVnbERlc3Ryb3lTdXJm
YWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlm
IChtX3dsV2luZG93KQorICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93bFdpbmRvdyk7
CisjZW5kaWYKIH0KIAogYm9vbCBHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1l
YnVmZmVyKCkKQEAgLTI1OCw5ICszNDcsMTAgQEAgSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1
bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgIGlmICghY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZm
ZXIoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAorICAgIEVHTERpc3BsYXkgZGlzcGxh
eSA9IG1fZGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0g
ICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVH
TF9XSURUSCwgJndpZHRoKQotICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERp
c3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1
ZXJ5U3VyZmFjZShkaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAgICAg
ICB8fCAhZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhl
aWdodCkpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKQEAgLTI2OCwxOSArMzU4LDE5IEBAIEludFNpemUgR0xDb250ZXh0RUdM
OjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKIAogYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250
ZXh0Q3VycmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOworICAg
IEFTU0VSVChtX2NvbnRleHQpOwogCiAgICAgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3Bs
YXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1h
a2VDdXJyZW50KG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBt
X2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQogewogICAg
IEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVHTERpc3BsYXko
KSwgbV9zdXJmYWNlKTsKKyAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXkuZWdsRGlzcGxheSgp
LCBtX3N1cmZhY2UpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6d2FpdE5hdGl2ZSgpCkBAIC0y
OTUsNyArMzg1LDcgQEAgY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2Uo
KQogICAgICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpCi0gICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRl
KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9jb250ZXh0KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fp
cm9fZWdsX2RldmljZV9jcmVhdGUobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgbV9jb250ZXh0KTsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggODY1NzVhOS4u
ZTA2MzhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuaApAQCAtMjksNDkgKzI5LDY3IEBACiAjaW5jbHVkZSAiWFVuaXF1ZVJl
c291cmNlLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiV2xV
bmlxdWVQdHIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdMQ29u
dGV4dEVHTCA6IHB1YmxpYyBHTENvbnRleHQgeworY2xhc3MgR0xDb250ZXh0RUdMIGZpbmFsIDog
cHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdM
KTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdp
bmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0ID0gMCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250
ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dDo6RGF0YT4mJiA9
IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVh
dGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIFBsYXRmb3JtRGlzcGxheSYpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVTaGFyaW5nQ29udGV4dChQ
bGF0Zm9ybURpc3BsYXkmKTsKIAotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJm
YWNlLCBFR0xTdXJmYWNlVHlwZSk7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIEdMQ29udGV4dEVH
TChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYpOwotI2VuZGlmCiAgICAg
dmlydHVhbCB+R0xDb250ZXh0RUdMKCk7Ci0gICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwotICAgIHZpcnR1YWwgdm9p
ZCB3YWl0TmF0aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1l
YnVmZmVyKCk7Ci0gICAgdmlydHVhbCBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsK
KworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2Fw
QnVmZmVycygpIG92ZXJyaWRlOworICAgIHZvaWQgd2FpdE5hdGl2ZSgpIG92ZXJyaWRlOworICAg
IGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSBvdmVycmlkZTsKKyAgICBJbnRT
aXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSBvdmVycmlkZTsKICNpZiBVU0UoQ0FJUk8pCi0g
ICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsKKyAgICBjYWlyb19kZXZp
Y2VfdCogY2Fpcm9EZXZpY2UoKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBp
c0VHTENvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VHTENvbnRl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJ
Q1NfQ09OVEVYVF8zRCkKLSAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxh
dGZvcm1Db250ZXh0KCk7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNv
bnRleHQoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKKyAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2Us
IFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UsIFN1cmZhY2VsZXNzIH07CisKKyAgICBHTENv
bnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3Vy
ZmFjZVR5cGUpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKKyAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdM
U3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZh
Y2UsIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmLCBFR0xOYXRpdmVXaW5kb3dUeXBl
KTsKKyNlbmRpZgorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNy
ZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgUGxhdGZvcm1EaXNwbGF5Jiwg
RUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZv
cm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU3VyZmFjZWxl
c3NDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBF
R0xfTk9fQ09OVEVYVCk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYs
IEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisjZW5kaWYKKyNp
ZiBQTEFURk9STShXQVlMQU5EKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVXYXlsYW5kQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9p
ZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVHTCopOwotICAgIHN0YXRpYyB2b2lkIGNsZWFu
dXBTaGFyZWRFR0xEaXNwbGF5KHZvaWQpOworICAgIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhF
R0xEaXNwbGF5LCBFR0xDb25maWcqLCBFR0xTdXJmYWNlVHlwZSk7CiAKLSAgICBFR0xDb250ZXh0
IG1fY29udGV4dDsKLSAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBFR0xDb250ZXh0IG1f
Y29udGV4dCB7IEVHTF9OT19DT05URVhUIH07CisgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2UgeyBF
R0xfTk9fU1VSRkFDRSB9OwogICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKICNpZiBQTEFURk9S
TShYMTEpCiAgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKICNlbmRpZgorI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IG1fd2xTdXJmYWNl
OworICAgIHN0cnVjdCB3bF9lZ2xfd2luZG93KiBtX3dsV2luZG93IHsgbnVsbHB0ciB9OworI2Vu
ZGlmCiAjaWYgVVNFKENBSVJPKQogICAgIGNhaXJvX2RldmljZV90KiBtX2NhaXJvRGV2aWNlIHsg
bnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCmluZGV4IDE0YmI1MzkuLjQxNTA3Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRH
TFguY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0
KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRv
dywgUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0Nv
bnRleHQpCiB7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERp
c3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlz
cGxheSkubmF0aXZlKCk7CiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBp
ZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXksIHdpbmRvdywgJmF0dHJpYnV0ZXMpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdp
bmRvdywgR0xDbwogICAgIGludCBudW1SZXR1cm5lZCA9IDA7CiAgICAgWFVuaXF1ZVB0cjxYVmlz
dWFsSW5mbz4gdmlzdWFsSW5mb0xpc3QoWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURN
YXNrLCAmdmlzdWFsSW5mbywgJm51bVJldHVybmVkKSk7CiAKLSAgICBHTFhDb250ZXh0IGdseFNo
YXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgq
PihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7Ci0gICAgWFVuaXF1
ZUdMWENvbnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9M
aXN0LmdldCgpLCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1ZSkpOworICAgIFhVbmlxdWVHTFhDb250
ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5nZXQo
KSwgc2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEZNb3ZlKGNvbnRleHQpLCB3aW5kb3cpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPihuZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShj
b250ZXh0KSwgd2luZG93KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4
dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1
ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQg
c2hhcmluZ0NvbnRleHQpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0
ZXNbXSA9IHsKICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKQEAg
LTY3LDcgKzY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xY
OjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICB9OwogCiAgICAgaW50
IHJldHVybmVkRWxlbWVudHM7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBs
YXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gY29u
ZmlncyhnbFhDaG9vc2VGQkNvbmZpZyhkaXNwbGF5LCAwLCBmYkNvbmZpZ0F0dHJpYnV0ZXMsICZy
ZXR1cm5lZEVsZW1lbnRzKSk7CiAgICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDEwICs4MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hh
cgogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRHTFg+KFdURk1vdmUoY29udGV4dCksIFdURk1v
dmUocGJ1ZmZlcikpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPihu
ZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwgV1RGTW92
ZShwYnVmZmVyKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29u
dGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgR0xYQ29udGV4dCBzaGFyaW5n
Q29udGV4dCkKIHsKICAgICBzdGF0aWMgaW50IHZpc3VhbEF0dHJpYnV0ZXNbXSA9IHsKICAgICAg
ICAgR0xYX1JHQkEsCkBAIC05Niw3ICs5NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpCiAg
ICAgICAgIDAKICAgICB9OwogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBs
YXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlz
dWFsSW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwg
dmlzdWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMTMsNDYgKzExMiw0NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQog
ICAgIGlmICghZ2x4UGl4bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGTW92ZShjb250ZXh0KSwgV1RGTW92
ZShwaXhtYXApLCBXVEZNb3ZlKGdseFBpeG1hcCkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPihuZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92
ZShjb250ZXh0KSwgV1RGTW92ZShwaXhtYXApLCBXVEZNb3ZlKGdseFBpeG1hcCkpKTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0
KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgUGxh
dGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCiB7Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAo
IWluaXRpYWxpemVkKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMo
KTsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoIXN1Y2Nlc3Mp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29u
dGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmlu
Z0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOwotICAgIGF1dG8gY29udGV4dCA9
IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBu
dWxscHRyOworICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRleHQgPSBwbGF0Zm9ybURpc3Bs
YXkuc2hhcmluZ0dMQ29udGV4dCgpID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4ocGxhdGZv
cm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSktPm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7
CisgICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3cs
IHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKICAgICBpZiAo
IWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChnbHhTaGFy
aW5nQ29udGV4dCk7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0
Zm9ybURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0KTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0KTsKLSAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb250ZXh0
ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0
KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdM
WChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cpCi0gICAgOiBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURp
c3BsYXkpCit7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQocGxhdGZv
cm1EaXNwbGF5KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQ
aXhtYXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisK
K0dMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVu
aXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYSUQgd2luZG93KQorICAgIDogR0xDb250ZXh0KGRp
c3BsYXkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93
KHdpbmRvdykKIHsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENv
bnRleHQmJiBjb250ZXh0LCBYVW5pcXVlR0xYUGJ1ZmZlciYmIHBidWZmZXIpCi0gICAgOiBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKK0dMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRm
b3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVl
R0xYUGJ1ZmZlciYmIHBidWZmZXIpCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1f
Y29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9wYnVmZmVyKFdURk1vdmUocGJ1ZmZl
cikpCiB7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0
JiYgY29udGV4dCwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCwgWFVuaXF1ZUdMWFBpeG1hcCYmIGds
eFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorR0xDb250ZXh0R0xY
OjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4
dCYmIGNvbnRleHQsIFhVbmlxdWVQaXhtYXAmJiBwaXhtYXAsIFhVbmlxdWVHTFhQaXhtYXAmJiBn
bHhQaXhtYXApCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQogICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXhtYXApKQogICAgICwgbV9n
bHhQaXhtYXAoV1RGTW92ZShnbHhQaXhtYXApKQogewpAQCAtMTY2LDkgKzE2NSw4IEBAIEdMQ29u
dGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICAv
LyBUaGlzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJldmVudCBjcmFzaGVzIHdpdGggTlZpZGlhJ3Mg
Y2xvc2VkIHNvdXJjZSBkcml2ZXJzLiBPcmlnaW5hbGx5CiAgICAgICAgIC8vIGZyb20gTW96aWxs
YSdzIDNEIGNhbnZhcyBpbXBsZW1lbnRhdGlvbiBhdDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaWxt
YXJpL2NhbnZhczNkLwotICAgICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgMCk7Ci0g
ICAgICAgIGdsWE1ha2VDdXJyZW50KGRpc3BsYXksIE5vbmUsIE5vbmUpOworICAgICAgICBnbFhN
YWtlQ3VycmVudChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZl
KCksIE5vbmUsIE5vbmUpOwogICAgIH0KIH0KIApAQCAtMTg1LDggKzE4Myw3IEBAIEludFNpemUg
R0xDb250ZXh0R0xYOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKICAgICBpbnQgeCwgeTsKICAg
ICBXaW5kb3cgcm9vdFdpbmRvdzsKICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyV2lkdGgsIGRlcHRoOwotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsK
LSAgICBpZiAoIVhHZXRHZW9tZXRyeShkaXNwbGF5LCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4
LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCkpCisgICAgaWYgKCFY
R2V0R2VvbWV0cnkoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2
ZSgpLCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9y
ZGVyV2lkdGgsICZkZXB0aCkpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1
cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTIwMCw3ICsxOTcsNyBAQCBib29sIEdMQ29u
dGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICBpZiAoZ2xYR2V0Q3VycmVudENvbnRl
eHQoKSA9PSBtX2NvbnRleHQuZ2V0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgRGlz
cGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCk7CiAgICAgaWYg
KG1fd2luZG93KQogICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxheSwgbV93aW5k
b3csIG1fY29udGV4dC5nZXQoKSk7CiAKQEAgLTIxMyw3ICsyMTAsNyBAQCBib29sIEdMQ29udGV4
dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHZvaWQgR0xDb250ZXh0R0xYOjpzd2FwQnVmZmVy
cygpCiB7CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICBnbFhTd2FwQnVmZmVycyhkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5u
YXRpdmUoKSwgbV93aW5kb3cpOworICAgICAgICBnbFhTd2FwQnVmZmVycyhkb3duY2FzdDxQbGF0
Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCksIG1fd2luZG93KTsKIH0KIAogdm9p
ZCBHTENvbnRleHRHTFg6OndhaXROYXRpdmUoKQpAQCAtMjI3LDcgKzIyNCw3IEBAIGNhaXJvX2Rl
dmljZV90KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fp
cm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBDQUlST19I
QVNfR0xYX0ZVTkNUSU9OUwotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19nbHhfZGV2aWNlX2Ny
ZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5uYXRpdmUoKSwgbV9jb250ZXh0LmdldCgpKTsKKyAgICBtX2NhaXJvRGV2aWNl
ID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPiht
X2Rpc3BsYXkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1
cm4gbV9jYWlyb0RldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dseC9HTENvbnRleHRHTFguaAppbmRleCA2NDdmOTk4Li4zNGNiNTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCkBA
IC0zMiwzMSArMzIsMzQgQEAgdHlwZWRlZiB2b2lkKiBDb250ZXh0S2V5VHlwZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRleHRHTFggOiBwdWJsaWMgR0xDb250ZXh0IHsK
K2NsYXNzIEdMQ29udGV4dEdMWCBmaW5hbCA6IHB1YmxpYyBHTENvbnRleHQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEdMWCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgR0xDb250
ZXh0KiBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0
ZUNvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5Jik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlz
cGxheSYpOwogCi0gICAgR0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7Ci0g
ICAgR0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYp
OwotICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYs
IFhVbmlxdWVHTFhQaXhtYXAmJik7CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7Ci0gICAg
dmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBzd2Fw
QnVmZmVycygpOwotICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCk7Ci0gICAgdmlydHVhbCBi
b29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCk7Ci0gICAgdmlydHVhbCBJbnRTaXpl
IGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKLSAgICB2aXJ0dWFsIGNhaXJvX2RldmljZV90KiBj
YWlyb0RldmljZSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VHTENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN3YXBCdWZmZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3YWl0TmF0aXZlKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpIG92ZXJy
aWRlOworICAgIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpIG92ZXJyaWRlOworICAg
IGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFR0xD
b250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmIEVOQUJMRShH
UkFQSElDU19DT05URVhUXzNEKQotICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRm
b3JtQ29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRl
eHQgc2hhcmluZ0NvbnRleHQpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAg
IEdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYSUQp
OworICAgIEdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYm
LCBYVW5pcXVlR0xYUGJ1ZmZlciYmKTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5
JiwgWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZVBpeG1hcCYmLCBYVW5pcXVlR0xYUGl4bWFw
JiYpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdp
bmRvd0NvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFy
aW5nQ29udGV4dCA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0R0xYPiBjcmVhdGVQYnVmZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBHTFhDb250ZXh0
IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRHTFg+IGNyZWF0ZVBpeG1hcENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgR0xYQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOwogCiAgICAgWFVuaXF1ZUdMWENvbnRleHQg
bV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBiMjkyMzllLi5mY2Zm
NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCkBAIC0yMzUsOCArMjM1LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjplbnN1cmVHc3RHTENvbnRleHQoKQogICAgIGlmIChtX2dsQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBjb25zdCBhdXRvJiBzaGFyZWREaXNwbGF5ID0gUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKTsKICAgICBpZiAoIW1f
Z2xEaXNwbGF5KSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHNoYXJlZERpc3BsYXkgPSBQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKTsKICNpZiBQTEFURk9STShYMTEpCiAgICAgICAgIG1f
Z2xEaXNwbGF5ID0gR1NUX0dMX0RJU1BMQVkoZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rp
c3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUo
KSkpOwogI2VsaWYgUExBVEZPUk0oV0FZTEFORCkKQEAgLTI0NCw3ICsyNDQsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmVuc3VyZUdzdEdMQ29udGV4dCgpCiAjZW5k
aWYKICAgICB9CiAKLSAgICBHTENvbnRleHQqIHdlYmtpdENvbnRleHQgPSBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCk7CisgICAgR0xDb250ZXh0KiB3ZWJraXRDb250ZXh0ID0gc2hhcmVkRGlz
cGxheS5zaGFyaW5nR0xDb250ZXh0KCk7CiAgICAgLy8gRUdMIGFuZCBHTFggYXJlIG11dHVhbGx5
IGV4Y2x1c2l2ZSwgbm8gbmVlZCBmb3IgaWZkZWZzIGhlcmUuCiAgICAgR3N0R0xQbGF0Zm9ybSBn
bFBsYXRmb3JtID0gd2Via2l0Q29udGV4dC0+aXNFR0xDb250ZXh0KCkgPyBHU1RfR0xfUExBVEZP
Uk1fRUdMIDogR1NUX0dMX1BMQVRGT1JNX0dMWDsKIApAQCAtNzAyLDcgKzcwMiw3IEBAIE5hdGl2
ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwg
JnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFE
IHwgR1NUX01BUF9HTCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdMQ29udGV4
dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKKyAgICBHTENvbnRleHQq
IGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygp
LnNoYXJpbmdHTENvbnRleHQoKTsKICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0
Zm9ybURpc3BsYXlXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKaW5kZXggZDMzMDVlMS4uNDc5MjRh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9Q
bGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCkBAIC0yOSwxMjYgKzI5
LDU1IEBACiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5o
IgotI2luY2x1ZGUgIldheWxhbmRTdXJmYWNlLmgiCiAjaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNs
dWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IHN0cnVjdCB3bF9yZWdp
c3RyeV9saXN0ZW5lciBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjptX3JlZ2lzdHJ5TGlzdGVuZXIg
PSB7Ci0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Z2xvYmFsQ2FsbGJhY2ssCi0gICAgUGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6Z2xvYmFsUmVtb3ZlQ2FsbGJhY2sKK2NvbnN0IHN0cnVjdCB3
bF9yZWdpc3RyeV9saXN0ZW5lciBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpzX3JlZ2lzdHJ5TGlz
dGVuZXIgPSB7CisgICAgLy8gZ2xvYmFsQ2FsbGJhY2sKKyAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1
Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVp
bnQzMl90KSB7CisgICAgICAgIHN0YXRpY19jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQqPihk
YXRhKS0+cmVnaXN0cnlHbG9iYWwoaW50ZXJmYWNlLCBuYW1lKTsKKyAgICB9LAorICAgIC8vIGds
b2JhbFJlbW92ZUNhbGxiYWNrCisgICAgW10odm9pZCosIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVp
bnQzMl90KQorICAgIHsKKyAgICB9CiB9OwogCi12b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6
Omdsb2JhbENhbGxiYWNrKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSogcmVnaXN0cnks
IHVpbnQzMl90IG5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QpCitQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5
KiBkaXNwbGF5KQogewotICAgIGF1dG8gZGlzcGxheSA9IHN0YXRpY19jYXN0PFBsYXRmb3JtRGlz
cGxheVdheWxhbmQqPihkYXRhKTsKLSAgICBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgInds
X2NvbXBvc2l0b3IiKSkKLSAgICAgICAgZGlzcGxheS0+bV9jb21wb3NpdG9yID0gc3RhdGljX2Nh
c3Q8c3RydWN0IHdsX2NvbXBvc2l0b3IqPih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1l
LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEpKTsKLSAgICBlbHNlIGlmICghc3RkOjpzdHJj
bXAoaW50ZXJmYWNlLCAid2xfd2Via2l0Z3RrIikpCi0gICAgICAgIGRpc3BsYXktPm1fd2Via2l0
Z3RrID0gc3RhdGljX2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+KHdsX3JlZ2lzdHJ5X2JpbmQo
cmVnaXN0cnksIG5hbWUsICZ3bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxKSk7CisgICAgaW5pdGlh
bGl6ZShkaXNwbGF5KTsKIH0KIAotdm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxS
ZW1vdmVDYWxsYmFjayh2b2lkKiwgc3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QpCi17Ci0g
ICAgLy8gRklYTUU6IGlmIHRoaXMgY2FuIGhhcHBlbiB3aXRob3V0IHRoZSBVSSBQcm9jZXNzIGdl
dHRpbmcgc2h1dCBkb3duCi0gICAgLy8gd2Ugc2hvdWxkIHByb2JhYmx5IGRlc3Ryb3kgb3VyIGNh
Y2hlZCBkaXNwbGF5IGluc3RhbmNlLgotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNw
bGF5V2F5bGFuZD4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKCkKK1BsYXRmb3JtRGlz
cGxheVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCkKIHsKLSAgICBzdHJ1Y3Qgd2xf
ZGlzcGxheSogd2xEaXNwbGF5ID0gd2xfZGlzcGxheV9jb25uZWN0KG51bGxwdHIpOwotICAgIGlm
ICghd2xEaXNwbGF5KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZCBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgc2Vy
dmVyIHNvY2tldC4gQ2hlY2sgeW91ciBXQVlMQU5EX0RJU1BMQVkgb3IgV0FZTEFORF9TT0NLRVQg
ZW52aXJvbm1lbnQgdmFyaWFibGVzLiIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBhdXRvIGRpc3BsYXkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5
bGFuZD4obmV3IFBsYXRmb3JtRGlzcGxheVdheWxhbmQod2xEaXNwbGF5KSk7Ci0gICAgaWYgKCFk
aXNwbGF5LT5pc0luaXRpYWxpemVkKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gY29tcGxldGUgdGhlIGlu
aXRpYWxpemF0aW9uIG9mIHRoZSBkaXNwbGF5LiIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZGlzcGxheTsKIH0KIAotUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZDo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5KQot
ICAgIDogbV9kaXNwbGF5KHdsRGlzcGxheSkKLSAgICAsIG1fcmVnaXN0cnkod2xfZGlzcGxheV9n
ZXRfcmVnaXN0cnkobV9kaXNwbGF5KSkKLSAgICAsIG1fZWdsQ29uZmlnQ2hvc2VuKGZhbHNlKQor
dm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjppbml0aWFsaXplKHdsX2Rpc3BsYXkqIGRpc3Bs
YXkpCiB7Ci0gICAgd2xfcmVnaXN0cnlfYWRkX2xpc3RlbmVyKG1fcmVnaXN0cnksICZtX3JlZ2lz
dHJ5TGlzdGVuZXIsIHRoaXMpOworICAgIG1fZGlzcGxheSA9IGRpc3BsYXk7CisgICAgbV9yZWdp
c3RyeS5yZXNldCh3bF9kaXNwbGF5X2dldF9yZWdpc3RyeShtX2Rpc3BsYXkpKTsKKyAgICB3bF9y
ZWdpc3RyeV9hZGRfbGlzdGVuZXIobV9yZWdpc3RyeS5nZXQoKSwgJnNfcmVnaXN0cnlMaXN0ZW5l
ciwgdGhpcyk7CiAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobV9kaXNwbGF5KTsKIAotICAgIHN0
YXRpYyBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xfU1VS
RkFDRV9UWVBFLCBFR0xfV0lORE9XX0JJVCwKLSAgICAgICAgRUdMX1JFRF9TSVpFLCAxLAotICAg
ICAgICBFR0xfR1JFRU5fU0laRSwgMSwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgMSwKLSAgICAg
ICAgRUdMX0FMUEhBX1NJWkUsIDEsCi0gICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9P
UEVOR0xfRVMyX0JJVCwKLSAgICAgICAgRUdMX05PTkUKLSAgICB9OwotCiAgICAgbV9lZ2xEaXNw
bGF5ID0gZWdsR2V0RGlzcGxheShtX2Rpc3BsYXkpOwogICAgIFBsYXRmb3JtRGlzcGxheTo6aW5p
dGlhbGl6ZUVHTERpc3BsYXkoKTsKLSAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFR0xpbnQgbnVtYmVyT2ZDb25maWdzOwotICAg
IGlmICghZWdsQ2hvb3NlQ29uZmlnKG1fZWdsRGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJm1f
ZWdsQ29uZmlnLCAxLCAmbnVtYmVyT2ZDb25maWdzKSB8fCBudW1iZXJPZkNvbmZpZ3MgIT0gMSkg
ewotICAgICAgICBnX3dhcm5pbmcoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRp
b246IGZhaWxlZCB0byBmaW5kIHRoZSBkZXNpcmVkIEVHTCBjb25maWd1cmF0aW9uLiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9lZ2xDb25maWdDaG9zZW4gPSB0cnVlOwogfQog
Ci1QbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpCit2b2lk
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJlZ2lzdHJ5R2xvYmFsKGNvbnN0IGNoYXIqIGludGVy
ZmFjZSwgdWludDMyX3QgbmFtZSkKIHsKLSAgICBpZiAobV93ZWJraXRndGspCi0gICAgICAgIHds
X3dlYmtpdGd0a19kZXN0cm95KG1fd2Via2l0Z3RrKTsKLSAgICBpZiAobV9jb21wb3NpdG9yKQot
ICAgICAgICB3bF9jb21wb3NpdG9yX2Rlc3Ryb3kobV9jb21wb3NpdG9yKTsKLSAgICBpZiAobV9y
ZWdpc3RyeSkKLSAgICAgICAgd2xfcmVnaXN0cnlfZGVzdHJveShtX3JlZ2lzdHJ5KTsKLSAgICBp
ZiAobV9kaXNwbGF5KQotICAgICAgICB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QobV9kaXNwbGF5KTsK
LX0KLQotc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kOjpjcmVhdGVTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIGludCB3aWRnZXRJZCkKLXsK
LSAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogd2xTdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVf
c3VyZmFjZShtX2NvbXBvc2l0b3IpOwotICAgIC8vIFdlIGtlZXAgdGhlIG1pbmltdW0gc2l6ZSBh
dCAxeDFweCBzaW5jZSBNZXNhIHJldHVybnMgbnVsbCB2YWx1ZXMgaW4gd2xfZWdsX3dpbmRvd19j
cmVhdGUoKSBmb3IgemVybyB3aWR0aCBvciBoZWlnaHQuCi0gICAgRUdMTmF0aXZlV2luZG93VHlw
ZSBuYXRpdmVXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UsIHN0ZDo6bWF4
KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsKLQotICAgIHds
X3dlYmtpdGd0a19zZXRfc3VyZmFjZV9mb3Jfd2lkZ2V0KG1fd2Via2l0Z3RrLCB3bFN1cmZhY2Us
IHdpZGdldElkKTsKLSAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtX2Rpc3BsYXkpOwotCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F5bGFuZFN1cmZhY2U+KHdsU3VyZmFjZSwgbmF0aXZl
V2luZG93KTsKKyAgICBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX2NvbXBvc2l0b3Ii
KSkKKyAgICAgICAgbV9jb21wb3NpdG9yLnJlc2V0KHN0YXRpY19jYXN0PHN0cnVjdCB3bF9jb21w
b3NpdG9yKj4od2xfcmVnaXN0cnlfYmluZChtX3JlZ2lzdHJ5LmdldCgpLCBuYW1lLCAmd2xfY29t
cG9zaXRvcl9pbnRlcmZhY2UsIDEpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKQorV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0
ZVN1cmZhY2UoKSBjb25zdAogewotICAgIGNsYXNzIE9mZnNjcmVlbkNvbnRleHREYXRhIDogcHVi
bGljIEdMQ29udGV4dDo6RGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PZmZz
Y3JlZW5Db250ZXh0RGF0YSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdsX2VnbF93aW5kb3df
ZGVzdHJveShuYXRpdmVXaW5kb3cpOwotICAgICAgICAgICAgd2xfc3VyZmFjZV9kZXN0cm95KHN1
cmZhY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RydWN0IHdsX3N1cmZhY2UqIHN1cmZhY2U7
Ci0gICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93OwotICAgIH07Ci0KLSAg
ICBhdXRvIGNvbnRleHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxPZmZzY3JlZW5Db250ZXh0RGF0
YT4oKTsKLSAgICBjb250ZXh0RGF0YS0+c3VyZmFjZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1
cmZhY2UobV9jb21wb3NpdG9yKTsKLSAgICBjb250ZXh0RGF0YS0+bmF0aXZlV2luZG93ID0gd2xf
ZWdsX3dpbmRvd19jcmVhdGUoY29udGV4dERhdGEtPnN1cmZhY2UsIDEsIDEpOworICAgIGlmICgh
bV9jb21wb3NpdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbmF0aXZl
V2luZG93ID0gY29udGV4dERhdGEtPm5hdGl2ZVdpbmRvdzsKLSAgICByZXR1cm4gR0xDb250ZXh0
RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG5hdGl2ZVdpbmRvdywgbnVsbHB0ciwgV1RGTW92ZShj
b250ZXh0RGF0YSkpOworICAgIHJldHVybiBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4o
d2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0b3IuZ2V0KCkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaApp
bmRleCA0Y2M5MDQ0Li5jMTY1ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQu
aApAQCAtMjksNDggKzI5LDM0IEBACiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAogI2luY2x1ZGUg
IlBsYXRmb3JtRGlzcGxheS5oIgotI2luY2x1ZGUgIldlYktpdEd0a1dheWxhbmRDbGllbnRQcm90
b2NvbC5oIgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlICJXbFVuaXF1ZVB0ci5oIgogI2lu
Y2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+Ci0jaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KLSNpbmNs
dWRlIDxFR0wvZWdsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xDb250ZXh0
RUdMOwotY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFdheWxhbmRTdXJmYWNlOwotCi1jbGFzcyBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kIGZpbmFsOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKK2NsYXNz
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+IGNy
ZWF0ZSgpOworICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rpc3BsYXkqKTsK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCk7CiAKICAgICBzdHJ1Y3Qgd2xf
ZGlzcGxheSogbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2F5bGFuZFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYs
IGludCB3aWRnZXRJRCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVh
dGVTaGFyaW5nR0xDb250ZXh0KCk7CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+
IGNyZWF0ZVN1cmZhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc3Ry
dWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIG1fcmVnaXN0cnlMaXN0ZW5lcjsKLSAgICBzdGF0aWMg
dm9pZCBnbG9iYWxDYWxsYmFjayh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50
MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IHZlcnNpb24pOwotICAg
IHN0YXRpYyB2b2lkIGdsb2JhbFJlbW92ZUNhbGxiYWNrKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9y
ZWdpc3RyeSosIHVpbnQzMl90IG5hbWUpOworICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfcmVn
aXN0cnlfbGlzdGVuZXIgc19yZWdpc3RyeUxpc3RlbmVyOwogCi0gICAgUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSopOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZDsgfQogCi0gICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGNoZWNrIGFsc28gZm9yIG1fd2Via2l0Z3RrIG9uY2UgdGhlIFVJ
UHJvY2VzcyBlbWJlZGRlZCBXYXlsYW5kIHN1YmNvbXBvc2l0ZXIgaXMgaW1wbGVtZW50ZWQuCi0g
ICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1cm4gbV9jb21wb3NpdG9yICYmIG1fZWdsRGlz
cGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiBtX2VnbENvbmZpZ0Nob3NlbjsgfQorcHJvdGVjdGVk
OgorICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCBpbml0
aWFsaXplKHN0cnVjdCB3bF9kaXNwbGF5Kik7CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQ7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0cnlHbG9iYWwoY29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCBu
YW1lKTsKIAogICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgc3RydWN0IHds
X3JlZ2lzdHJ5KiBtX3JlZ2lzdHJ5OwotICAgIHN0cnVjdCB3bF9jb21wb3NpdG9yKiBtX2NvbXBv
c2l0b3I7Ci0gICAgc3RydWN0IHdsX3dlYmtpdGd0ayogbV93ZWJraXRndGs7Ci0KLSAgICBFR0xD
b25maWcgbV9lZ2xDb25maWc7Ci0gICAgYm9vbCBtX2VnbENvbmZpZ0Nob3NlbjsKKyAgICBXbFVu
aXF1ZVB0cjxzdHJ1Y3Qgd2xfcmVnaXN0cnk+IG1fcmVnaXN0cnk7CisgICAgV2xVbmlxdWVQdHI8
c3RydWN0IHdsX2NvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmIyYWQyZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXYXlsYW5kRXZlbnRTb3VyY2Uu
aCIKLQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgR0xpYlNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9k
aXNwbGF5Kik7Ci0KLSAgICBnYm9vbGVhbiBjaGVjaygpOwotICAgIGdib29sZWFuIGRpc3BhdGNo
KCk7Ci0KLXByaXZhdGU6Ci0gICAgR1NvdXJjZSBtX3NvdXJjZTsKLSAgICBHUG9sbEZEIG1fcG9s
bEZpbGVEZXNjcmlwdG9yOwotICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBtX2Rpc3BsYXk7Ci19Owot
Ci12b2lkIEdMaWJTb3VyY2U6OmluaXRpYWxpemUoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkp
Ci17Ci0gICAgbV9kaXNwbGF5ID0gZGlzcGxheTsKLSAgICBzdHJ1Y3Qgd2xfZXZlbnRfbG9vcCog
bG9vcCA9IHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AoZGlzcGxheSk7Ci0gICAgbV9wb2xsRmls
ZURlc2NyaXB0b3IuZmQgPSB3bF9ldmVudF9sb29wX2dldF9mZChsb29wKTsKLSAgICBtX3BvbGxG
aWxlRGVzY3JpcHRvci5ldmVudHMgPSBHX0lPX0lOIHwgR19JT19FUlIgfCBHX0lPX0hVUDsKLSAg
ICBnX3NvdXJjZV9hZGRfcG9sbCgmbV9zb3VyY2UsICZtX3BvbGxGaWxlRGVzY3JpcHRvcik7Ci0K
LSAgICBnX3NvdXJjZV9zZXRfbmFtZSgmbV9zb3VyY2UsICJOZXN0ZWQgV2F5bGFuZCBjb21wb3Np
dG9yIGRpc3BsYXkgZXZlbnQgc291cmNlIik7Ci0gICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KCZt
X3NvdXJjZSwgR19QUklPUklUWV9ERUZBVUxUKTsKLSAgICBnX3NvdXJjZV9zZXRfY2FuX3JlY3Vy
c2UoJm1fc291cmNlLCBUUlVFKTsKLSAgICBnX3NvdXJjZV9hdHRhY2goJm1fc291cmNlLCBudWxs
cHRyKTsKLX0KLQotZ2Jvb2xlYW4gR0xpYlNvdXJjZTo6Y2hlY2soKQotewotICAgIHJldHVybiBt
X3BvbGxGaWxlRGVzY3JpcHRvci5yZXZlbnRzOwotfQotCi1nYm9vbGVhbiBHTGliU291cmNlOjpk
aXNwYXRjaCgpCi17Ci0gICAgaWYgKG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHMgJiBHX0lP
X0lOKSB7Ci0gICAgICAgIHN0cnVjdCB3bF9ldmVudF9sb29wKiBsb29wID0gd2xfZGlzcGxheV9n
ZXRfZXZlbnRfbG9vcChtX2Rpc3BsYXkpOwotICAgICAgICB3bF9ldmVudF9sb29wX2Rpc3BhdGNo
KGxvb3AsIC0xKTsKLSAgICAgICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzKG1fZGlzcGxheSk7
Ci0gICAgICAgIG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHMgPSAwOwotICAgIH0KLQotICAg
IGlmIChtX3BvbGxGaWxlRGVzY3JpcHRvci5yZXZlbnRzICYgKEdfSU9fRVJSIHwgR19JT19IVVAp
KQotICAgICAgICBnX3dhcm5pbmcoIldheWxhbmQgRGlzcGxheSBFdmVudCBTb3VyY2U6IGxvc3Qg
Y29ubmVjdGlvbiB0byBuZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIik7Ci0KLSAgICByZXR1cm4g
VFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHByZXBhcmVDYWxsYmFjayhHU291cmNlKiwgZ2lu
dCogdGltZW91dCkKLXsKLSAgICAqdGltZW91dCA9IC0xOwotICAgIHJldHVybiBGQUxTRTsKLX0K
LQotc3RhdGljIGdib29sZWFuIGNoZWNrQ2FsbGJhY2soR1NvdXJjZSogYmFzZSkKLXsKLSAgICBh
dXRvIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHJl
dHVybiBzb3VyY2UtPmNoZWNrKCk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBkaXNwYXRjaENhbGxi
YWNrKEdTb3VyY2UqIGJhc2UsIEdTb3VyY2VGdW5jLCBncG9pbnRlcikKLXsKLSAgICBhdXRvIHNv
dXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHJldHVybiBz
b3VyY2UtPmRpc3BhdGNoKCk7Ci19Ci0KLXN0YXRpYyBHU291cmNlRnVuY3Mgd2F5bGFuZEdMaWJT
b3VyY2VGdW5jcyA9IHsKLSAgICBwcmVwYXJlQ2FsbGJhY2ssCi0gICAgY2hlY2tDYWxsYmFjaywK
LSAgICBkaXNwYXRjaENhbGxiYWNrLAotICAgIG51bGxwdHIsIC8vIGZpbmFsaXplCi0gICAgbnVs
bHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjawotICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hh
bGwKLX07Ci0KLUdTb3VyY2UqIFdheWxhbmRFdmVudFNvdXJjZTo6Y3JlYXRlRGlzcGxheUV2ZW50
U291cmNlKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQotewotICAgIEdTb3VyY2UqIGJhc2Ug
PSBnX3NvdXJjZV9uZXcoJndheWxhbmRHTGliU291cmNlRnVuY3MsIHNpemVvZihHTGliU291cmNl
KSk7Ci0KLSAgICBhdXRvIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpYlNvdXJjZSo+KGJh
c2UpOwotICAgIHNvdXJjZS0+aW5pdGlhbGl6ZShkaXNwbGF5KTsKLQotICAgIHJldHVybiBiYXNl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlM
QU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XYXlsYW5kRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJlZDE2NjIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdheWxhbmRFdmVudFNvdXJjZV9oCi0jZGVmaW5lIFdheWxhbmRFdmVudFNvdXJjZV9oCi0K
LSNpZiBQTEFURk9STShXQVlMQU5EKQotCi0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdh
eWxhbmQtc2VydmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2F5bGFuZEV2
ZW50U291cmNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgR1NvdXJjZSogY3JlYXRlRGlzcGxheUV2
ZW50U291cmNlKHN0cnVjdCB3bF9kaXNwbGF5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQotCi0jZW5kaWYgLy8gV2F5bGFuZEV2
ZW50U291cmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk3MWFiMTkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldheWxhbmRTdXJmYWNlLmgiCi0KLSNpZiBQTEFU
Rk9STShXQVlMQU5EKQotCi0jaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVdheWxhbmQuaCIKLSNpbmNsdWRlIDxF
R0wvZWdsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBmcmFtZUNhbGxiYWNrKHZv
aWQqLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGNhbGxiYWNrLCB1aW50MzJfdCkKLXsKLSAgICBpZiAo
Y2FsbGJhY2spCi0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOwotfQotCi1z
dGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGZyYW1lTGlzdGVuZXIgPSB7
Ci0gICAgZnJhbWVDYWxsYmFjawotfTsKLQotV2F5bGFuZFN1cmZhY2U6OldheWxhbmRTdXJmYWNl
KHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZl
V2luZG93KQotICAgIDogbV93bFN1cmZhY2Uod2xTdXJmYWNlKQotICAgICwgbV9uYXRpdmVXaW5k
b3cobmF0aXZlV2luZG93KQotewotfQotCi1XYXlsYW5kU3VyZmFjZTo6fldheWxhbmRTdXJmYWNl
KCkKLXsKLSAgICAvLyBUaGUgc3VyZmFjZSBjb3VsZG4ndCBoYXZlIGJlZW4gY3JlYXRlZCBpbiB0
aGUgZmlyc3QgcGxhY2UgaWYgV2F5bGFuZERpc3BsYXkgd2Fzbid0IHByb3Blcmx5IGluaXRpYWxp
emVkLgotICAgIGNvbnN0IFBsYXRmb3JtRGlzcGxheVdheWxhbmQmIHdheWxhbmREaXNwbGF5ID0g
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkpOwotICAgIEFTU0VSVCh3YXlsYW5kRGlzcGxheS5uYXRpdmUoKSk7Ci0gICAgZWds
TWFrZUN1cnJlbnQod2F5bGFuZERpc3BsYXkubmF0aXZlKCksIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotCi0gICAgd2xfZWdsX3dpbmRvd19kZXN0cm95
KG1fbmF0aXZlV2luZG93KTsKLSAgICB3bF9zdXJmYWNlX2Rlc3Ryb3kobV93bFN1cmZhY2UpOwot
fQotCi12b2lkIFdheWxhbmRTdXJmYWNlOjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsK
LSAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX25hdGl2ZVdpbmRvdywgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCAwLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
V2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIEdMQ29udGV4
dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChtX25hdGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFy
aW5nQ29udGV4dCgpKTsKLX0KLQotdm9pZCBXYXlsYW5kU3VyZmFjZTo6cmVxdWVzdEZyYW1lKCkK
LXsKLSAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGZyYW1lQ2FsbGJhY2sgPSB3bF9zdXJmYWNlX2Zy
YW1lKG1fd2xTdXJmYWNlKTsKLSAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIoZnJhbWVDYWxs
YmFjaywgJmZyYW1lTGlzdGVuZXIsIHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWYyMmIxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmICBXYXlsYW5kU3VyZmFjZV9oCi0jZGVmaW5lICBXYXlsYW5kU3Vy
ZmFjZV9oCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi0jaW5jbHVkZSA8d2F5bGFuZC1jbGll
bnQuaD4KLQotI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbHBsYXRm
b3JtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR0xDb250ZXh0RUdMOwotY2xh
c3MgSW50U2l6ZTsKLQotY2xhc3MgV2F5bGFuZFN1cmZhY2UgewotcHVibGljOgotICAgIFdheWxh
bmRTdXJmYWNlKHN0cnVjdCB3bF9zdXJmYWNlKiwgRUdMTmF0aXZlV2luZG93VHlwZSk7Ci0gICAg
fldheWxhbmRTdXJmYWNlKCk7Ci0KLSAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSgpIHsg
cmV0dXJuIG1fd2xTdXJmYWNlOyB9Ci0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5k
b3dIYW5kbGUoKSB7IHJldHVybiBtX25hdGl2ZVdpbmRvdzsgfQotCi0gICAgdm9pZCByZXNpemUo
Y29uc3QgSW50U2l6ZSYpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3Jl
YXRlR0xDb250ZXh0KCk7Ci0KLSAgICB2b2lkIHJlcXVlc3RGcmFtZSgpOwotCi1wcml2YXRlOgot
ICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBtX3dsU3VyZmFjZTsKLSAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIG1fbmF0aXZlV2luZG93OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUExBVEZPUk0oV0FZTEFORCkKLQotI2VuZGlmIC8vIFdheWxhbmRTdXJmYWNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0
R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnhtbCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnhtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxYTkzYy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90
b2NvbC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb3RvY29sIG5hbWU9IndsX3dlYmtpdGd0ayI+Ci0K
LSAgPGNvcHlyaWdodD4KLSAgICBDb3B5cmlnaHQgwqkgMjAxNCBJZ2FsaWEgUy5MLgotCi0gICAg
UGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhp
cwotICAgIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMg
aGVyZWJ5IGdyYW50ZWQKLSAgICB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4KLSAgICBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGgg
dGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KLSAgICBub3RpY2UgYXBw
ZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YKLSAg
ICB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVi
bGljaXR5Ci0gICAgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMsCi0gICAgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgVGhlIGNvcHly
aWdodCBob2xkZXJzIG1ha2Ugbm8KLSAgICByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRh
YmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotICAgIHB1cnBvc2UuICBJdCBpcyBwcm92
aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCi0gICAgd2FycmFudHkuCi0K
LSAgICBUSEUgQ09QWVJJR0hUIEhPTERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBS
RUdBUkQgVE8gVEhJUwotICAgIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5ECi0gICAgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCi0gICAgU1BFQ0lBTCwg
SU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCi0gICAgV0hB
VFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVU
SEVSIElOCi0gICAgQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRP
UlRJT1VTIEFDVElPTiwKLSAgICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRgotICAgIFRISVMgU09GVFdBUkUuCi0gIDwvY29weXJp
Z2h0PgotCi0gIDxpbnRlcmZhY2UgbmFtZT0id2xfd2Via2l0Z3RrIiB2ZXJzaW9uPSIxIj4KLSAg
ICA8cmVxdWVzdCBuYW1lPSJzZXRfc3VyZmFjZV9mb3Jfd2lkZ2V0Ij4KLSAgICAgIDxhcmcgbmFt
ZT0ic3VyZmFjZSIgdHlwZT0ib2JqZWN0IiBpbnRlcmZhY2U9IndsX3N1cmZhY2UiLz4KLSAgICAg
IDxhcmcgbmFtZT0iaWQiIHR5cGU9InVpbnQiLz4KLSAgICA8L3JlcXVlc3Q+Ci0KLSAgPC9pbnRl
cmZhY2U+Ci0KLTwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dsVW5pcXVlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dsVW5pcXVlUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmVjMzAwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2xVbmlxdWVQdHIuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50LXByb3Rv
Y29sLmg+CisjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2ZXItY29yZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgV2xQdHJEZWxldGVyIHsKKyAg
ICB2b2lkIG9wZXJhdG9yKCkoVCogcHRyKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgV2xVbmlxdWVQdHIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VCwgV2xQdHJEZWxldGVyPFQ+PjsKKworI2RlZmluZSBGT1JfRUFDSF9XQVlMQU5E
X0RFTEVURVIobWFjcm8pIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfZGlzcGxheSwgd2xfZGlzcGxh
eV9kZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX2dsb2JhbCwgd2xfZ2xvYmFsX2Rlc3Ry
b3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfc3VyZmFjZSwgd2xfc3VyZmFjZV9kZXN0cm95KSBc
CisgICAgbWFjcm8oc3RydWN0IHdsX2NvbXBvc2l0b3IsIHdsX2NvbXBvc2l0b3JfZGVzdHJveSkg
XAorICAgIG1hY3JvKHN0cnVjdCB3bF9yZWdpc3RyeSwgd2xfcmVnaXN0cnlfZGVzdHJveSkgXAor
ICAgIG1hY3JvKHN0cnVjdCB3bF9wcm94eSwgd2xfcHJveHlfZGVzdHJveSkKKworI2RlZmluZSBE
RUZJTkVfV0FZTEFORF9ERUxFVEVSKHR5cGVOYW1lLCBkZWxldGVyRnVuYykgXAorICAgIHRlbXBs
YXRlPD4gc3RydWN0IFdsUHRyRGVsZXRlcjx0eXBlTmFtZT4gXAorICAgIHsgXAorICAgICAgICB2
b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAg
ICAgICAgICBpZiAocHRyKSBcCisgICAgICAgICAgICAgICAgZGVsZXRlckZ1bmMocHRyKTsgXAor
ICAgICAgICB9IFwKKyAgICB9OworCitGT1JfRUFDSF9XQVlMQU5EX0RFTEVURVIoREVGSU5FX1dB
WUxBTkRfREVMRVRFUikKKyN1bmRlZiBGT1JfRUFDSF9XQVlMQU5EX0RFTEVURVIKKyN1bmRlZiBE
RUZJTkVfV0FZTEFORF9ERUxFVEVSCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGIxY2Y2Yi4uZGMyMGVl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA4LTE2ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBY2Nl
bGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3JrIGluIFdheWxhbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTgwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0byB0aGUgbmV3IEdM
Q29udGV4dCBBUEkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSk6CisKIDIwMTYtMDgtMjEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgRG9jdW1l
bnQmIGluc3RlYWQgb2YgRG9jdW1lbnQqIHdoZW4gZ2V0dGluZyBjb29raWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKaW5kZXggOWEyNmQ5Mi4uMTc4MTdiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUoKQogCiAgICAgLy8gVGhlIGNy
ZWF0aW9uIG9mIHRoZSBUZXh0dXJlTWFwcGVyIG5lZWRzIGFuIGFjdGl2ZSBPcGVuR0wgY29udGV4
dC4KICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0Ojpj
cmVhdGVDb250ZXh0Rm9yV2luZG93KG1fd2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCkpOworICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5k
b3cobV93aW5kb3cpOwogCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAg
LTI4Miw3ICsyODIsNyBAQCBib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gQ3JlYXRlIEdMIGNvbnRleHQuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdM
Q29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh0ZXN0
V2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRG
b3JXaW5kb3codGVzdFdpbmRvdyk7CiAKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgOjpE
ZXN0cm95V2luZG93KHRlc3RXaW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDExZDY1NmEuLjc4NGVkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTUgQEAKKzIwMTYtMDgtMTYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIGRvZXMgbm90IHdvcmsgaW4gV2F5bGFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgaW5pdGlhbCBpbXBsZW1l
bnRhdGlvbiBvZiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzdXBwb3J0IGluIFdheWxhbmQgZm9y
IHRoZSBHVEsrIHBvcnQuIEl0J3MgYmFzZWQKKyAgICAgICAgb24gcHJldmlvdXMgcGF0Y2hlcyB3
cml0dGVuIGJ5IElhZ28gVG9yYWwsIMW9YW4gRG9iZXLFoWVrLCBFbWFudWVsZSBBaW5hIGFuZCBF
bWlsaW8gUG96dWVsbyBNb25mb3J0LgorCisgICAgICAgIFRoZSBleGlzdGluZyBXZWJLaXRHVEsr
IFdheWxhbmQgaW50ZXJmYWNlIHByZXZpb3VzbHkgYWRkZWQgZm9yIHRoaXMgdG8gV2ViQ29yZSBo
YXMgYmVlbiBtb3ZlZCB0byB0aGUgV2ViS2l0MgorICAgICAgICBsYXllciwgc2luY2UgaXQncyBh
Y3R1YWxseSBzcGVjaWZpYyB0byBXZWJLaXQyLCBhbmQgaXQncyBub3cgYWN0dWFsbHkgdXNlZC4g
VGhlIFVJIHByb2Nlc3MgcnVucyBhIG5lc3RlZCBXYXlsYW5kCisgICAgICAgIGNvbXBvc2l0b3Ig
dGhhdCB3ZWIgcHJvY2Vzc2VzIGNvbm5lY3QgdG8uIFdlYiBwcm9jZXNzZXMgY3JlYXRlIGEgV2F5
bGFuZCBzdXJmYWNlIGluIHRoZSBuZXN0ZWQgY29tcG9zaXRvciBmb3IKKyAgICAgICAgdGhlIHdl
YiBwYWdlLCBhbmQgdXNpbmcgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBwcm90b2NvbCBpbnRlcmZh
Y2UgdGhleSB0ZWxsIHRoZSBuZXN0ZWQgY29tcG9zaXRvciB0aGUgd2ViIHBhZ2UKKyAgICAgICAg
YXNzb2NpYXRlZCB0byB0aGUgc3VyZmFjZS4gQSBXYXlsYW5kIHdpbmRvdyBpcyBjcmVhdGVkIGZv
ciB0aGF0IHN1cmZhY2UgdGhhdCBpcyB0aGVuIHVzZWQgYXMgdGhlIG5hdGl2ZSB3aW5kb3cKKyAg
ICAgICAgaGFuZGxlIGZvciBjb21wb3NpdGluZy4gVG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgbmVz
dGVkIGNvbXBvc2l0b3IgYW5kIHRvIGVuc3VyZSBhbGwgR0wgb3BlcmF0aW9ucyBoYXBwZW4gaW4g
dGhlCisgICAgICAgIG5lc3RlZCBjb21wb3NpdG9yIGRpc3BsYXksIHRoZSB3ZWIgcHJvY2VzcyBj
cmVhdGVzIGEgV2F5bGFuZCBkaXNwbGF5IHRoYXQgY29ubmVjdHMgdG8gdGhlIG5lc3RlZCBjb21w
b3NpdG9yLAorICAgICAgICB1c2VzIHRoZSBXZWJLaXRHVEsrIFdheWxhbmQgaW50ZXJmYWNlIGFu
ZCBpdCdzIHNldCBhcyB0aGUgZ2xvYmFsIHNoYXJlZCBkaXNwbGF5IGZvciBjb21wb3NpdGluZy4K
KworICAgICAgICBUaGUgbmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjcmVhdGVzIGEgbmV3IGRp
c3BsYXkgd2l0aCBhIHVuaXF1ZSBuYW1lIHRoYXQgaXMgc2VudCB0byB0aGUgd2ViIHByb2Nlc3Nl
cyBhdAorICAgICAgICBzdGFydCB1cC4gSXQgaW1wbGVtZW50cyB0aGUgV2F5bGFuZCBzdXJmYWNl
IGludGVyZmFjZSB0byBoYW5kbGUgdGhlIFdheWxhbmQgYnVmZmVycyBjcmVhdGVkIGZvciBldmVy
eSBzdXJmYWNlCisgICAgICAgIGFuZCBzY2hlZHVsaW5nIHJlZHJhd3Mgb24gdGhlIHdlYiBwYWdl
cyB3aGVuIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZS4gSXQgdXNlcyB0aGUgV2ViS2l0R1RLKyBXYXls
YW5kIGludGVyZmFjZSB0bworICAgICAgICBhc3NvY2lhdGUgdGhlIHN1cmZhY2VzIHRvIGEgcGFy
dGljdWxhciB3ZWIgcGFnZS4gQSB0ZXh0dXJlIGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IHN1cmZhY2Ug
YW5kIHVwZGF0ZWQgd2l0aCB0aGUKKyAgICAgICAgV2F5bGFuZCBidWZmZXIgY29udGVudHMgdXNp
bmcgYW4gRUdMSW1hZ2VLSFIgYW5kIGVnbEltYWdlVGFyZ2V0VGV4dHVyZTJkIEFQSS4KKworICAg
ICAgICBUbyBhYnN0cmFjdCB0aGUgcGxhdGZvcm0gZGlmZmVyZW5jZXMgYW5kIGF2b2lkIGlmZGVm
cyBhcyBtdWNoIGFzIHBvc3NpYmxlLCBuZXcgYWJzdHJhY3QgY2xhc3NlcyBoYXZlIGJlZW4gYWRk
ZWQKKyAgICAgICAgdG8gcmVwcmVzZW50IHRoZSBzdXJmYWNlcyB1c2VkIGluIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nLiBBY2NlbGVyYXRlZFN1cmZhY2UgaXMgdXNlZCBieSB0aGUgd2ViIHByb2Nl
c3MgYW5kCisgICAgICAgIHJlcHJlc2VudHMgdGhlIHN1cmZhY2Ugd2hlcmUgY29udGVudHMgYXJl
IHJlbmRlcmVkIGludG8uIFRoZSBYMTEgaW1wbGVtZW50YXRpb24gaXMgdGhlIHJlZGlyZWN0ZWQg
WENvbXBvc2l0ZQorICAgICAgICB3aW5kb3csIGFuZCB0aGUgV2F5bGFuZCBpbXBsZW1lbnRhdGlv
biBpcyBlcXVpdmFsZW50IHRvIHRoZSBwcmV2aW91cyBXYXlsYW5kIHN1cmZhY2UgYWRkZWQgdG8g
V2ViQ29yZSBidXQgbmV2ZXIKKyAgICAgICAgdXNlZC4gSW4gdGhlIFVJIHByb2Nlc3MgdGhlIHdl
YiB2aWV3IGNyZWF0ZXMgYW4gYWJzdHJhY3QgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgdGhhdCBp
cyB1c2VkIHRvIHJlbmRlciB0aGUKKyAgICAgICAgQWNjZWxlcmF0ZWRTdXJmYWNlIGludG8gdGhl
IHdlYiB2aWV3IHVzaW5nIGNhaXJvLiBUaGUgWDExIGltcGxlbWVudGF0aW9uIGNyZWF0ZXMgdGhl
IGNhaXJvIHN1cmZhY2UgZm9yIHRoZQorICAgICAgICByZWRpcmVjdGVkIFhDb21wb3NpdGUgd2lu
ZG93IHBpeG1hcCBhbmQgdXNlcyBYRGFtYWdlIGV4dGVuc2lvbiB0byBzY2hlZHVsZSByZWRyYXdz
LiBUaGUgV2F5bGFuZCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBhc2tzIHRoZSBuZXN0ZWQgV2F5
bGFuZCBjb21wb3NpdG9yIGZvciB0aGUgdGV4dHVyZSBhc3NvY2lhdGVkIHRvIHRoZSB3ZWIgdmll
dyBwYWdlLgorCisgICAgICAgIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG5vdyBhbHdheXMg
ZW5hYmxlZCBieSBkZWZhdWx0IGluIGJvdGggWDExIGFuZCBXYXlsYW5kLCB1bmxlc3MgaXQncyBl
eHBsaWNpdGx5CisgICAgICAgIGRpc2FibGVkIGJ5IHRoZSB1c2VyIHVzaW5nIHRoZSBXRUJLSVRf
RElTQUJMRV9DT01QT1NJVElOR19NT0RFIGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBpZiBhbnkg
ZXh0ZW5zaW9uIG9yCisgICAgICAgIGZlYXR1cmUgcmVxdWlydGVkIGJ5IFgxMSBvciBXYXlsYW5k
IGltcGxlbWVudGF0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KKworICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OmdsQ29udGV4dCk6IFBhc3MgdGhlIHNoYXJlZCBkaXNwbGF5IGZvciBj
b21wb3NpdGluZyB0byBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coKQorICAgICAg
ICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKTogRW5jb2RlIHdheWxh
bmQgY29tcG9zaXRvciBkaXNwbGF5IG5hbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6IERlY29kZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlz
cGxheSBuYW1lLgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6IEFkZCB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lIGluaXRpYWwgcGFyYW1ldGVy
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZURyYXcpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKToKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOiBJbml0aWFsaXplIHRoZSB3YXlsYW5kIGNv
bXBvc2l0b3IgZGlzcGxheSBuYW1lIGluaXRpYWwgcGFyYW1ldGVyLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjp+QWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjp1cGRhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6
OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmll
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlmaWVyOjphZGQpOgor
ICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OnJlbW92ZSk6CisgICAgICAgIChXZWJL
aXQ6OlhEYW1hZ2VOb3RpZmllcjo6ZmlsdGVyWERhbWFnZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6WERhbWFnZU5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTE6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp1cGRh
dGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Z2V0T3JDcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp+QnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6ZGVzdHJveUxpc3RlbmVyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1c2Up
OgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1bnVzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZUltYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6c2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpTdXJmYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6On5TdXJmYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6Om1ha2VQZW5kaW5nQnVmZmVy
Q3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjph
dHRhY2hCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFj
ZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1
cmZhY2U6OnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXYXls
YW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6Y29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFu
ZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0wpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVXYXls
YW5kTG9vcFNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpXYXls
YW5kQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpnZXRU
ZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmJpbmRTdXJmYWNl
VG9XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OnJlZ2lzdGVy
V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjp1bnJlZ2lzdGVy
V2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRl
V2Vha1B0cik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpz
ZXRXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmlzUnVubmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpkaXNwbGF5TmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRl
ZFN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OkFjY2VsZXJh
dGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6fkFjY2Vs
ZXJhdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6cmVz
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFj
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjp3aW5kb3cp
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OnN1cmZhY2VJRCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndheWxhbmRDb21wb3NpdG9yRGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OkFjY2VsZXJhdGVkU3VyZmFj
ZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjp+
QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQ6OnJlc2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuY3BwLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6QWNjZWxlcmF0ZWRT
dXJmYWNlWDExKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjp+QWNj
ZWxlcmF0ZWRTdXJmYWNlWDExKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNl
WDExOjpyZXNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0
ZWRTdXJmYWNlWDExLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmguCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RHdGs6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0R3RrOjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0
azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OlJlbmRlckZyYW1lU2NoZWR1bGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhv
c3RHdGsuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgdGhl
IHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IG5hbWUuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndheWxhbmRDb21wb3Np
dG9yRGlzcGxheU5hbWUpOiBSZXR1cm4gdGhlIHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IG5h
bWUuCisKIDIwMTYtMDgtMjIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBuYXZlcmNvcnAu
Y29tPgogCiAgICAgICAgIFtTT1VQXSBDaGFuZ2UgTWVzc2FnZURlY29kZXIgd2l0aCBEZWNvZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDM0M2U5NmIuLjA5ODBmNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yOTUsMTMgKzI5NSwxNiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQ
YWdlUHJveHlHU3RyZWFtZXIuY3BwCiAKKyAgICBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlLmNwcAorICAgIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kLmNwcAorICAgIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
Y3BwCiAgICAgVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL2d0ay9FeHBlcmltZW50YWxGZWF0dXJlcy5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0dlc3R1
cmVDb250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKICAgICBVSVByb2Nl
c3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAotICAgIFVJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlm
aWVyLmNwcAorICAgIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCiAgICAgVUlQ
cm9jZXNzL2d0ay9XZWJDb2xvclBpY2tlckd0ay5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRNZW51UHJveHlHdGsuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuQ2xp
ZW50R3RrLmNwcApAQCAtMzUwLDggKzM1MywxMCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9nc3RyZWFtZXIvV2ViUGFnZUdTdHJlYW1lci5j
cHAKIAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAor
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAK
KyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTM2OCw2ICszNzMsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX0RFUklWRURfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElS
fS9JbnNwZWN0b3JHUmVzb3VyY2VCdW5kbGUuYwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJ
VDJHVEtfRElSfS9XZWJLaXQySW5zcGVjdG9yR1Jlc291cmNlQnVuZGxlLmMKICAgICAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MlJlc291cmNlc0dSZXNvdXJjZUJ1bmRs
ZS5jCisgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5k
Q2xpZW50UHJvdG9jb2wuYwogCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElf
RElSfS9XZWJLaXRFbnVtVHlwZXMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19BUElfRElSfS9XZWJLaXRNYXJzaGFsLmNwcApAQCAtNjg0LDYgKzY5MCwxNyBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgVkVSQkFUSU0KICkKIAoraWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdF
VCkKKyAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgorICAgIGFkZF9jdXN0b21fY29t
bWFuZCgKKyAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9X
ZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmMKKyAgICAgICAgREVQRU5EUyAke1dFQktJVDJf
RElSfS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sCisgICAgICAgIENPTU1B
TkQgd2F5bGFuZC1zY2FubmVyIHNlcnZlci1oZWFkZXIgPCAke1dFQktJVDJfRElSfS9TaGFyZWQv
Z3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lU
MkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kU2VydmVyUHJvdG9jb2wuaAorICAgICAgICBDT01NQU5E
IHdheWxhbmQtc2Nhbm5lciBjbGllbnQtaGVhZGVyIDwgJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0
ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJH
VEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmgKKyAgICAgICAgQ09NTUFORCB3
YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0Mldh
eWxhbmRQcm90b2NvbC54bWwgPiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2Vi
S2l0MldheWxhbmRDbGllbnRQcm90b2NvbC5jCisgICAgKQorZW5kaWYgKCkKKwogaWYgKEVOQUJM
RV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogICAgIHNldChQbHVnaW5Qcm9jZXNzR1RLMl9FWEVDVVRB
QkxFX05BTUUgV2ViS2l0UGx1Z2luUHJvY2VzczIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggMzQ1MjQy
OC4uM2ExYjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAKICNpbmNsdWRlICJDb21wb3NpdGluZ1J1bkxv
b3AuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogI2lmIFVTRShPUEVOR0xfRVNfMikKQEAg
LTE5MCw3ICsxOTEsNyBAQCBHTENvbnRleHQqIFRocmVhZGVkQ29tcG9zaXRvcjo6Z2xDb250ZXh0
KCkKICAgICBpZiAoIW1fbmF0aXZlU3VyZmFjZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3co
cmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1fbmF0aXZlU3VyZmFjZUhhbmRs
ZSksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgbV9jb250ZXh0ID0gR0xDb250
ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5k
b3dUeXBlPihtX25hdGl2ZVN1cmZhY2VIYW5kbGUpLCAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IDllYmI0M2QuLjIxOThmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE0
NSw2ICsxNDUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIE9TKExJTlVYKQogICAgIGVuY29kZXIg
PDwgbWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShX
QVlMQU5EKQorICAgIGVuY29kZXIgPDwgd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsKKyNl
bmRpZgogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCkBAIC0zMDUsNiArMzA5LDExIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IGZmMjAwNWMuLmMyNmM0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTcwLDYgKzE3MCwx
MCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgT1MoTElOVVgp
CiAgICAgSVBDOjpBdHRhY2htZW50IG1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRsZTsKICNlbmRp
ZgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBTdHJpbmcgd2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5TmFtZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1s
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjQ2MTMyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnht
bApAQCAtMCwwICsxLDM3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgorPHByb3RvY29sIG5hbWU9IndsX3dlYmtpdGd0ayI+CisKKyAgPGNvcHlyaWdodD4KKyAgICBD
b3B5cmlnaHQgwqkgMjAxNCBJZ2FsaWEgUy5MLgorCisgICAgUGVybWlzc2lvbiB0byB1c2UsIGNv
cHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcworICAgIHNvZnR3YXJlIGFuZCBp
dHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQKKyAgICB3
aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBl
YXIgaW4KKyAgICBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24KKyAgICBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9j
dW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YKKyAgICB0aGUgY29weXJpZ2h0IGhvbGRl
cnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5CisgICAgcGVydGFpbmlu
ZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCisgICAg
d3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgVGhlIGNvcHlyaWdodCBob2xkZXJzIG1ha2Ugbm8K
KyAgICByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdh
cmUgZm9yIGFueQorICAgIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQg
ZXhwcmVzcyBvciBpbXBsaWVkCisgICAgd2FycmFudHkuCisKKyAgICBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUworICAgIFNP
RlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5ECisgICAgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgICAgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisgICAgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJP
TSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOCisgICAgQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwKKyAgICBB
UklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5D
RSBPRgorICAgIFRISVMgU09GVFdBUkUuCisgIDwvY29weXJpZ2h0PgorCisgIDxpbnRlcmZhY2Ug
bmFtZT0id2xfd2Via2l0Z3RrIiB2ZXJzaW9uPSIxIj4KKyAgICA8cmVxdWVzdCBuYW1lPSJiaW5k
X3N1cmZhY2VfdG9fcGFnZSI+CisgICAgICA8YXJnIG5hbWU9InN1cmZhY2UiIHR5cGU9Im9iamVj
dCIgaW50ZXJmYWNlPSJ3bF9zdXJmYWNlIi8+CisgICAgICA8YXJnIG5hbWU9InBhZ2VfaWQiIHR5
cGU9InVpbnQiLz4KKyAgICA8L3JlcXVlc3Q+CisKKyAgPC9pbnRlcmZhY2U+CisKKzwvcHJvdG9j
b2w+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKaW5kZXggYWQzODE0MC4uMDZhZjA1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAKICNpbmNsdWRl
ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJJbnB1
dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgiCkBAIC03
MiwyMyArNzMsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAj
ZW5kaWYKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotI2luY2x1ZGUg
IlhEYW1hZ2VOb3RpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDEx
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxYMTEv
WGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KLSNpbmNsdWRlIDxj
YWlyby14bGliLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxnZGsv
Z2RreC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotI2luY2x1ZGUgPGdkay9n
ZGt3YXlsYW5kLmg+Ci0jZW5kaWYKLQogLy8gZ3RrX3dpZGdldF9nZXRfc2NhbGVfZmFjdG9yKCkg
YXBwZWFyZWQgaW4gR1RLIDMuMTAsIGJ1dCB3ZSBhbHNvIG5lZWQKIC8vIHRvIG1ha2Ugc3VyZSB3
ZSBoYXZlIGNhaXJvIG5ldyBlbm91Z2ggdG8gc3VwcG9ydCBjYWlyb19zdXJmYWNlX3NldF9kZXZp
Y2Vfc2NhbGUKICNkZWZpbmUgSEFWRV9HVEtfU0NBTEVfRkFDVE9SIEhBVkVfQ0FJUk9fU1VSRkFD
RV9TRVRfREVWSUNFX1NDQUxFICYmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQpAQCAtMjEx
LDEwICsxOTksNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgdW5z
aWduZWQgc2NyZWVuU2F2ZXJDb29raWU7CiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdTdXJmYWNlOwotICAgIFhVbmlxdWVEYW1hZ2UgYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1N1cmZhY2VEYW1hZ2U7Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmU+IGFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOwogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0FuZERyb3BIYW5kbGVyPiBkcmFn
QW5kRHJvcEhhbmRsZXI7CkBAIC0zNTEsNTAgKzMzNiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
VmllCiAgICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IGdfc2lnbmFsX2Nv
bm5lY3Rfc3dhcHBlZCh3aW5kb3csICJyZWFsaXplIiwgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRv
d1JlYWxpemVkKSwgd2ViVmlld0Jhc2UpOwogfQogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdQaXhtYXAoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIFBpeG1hcCBwaXht
YXApCi17Ci0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSAh
PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBpZiAocHJp
di0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UKLSAgICAgICAgJiYgY2Fpcm9feGxpYl9z
dXJmYWNlX2dldF9kcmF3YWJsZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZS5n
ZXQoKSkgPT0gcGl4bWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocHJpdi0+YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UpIHsKLSAgICAgICAgaWYgKHByaXYtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlKSB7Ci0gICAgICAgICAgICBYRGFtYWdlTm90aWZpZXI6
OnNpbmdsZXRvbigpLnJlbW92ZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURh
bWFnZS5nZXQoKSk7Ci0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZURhbWFnZS5yZXNldCgpOwotICAgICAgICB9Ci0gICAgICAgIHByaXYtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdTdXJmYWNlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIXBpeG1hcCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVh
ID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJveHktPmRy
YXdpbmdBcmVhKCkpOwotICAgIGlmICghZHJhd2luZ0FyZWEpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEludFNpemUgc2l6ZSA9IGRyYXdpbmdBcmVhLT5zaXplKCk7Ci0gICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IgPSBwcml2LT5wYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAg
c2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCk7Ci0gICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IEdES19ESVNQTEFZ
X1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsKLSAgICBHZGtWaXN1YWwqIHZp
c3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQo
KSk7Ci0gICAgaWYgKCF2aXN1YWwpCi0gICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5
c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAgICBwcml2LT5hY2NlbGVy
YXRlZENvbXBvc2l0aW5nU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUocHJp
di0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9y
LCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1
cmZhY2VEYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgWERhbWFnZVJlcG9y
dE5vbkVtcHR5KTsKLSAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZChwcml2LT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZS5nZXQoKSwgW3dlYlZpZXddIHsKLSAg
ICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQod2ViVmlldykpOwotICAgIH0p
OwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtX
aWRnZXQqIHdpZGdldCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC01NjQsOSArNTA1LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKEdPYmplY3QqIGdvYmplY3QpCiAgICAgZ19jYW5jZWxs
YWJsZV9jYW5jZWwod2ViVmlldy0+cHJpdi0+c2NyZWVuU2F2ZXJJbmhpYml0Q2FuY2VsbGFibGUu
Z2V0KCkpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyh3
ZWJWaWV3LCBudWxscHRyKTsKICAgICB3ZWJWaWV3LT5wcml2LT5wYWdlUHJveHktPmNsb3NlKCk7
Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmll
d0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYlZpZXcsIDApOwotI2VuZGlm
CisgICAgd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgPSBudWxscHRyOwog
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPmRp
c3Bvc2UoZ29iamVjdCk7CiB9CiAKQEAgLTU4NSw1NSArNTI0LDYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+YXV0
aGVudGljYXRpb25EaWFsb2cgPSAwOwogfQogCi1zdGF0aWMgYm9vbCB3ZWJraXRXZWJWaWV3UmVu
ZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEsIGNhaXJvX3QqIGNyLCBH
ZGtSZWN0YW5nbGUqIGNsaXBSZWN0KQotewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQotICAgIEFTU0VSVChkcmF3aW5nQXJlYSk7Ci0KLSAgICBpZiAoIWRyYXdpbmdBcmVh
LT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVX
X0JBU0Uod2ViVmlld0Jhc2UpLT5wcml2OwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9
IHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlLmdldCgpOwotICAgIGNhaXJvX3Nh
dmUoY3IpOwotCi0gICAgaWYgKCFzdXJmYWNlIHx8ICFwcml2LT5wYWdlUHJveHktPmRyYXdzQmFj
a2dyb3VuZCgpKSB7Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9IHByaXYt
PnBhZ2VQcm94eS0+YmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgIGlmIChjb2xvci5oYXNBbHBo
YSgpKSB7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBjbGlw
UmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKLSAgICAgICAgICAg
IGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgICAgICAg
ICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29sb3IuYWxwaGEo
KSA+IDApIHsKLSAgICAgICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9yKTsK
LSAgICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNF
KTsKLSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNsaXBSZWN0
LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICAgICAgY2Fp
cm9fZmlsbChjcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSkgewotICAg
ICAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGF0
IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0Ci0gICAgICAgIC8vIGFzIGRpcnR5IHRvIGVuc3VyZSB3
ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9zc2libGUu
Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJmYWNlKTsKLSAgICAgICAgY2Fp
cm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0LT53aWR0
aCwgY2xpcFJlY3QtPmhlaWdodCk7Ci0gICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj
ciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9f
T1BFUkFUT1JfT1ZFUik7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0KLQotICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh3ZWJWaWV3QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNyKTsKLSAgICBVTlVTRURfUEFS
QU0oY2xpcFJlY3QpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBj
cikKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3aWRnZXQpOwpAQCAtNjQ1LDcgKzUzNSw5IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogICAgIGlm
ICghZ2RrX2NhaXJvX2dldF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCi0gICAgaWYgKCF3ZWJraXRXZWJWaWV3UmVuZGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1Jlc3VsdHMod2ViVmlld0Jhc2UsIGRyYXdpbmdBcmVhLCBjciwgJmNsaXBSZWN0
KSkgeworICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUg
JiYgZHJhd2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQorICAgICAg
ICB3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnBhaW50KGNyLCBj
bGlwUmVjdCk7CisgICAgZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6OlJlZ2lvbiB1bnBhaW50ZWRS
ZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNlZC4KICAgICAgICAgZHJhd2luZ0FyZWEtPnBh
aW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKICAgICB9CkBAIC0xMjg2LDYgKzEx
NzgsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFJlZjxBUAogICAgIHByaXYtPnBhZ2VQcm94eSA9IGNv
bnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJh
dGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAorICAg
IHByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlID0gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZSgqcHJpdi0+cGFnZVByb3h5KTsKKwogICAgIHByaXYtPmlucHV0TWV0aG9kRmlsdGVy
LnNldFBhZ2UocHJpdi0+cGFnZVByb3h5LmdldCgpKTsKIAogI2lmIEhBVkUoR1RLX1NDQUxFX0ZB
Q1RPUikKQEAgLTE1NjYsMjkgKzE0NjAsMjAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlc2V0
Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIAogdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBs
YXllclRyZWVDb250ZXh0KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3
ZWJraXRXZWJWaWV3QmFzZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYgKHdlYmtp
dFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAgICAgd2Vi
a2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUobGF5
ZXJUcmVlQ29udGV4dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2Us
IGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7Ci0jaWYgVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCBsYXllclRyZWVDb250
ZXh0LmNvbnRleHRJRCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFz
ZSk7Ci0jZW5kaWYKKyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAogdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
UGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdl
YmtpdFdlYlZpZXdCYXNlKTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJp
di0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5w
cml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKExheWVyVHJlZUNvbnRleHQoKSk7
CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQpAQCAtMTYxNiw5ICsxNTAxLDkgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2UKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotI2lmIFVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgMCk7Ci0jZWxpZiBQTEFURk9S
TShYMTEpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2Ut
PnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShMYXllclRyZWVDb250ZXh0
KCkpOworI2lmIFBMQVRGT1JNKFgxMSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLnR5cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBhNTkyOGVjLi4xM2EwYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEwMCw2ICsxMDAsMTEgQEAKICNpbmNsdWRlICJNZW1vcnlQ
cmVzc3VyZU1vbml0b3IuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNs
dWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5Lmg+CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTYzOSw2ICs2NDQsMTEgQEAgV2ViUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgICAgIHBhcmFt
ZXRlcnMubWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlID0gTWVtb3J5UHJlc3N1cmVNb25pdG9y
OjpzaW5nbGV0b24oKS5jcmVhdGVIYW5kbGUoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZ
TEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09
IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgcGFyYW1ldGVycy53YXls
YW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lID0gV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigp
LmRpc3BsYXlOYW1lKCk7CisjZW5kaWYKKwogICAgIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwogCiAgICAg
Ly8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxY2FmZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
LmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXku
aD4KKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kLmgiCisjZW5kaWYKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgiCisjZW5kaWYK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU+IEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorI2lmIFVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAg
ICAgIHJldHVybiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6Y3JlYXRlKHdlYlBhZ2UpOwor
I2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCisgICAgOiBt
X3dlYlBhZ2Uod2ViUGFnZSkKK3sKK30KKworQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6On5BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZSgpCit7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmU6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBp
ZiAobV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9IG1fd2ViUGFnZS5iYWNrZ3JvdW5kQ29s
b3IoKTsKKyAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkgeworICAgICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlw
UmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BF
UkFUT1JfQ0xFQVIpOworICAgICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9CisKKyAgICBpZiAo
Y29sb3IuYWxwaGEoKSA+IDApIHsKKyAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwg
Y29sb3IpOworICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NP
VVJDRSk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVj
dC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY2Fp
cm9fZmlsbChjcik7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ3NmJiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9jYWlybyBjYWlyb190Owor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgTGF5ZXJUcmVlQ29udGV4dDsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwor
Y2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZT4g
Y3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IExheWVyVHJlZUNvbnRleHQm
KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKKworcHJvdGVjdGVkOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBh
Z2VQcm94eSYpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjZiYTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
CkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZC5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldh
eWxhbmRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8u
aD4KKworI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNlbHNl
CisjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTaGltcy5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZD4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIGlmICghV2F5bGFuZENv
bXBvc2l0b3I6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZD4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCh3ZWJQYWdlKSk7Cit9CisK
K0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlKHdlYlBhZ2UpCit7CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLnJlZ2lz
dGVyV2ViUGFnZShtX3dlYlBhZ2UpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoKQoreworICAgIFdheWxhbmRDb21w
b3NpdG9yOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworfQorCiti
b29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQoY2Fpcm9fdCogY3IsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIEdMdWludCB0ZXh0dXJlOworICAgIEludFNp
emUgdGV4dHVyZVNpemU7CisgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCku
Z2V0VGV4dHVyZShtX3dlYlBhZ2UsIHRleHR1cmUsIHRleHR1cmVTaXplKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CisKKyNpZiAwCisgICAgLy8gRklYTUU6IFVzZSB0
aGlzIHdoZW4gR1RLKyA+PSAzLjE2LiBHVEsrIGV4cGVjdHMgdGhlIFkgYXhpcyB0byBiZSBpbnZl
cnRlZCB0byB3aGF0IHdlIGdldCwgc28gd2UgbmVlZCB0byBmbGlwIGl0IHNvbWVob3cuCisgICAg
Z2RrX2NhaXJvX2RyYXdfZnJvbV9nbChjciwgZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2ViUGFn
ZS52aWV3V2lkZ2V0KCkpLCB0ZXh0dXJlLCBHTF9URVhUVVJFLCAxLCBjbGlwUmVjdC54KCksIGNs
aXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworI2Vsc2UK
KyAgICBJbnRTaXplIHNpemUgPSB0ZXh0dXJlU2l6ZTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHNpemUuc2NhbGUoZGV2
aWNlU2NhbGVGYWN0b3IpOworCisgICAgaWYgKCFtX3N1cmZhY2UgfHwgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdldCgpKSAhPSBzaXplLndpZHRoKCkgfHwgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fc3VyZmFjZS5nZXQoKSkgIT0gc2l6ZS5oZWlnaHQo
KSkKKyAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVh
dGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Cisg
ICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgR0x1aW50IGZiOworICAgIGdsR2Vu
RnJhbWVidWZmZXJzKDEsICZmYik7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIGZiKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAgICBnbFBp
eGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1BB
Q0tfUk9XX0xFTkdUSCwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5n
ZXQoKSkgLyA0KTsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAs
IHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQo
KSkpOworI2Vsc2UKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVNpemUud2lkdGgoKSwg
dGV4dHVyZVNpemUuaGVpZ2h0KCksIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JF
ViwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpKTsKKyNlbmRp
ZgorICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCAwKTsKKworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
cygxLCAmZmIpOworCisgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3
ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAorICAgIC8vIGFzIGRpcnR5IHRv
IGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMg
cG9zc2libGUuCisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc3VyZmFjZS5nZXQoKSk7
CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xp
cFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vf
c3VyZmFjZShjciwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0
b3IoY3IsIENBSVJPX09QRVJBVE9SX09WRVIpOworICAgIGNhaXJvX2ZpbGwoY3IpOworI2VuZGlm
CisKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQy
MjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkK
KworI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZD4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAg
IH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoKTsKKworcHJpdmF0ZToKKyAgICBBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoV2ViUGFnZVByb3h5Jik7CisKKyAgICBib29sIHBh
aW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisKKyAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMjgzMDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmNwcApAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVgxMS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUgIkxh
eWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3Bs
YXlYMTEuaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25z
L1hkYW1hZ2UuaD4KKyNpbmNsdWRlIDxjYWlyby14bGliLmg+CisjaW5jbHVkZSA8Z2RrL2dka3gu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyBPcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOworCitjbGFzcyBYRGFtYWdl
Tm90aWZpZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhEYW1hZ2VOb3RpZmllcik7Cisg
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj47CitwdWJsaWM6
CisgICAgc3RhdGljIFhEYW1hZ2VOb3RpZmllciYgc2luZ2xldG9uKCkKKyAgICB7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+IG5vdGlmaWVyOworICAgICAg
ICByZXR1cm4gbm90aWZpZXI7CisgICAgfQorCisgICAgdm9pZCBhZGQoRGFtYWdlIGRhbWFnZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgbm90aWZ5RnVuY3Rpb24pCisgICAgeworICAgICAgICBp
ZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZ2RrX3dpbmRvd19h
ZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRl
clhEYW1hZ2VFdmVudCksIHRoaXMpOworICAgICAgICBtX25vdGlmeUZ1bmN0aW9ucy5hZGQoZGFt
YWdlLCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmUo
RGFtYWdlIGRhbWFnZSkKKyAgICB7CisgICAgICAgIG1fbm90aWZ5RnVuY3Rpb25zLnJlbW92ZShk
YW1hZ2UpOworICAgICAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBYRGFtYWdlTm90aWZpZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgR2Rr
RmlsdGVyUmV0dXJuIGZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZlbnQqIGV2ZW50LCBHZGtFdmVu
dCosIFhEYW1hZ2VOb3RpZmllciogbm90aWZpZXIpCisgICAgeworICAgICAgICBhdXRvKiB4RXZl
bnQgPSBzdGF0aWNfY2FzdDxYRXZlbnQqPihldmVudCk7CisgICAgICAgIGlmICh4RXZlbnQtPnR5
cGUgIT0gc19kYW1hZ2VFdmVudEJhc2UudmFsdWUoKSArIFhEYW1hZ2VOb3RpZnkpCisgICAgICAg
ICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsKKworICAgICAgICBhdXRvKiBkYW1hZ2VF
dmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8WERhbWFnZU5vdGlmeUV2ZW50Kj4oeEV2ZW50KTsKKyAg
ICAgICAgaWYgKG5vdGlmaWVyLT5ub3RpZnkoZGFtYWdlRXZlbnQtPmRhbWFnZSkpIHsKKyAgICAg
ICAgICAgIFhEYW1hZ2VTdWJ0cmFjdCh4RXZlbnQtPnhhbnkuZGlzcGxheSwgZGFtYWdlRXZlbnQt
PmRhbWFnZSwgTm9uZSwgTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9SRU1P
VkU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsKKyAg
ICB9CisKKyAgICBib29sIG5vdGlmeShEYW1hZ2UgZGFtYWdlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGF1dG8mIG5vdGlmeUZ1bmN0aW9uID0gbV9ub3RpZnlGdW5jdGlvbnMuZ2V0
KGRhbWFnZSkpIHsKKyAgICAgICAgICAgIG5vdGlmeUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9ub3RpZnlGdW5jdGlv
bnM7Cit9OworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE+IEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQor
eworICAgIGF1dG8mIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKKyAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNY
Q29tcG9zaXRlKCkgfHwgIWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdlKHNfZGFtYWdlRXZlbnRCYXNl
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMT4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDEx
KHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlKHdlYlBhZ2UpCit7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDEx
Ojp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoKQoreworICAgIGlmIChtX2RhbWFnZSkgewor
ICAgICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShtX2RhbWFnZS5nZXQo
KSk7CisgICAgICAgIG1fZGFtYWdlLnJlc2V0KCk7CisgICAgfQorfQorCit2b2lkIEFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExOjp1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJU
cmVlQ29udGV4dCkKK3sKKyAgICBQaXhtYXAgcGl4bWFwID0gbGF5ZXJUcmVlQ29udGV4dC5jb250
ZXh0SUQ7CisgICAgaWYgKG1fc3VyZmFjZSAmJiBjYWlyb194bGliX3N1cmZhY2VfZ2V0X2RyYXdh
YmxlKG1fc3VyZmFjZS5nZXQoKSkgPT0gcGl4bWFwKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9zdXJmYWNlKSB7CisgICAgICAgIGlmIChtX2RhbWFnZSkgeworICAgICAgICAgICAgWERh
bWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5yZW1vdmUobV9kYW1hZ2UuZ2V0KCkpOworICAgICAg
ICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICAgICAgfQorICAgICAgICBtX3N1cmZhY2UgPSBu
dWxscHRyOworICAgIH0KKworICAgIGlmICghcGl4bWFwKQorICAgICAgICByZXR1cm47CisKKyAg
ICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5n
QXJlYVByb3h5SW1wbCo+KG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpKTsKKyAgICBpZiAoIWRyYXdp
bmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNpemUgPSBkcmF3aW5nQXJl
YS0+c2l6ZSgpOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmRldmlj
ZVNjYWxlRmFjdG9yKCk7CisgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgQVNTRVJUKGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpID09IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkp
KTsKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdk
a19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAgaWYgKCF2aXN1YWwpCisgICAgICAgIHZpc3Vh
bCA9IGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgp
KTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKGRp
c3BsYXksIHBpeG1hcCwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fc3VyZmFj
ZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBtX2Rh
bWFnZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBYRGFtYWdlUmVwb3J0Tm9uRW1w
dHkpOworICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkKG1fZGFtYWdlLmdldCgp
LCBbdGhpc10geworICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcobV93ZWJQYWdlLnZpZXdX
aWRnZXQoKSk7CisgICAgfSk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6
OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAo
IW1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2Fpcm9fc2F2ZShjcik7
CisgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CisKKyAg
ICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGF0IGFu
eSB0aW1lLCBzbyB3ZSBtYXJrIGl0CisgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdlIGFsd2F5
cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICBj
YWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJmYWNlLmdldCgpKTsKKyAgICBjYWlyb19yZWN0
YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBj
bGlwUmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBtX3N1
cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BF
UkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fZmlsbChjcik7CisKKyAgICBjYWlyb19yZXN0b3JlKGNy
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YTdjMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUuaCIKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1
ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK2NsYXNzIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExIGZpbmFsIDogcHVibGljIEFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE+IGNyZWF0
ZShXZWJQYWdlUHJveHkmKTsKKyAgICB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoKTsKKwor
cHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMShXZWJQYWdlUHJveHkmKTsK
KworICAgIHZvaWQgdXBkYXRlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAg
ICBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
CisKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CisgICAgV2ViQ29yZTo6
WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MDM2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtMCwwICsx
LDUwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgorCisjaWYg
UExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYktpdDJXYXlsYW5kU2VydmVyUHJvdG9j
b2wuaCIKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRl
eHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgorI2luY2x1
ZGUgPHdheWxhbmQtc2VydmVyLXByb3RvY29sLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisj
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQor
I2luY2x1ZGUgPFdlYkNvcmUvT3BlbkdMU2hpbXMuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiAhZGVmaW5lZChQRk5FR0xC
SU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTEJJTkRXQVlM
QU5ERElTUExBWVdMKSAoRUdMRGlzcGxheSwgc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyNlbmRpZgor
CisjaWYgIWRlZmluZWQoUEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdM
Qm9vbGVhbiAoKlBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpIChFR0xEaXNwbGF5LCBzdHJ1
Y3Qgd2xfZGlzcGxheSopOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xRVUVSWVdBWUxB
TkRCVUZGRVJXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFFVRVJZV0FZTEFOREJVRkZF
UldMKSAoRUdMRGlzcGxheSwgc3RydWN0IHdsX3Jlc291cmNlKiwgRUdMaW50IGF0dHJpYnV0ZSwg
RUdMaW50KiB2YWx1ZSk7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKFBGTkVHTENSRUFURUlNQUdF
S0hSUFJPQykKK3R5cGVkZWYgRUdMSW1hZ2VLSFIgKCpQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0Mp
IChFR0xEaXNwbGF5LCBFR0xDb250ZXh0LCBFR0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVmZmVy
LCBjb25zdCBFR0xpbnQqIGF0dHJpYkxpc3QpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5F
R0xERVNUUk9ZSU1BR0VLSFJQUk9DKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJP
WUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXksIEVHTEltYWdlS0hSKTsKKyNlbmRpZgorCisjaWYg
IWRlZmluZWQoUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MpCit0eXBlZGVmIHZv
aWQgKCpQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMZWdsSW1hZ2VPRVMpOworI2VuZGlmCisKK3N0YXRpYyBQRk5FR0xCSU5EV0FZTEFORERJU1BM
QVlXTCBlZ2xCaW5kV2F5bGFuZERpc3BsYXk7CitzdGF0aWMgUEZORUdMVU5CSU5EV0FZTEFORERJ
U1BMQVlXTCBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheTsKK3N0YXRpYyBQRk5FR0xRVUVSWVdBWUxB
TkRCVUZGRVJXTCBlZ2xRdWVyeVdheWxhbmRCdWZmZXI7CitzdGF0aWMgUEZORUdMQ1JFQVRFSU1B
R0VLSFJQUk9DIGVnbENyZWF0ZUltYWdlOworc3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBS
T0MgZWdsRGVzdHJveUltYWdlOworc3RhdGljIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRP
RVNQUk9DIGVnbEltYWdlVGFyZ2V0VGV4dHVyZTJEOworCisKKworV2F5bGFuZENvbXBvc2l0b3Im
IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxXYXlsYW5kQ29tcG9zaXRvcj4gd2F5bGFuZENvbXBvc2l0b3I7CisgICAgcmV0dXJuIHdh
eWxhbmRDb21wb3NpdG9yOworfQorCitXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBXYXlsYW5k
Q29tcG9zaXRvcjo6QnVmZmVyOjpnZXRPckNyZWF0ZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291
cmNlKQoreworICAgIGlmIChzdHJ1Y3Qgd2xfbGlzdGVuZXIqIGxpc3RlbmVyID0gd2xfcmVzb3Vy
Y2VfZ2V0X2Rlc3Ryb3lfbGlzdGVuZXIocmVzb3VyY2UsIGRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNr
KSkgeworICAgICAgICBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBidWZmZXI7CisgICAgICAg
IHJldHVybiB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZlciwgbV9kZXN0cm95TGlzdGVu
ZXIpOworICAgIH0KKworICAgIHJldHVybiBuZXcgV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcihy
ZXNvdXJjZSk7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OkJ1ZmZlcihzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIHJlc291cmNlKQorICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKKyAgICAs
IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKK3sKKyAgICB3bF9saXN0X2luaXQoJm1fZGVzdHJveUxp
c3RlbmVyLmxpbmspOworICAgIG1fZGVzdHJveUxpc3RlbmVyLm5vdGlmeSA9IGRlc3Ryb3lMaXN0
ZW5lckNhbGxiYWNrOworICAgIHdsX3Jlc291cmNlX2FkZF9kZXN0cm95X2xpc3RlbmVyKG1fcmVz
b3VyY2UsICZtX2Rlc3Ryb3lMaXN0ZW5lcik7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZm
ZXI6On5CdWZmZXIoKQoreworICAgIHdsX2xpc3RfcmVtb3ZlKCZtX2Rlc3Ryb3lMaXN0ZW5lci5s
aW5rKTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpkZXN0cm95TGlzdGVu
ZXJDYWxsYmFjayhzdHJ1Y3Qgd2xfbGlzdGVuZXIqIGxpc3RlbmVyLCB2b2lkKikKK3sKKyAgICBX
YXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBidWZmZXI7CisgICAgYnVmZmVyID0gd2xfY29udGFp
bmVyX29mKGxpc3RlbmVyLCBidWZmZXIsIG1fZGVzdHJveUxpc3RlbmVyKTsKKyAgICBkZWxldGUg
YnVmZmVyOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVzZSgpCit7Cisg
ICAgbV9idXN5Q291bnQrKzsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1
bnVzZSgpCit7CisgICAgbV9idXN5Q291bnQtLTsKKyAgICBpZiAoIW1fYnVzeUNvdW50KQorICAg
ICAgICB3bF9yZXNvdXJjZV9xdWV1ZV9ldmVudChtX3Jlc291cmNlLCBXTF9CVUZGRVJfUkVMRUFT
RSk7Cit9CisKK0VHTEltYWdlS0hSIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZUlt
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMSW1hZ2VLSFIqPihlZ2xD
cmVhdGVJbWFnZShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCks
IEVHTF9OT19DT05URVhULCBFR0xfV0FZTEFORF9CVUZGRVJfV0wsIG1fcmVzb3VyY2UsIG51bGxw
dHIpKTsKK30KKworSW50U2l6ZSBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpzaXplKCkgY29u
c3QKK3sKKyAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZWds
UXVlcnlXYXlsYW5kQnVmZmVyKGVnbERpc3BsYXksIG1fcmVzb3VyY2UsIEVHTF9XSURUSCwgJndp
ZHRoKTsKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIoZWdsRGlzcGxheSwgbV9yZXNvdXJjZSwg
RUdMX0hFSUdIVCwgJmhlaWdodCk7CisKKyAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07Cit9
CisKK1dheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpTdXJmYWNlKCkKKyAgICA6IG1faW1hZ2Uo
RUdMX05PX0lNQUdFX0tIUikKK3sKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cit9CisK
K1dheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjp+U3VyZmFjZSgpCit7CisgICAgLy8gRGVzdHJv
eSBwZW5kaW5nIGZyYW1lIGNhbGxiYWNrcy4KKyAgICBhdXRvIGxpc3QgPSBXVEZNb3ZlKG1fZnJh
bWVDYWxsYmFja0xpc3QpOworICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBsaXN0KQorICAgICAg
ICB3bF9yZXNvdXJjZV9kZXN0cm95KHJlc291cmNlKTsKKworICAgIGlmIChtX2J1ZmZlcikKKyAg
ICAgICAgbV9idWZmZXItPnVudXNlKCk7CisKKyAgICBpZiAobV9pbWFnZSAhPSBFR0xfTk9fSU1B
R0VfS0hSKQorICAgICAgICBlZ2xEZXN0cm95SW1hZ2UoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkuZWdsRGlzcGxheSgpLCBtX2ltYWdlKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1fdGV4dHVyZSk7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6Om1h
a2VQZW5kaW5nQnVmZmVyQ3VycmVudCgpCit7CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlciA9PSBt
X2J1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBt
X2J1ZmZlci0+dW51c2UoKTsKKworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIpCisgICAgICAgIG1f
cGVuZGluZ0J1ZmZlci0+dXNlKCk7CisKKyAgICBtX2J1ZmZlciA9IG1fcGVuZGluZ0J1ZmZlcjsK
K30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6YXR0YWNoQnVmZmVyKHN0cnVj
dCB3bF9yZXNvdXJjZSogYnVmZmVyKQoreworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIpCisgICAg
ICAgIG1fcGVuZGluZ0J1ZmZlciA9IG51bGxwdHI7CisKKyAgICBpZiAoYnVmZmVyKSB7CisgICAg
ICAgIGF1dG8qIGNvbXBvc2l0b3JCdWZmZXIgPSBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpn
ZXRPckNyZWF0ZShidWZmZXIpOworICAgICAgICBtX3BlbmRpbmdCdWZmZXIgPSBjb21wb3NpdG9y
QnVmZmVyLT5jcmVhdGVXZWFrUHRyKCk7CisgICAgfQorfQorCit2b2lkIFdheWxhbmRDb21wb3Np
dG9yOjpTdXJmYWNlOjpyZXF1ZXN0RnJhbWUoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkK
K3sKKyAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsIG51bGxwdHIs
IHRoaXMsIFtdKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpIHsKKyAgICAgICAgYXV0byog
c3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVz
b3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoc2l6ZV90IGl0ZW0g
PSBzdXJmYWNlLT5tX2ZyYW1lQ2FsbGJhY2tMaXN0LmZpbmQocmVzb3VyY2UpICE9IG5vdEZvdW5k
KQorICAgICAgICAgICAgc3VyZmFjZS0+bV9mcmFtZUNhbGxiYWNrTGlzdC5yZW1vdmUoaXRlbSk7
CisgICAgfSk7CisgICAgbV9mcmFtZUNhbGxiYWNrTGlzdC5hcHBlbmQocmVzb3VyY2UpOworfQor
Citib29sIFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVyZUZvclBhaW50
aW5nKHVuc2lnbmVkJiB0ZXh0dXJlLCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSkKK3sKKyAgICBpZiAo
bV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgZWdsSW1hZ2VU
YXJnZXRUZXh0dXJlMkQoR0xfVEVYVFVSRV8yRCwgbV9pbWFnZSk7CisKKyAgICB0ZXh0dXJlID0g
bV90ZXh0dXJlOworICAgIHRleHR1cmVTaXplID0gbV9idWZmZXItPnNpemUoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6Y29tbWl0KCkK
K3sKKyAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisgICAgaWYgKG1faW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tI
UikKKyAgICAgICAgZWdsRGVzdHJveUltYWdlKGVnbERpc3BsYXksIG1faW1hZ2UpOworICAgIG1f
aW1hZ2UgPSBtX3BlbmRpbmdCdWZmZXItPmNyZWF0ZUltYWdlKCk7CisgICAgaWYgKG1faW1hZ2Ug
PT0gRUdMX05PX0lNQUdFX0tIUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWFrZVBl
bmRpbmdCdWZmZXJDdXJyZW50KCk7CisgICAgaWYgKG1fd2ViUGFnZSkKKyAgICAgICAgbV93ZWJQ
YWdlLT5zZXRWaWV3TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV93ZWJQ
YWdlLT52aWV3U2l6ZSgpKSk7CisKKyAgICBhdXRvIGxpc3QgPSBXVEZNb3ZlKG1fZnJhbWVDYWxs
YmFja0xpc3QpOworICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBsaXN0KSB7CisgICAgICAgIHds
X2NhbGxiYWNrX3NlbmRfZG9uZShyZXNvdXJjZSwgMCk7CisgICAgICAgIHdsX3Jlc291cmNlX2Rl
c3Ryb3kocmVzb3VyY2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Y29uc3Qgc3RydWN0IHdsX3N1cmZhY2VfaW50ZXJmYWNlIHN1cmZhY2VJbnRlcmZhY2UgPSB7Cisg
ICAgLy8gZGVzdHJveUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3
bF9yZXNvdXJjZSogcmVzb3VyY2UpIHsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNv
dXJjZSk7CisgICAgfSwKKyAgICAvLyBhdHRhY2hDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9j
bGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgc3RydWN0IHdsX3Jl
c291cmNlKiBidWZmZXIsIGludDMyX3Qgc3gsIGludDMyX3Qgc3kpIHsKKyAgICAgICAgYXV0byog
c3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVz
b3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRUdMaW50IGZvcm1hdDsKKyAgICAgICAgaWYg
KCFlZ2xRdWVyeVdheWxhbmRCdWZmZXIoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
ZWdsRGlzcGxheSgpLCBidWZmZXIsIEVHTF9URVhUVVJFX0ZPUk1BVCwgJmZvcm1hdCkKKyAgICAg
ICAgICAgIHx8IChmb3JtYXQgIT0gRUdMX1RFWFRVUkVfUkdCICYmIGZvcm1hdCAhPSBFR0xfVEVY
VFVSRV9SR0JBKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzdXJmYWNlLT5hdHRh
Y2hCdWZmZXIoYnVmZmVyKTsKKyAgICB9LAorICAgIC8vIGRhbWFnZUNhbGxiYWNrCisgICAgW10o
c3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QsIGludDMyX3Qs
IGludDMyX3QsIGludDMyX3QpIHsKKyAgICB9LAorICAgIC8vIGZyYW1lQ2FsbGJhY2sKKyAgICBb
XShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2Us
IHVpbnQzMl90IGlkKSB7CisgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXls
YW5kQ29tcG9zaXRvcjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3Vy
Y2UpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChzdHJ1Y3Qgd2xfcmVzb3VyY2UqIGNhbGxiYWNrUmVzb3VyY2UgPSB3bF9yZXNvdXJj
ZV9jcmVhdGUoY2xpZW50LCAmd2xfY2FsbGJhY2tfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAg
ICAgICBzdXJmYWNlLT5yZXF1ZXN0RnJhbWUoY2FsbGJhY2tSZXNvdXJjZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHdsX2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgIH0s
CisgICAgLy8gc2V0T3BhcXVlUmVnaW9uQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50
Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKikgeworICAgIH0sCisg
ICAgLy8gc2V0SW5wdXRSZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBz
dHJ1Y3Qgd2xfcmVzb3VyY2UqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqKSB7CisgICAgfSwKKyAgICAv
LyBjb21taXRDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0
IHdsX3Jlc291cmNlKiByZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGlj
X2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9k
YXRhKHJlc291cmNlKSk7CisgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoc3VyZmFjZS0+Y29tbWl0KCkpCisgICAgICAgICAgICB3bF9kaXNw
bGF5X2ZsdXNoX2NsaWVudHMod2xfY2xpZW50X2dldF9kaXNwbGF5KGNsaWVudCkpOworICAgIH0s
CisgICAgLy8gc2V0QnVmZmVyVHJhbnNmb3JtQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xp
ZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgaW50MzJfdCkgeworICAgIH0sCisgICAgLy8gc2V0
QnVmZmVyU2NhbGVDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xf
cmVzb3VyY2UqLCBpbnQzMl90KSB7CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3
bF9jb21wb3NpdG9yX2ludGVyZmFjZSBjb21wb3NpdG9ySW50ZXJmYWNlID0geworICAgIC8vIGNy
ZWF0ZVN1cmZhY2VDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3Ry
dWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgaWYgKHN0
cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFjZVJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNs
aWVudCwgJndsX3N1cmZhY2VfaW50ZXJmYWNlLCAxLCBpZCkpIHsKKyAgICAgICAgICAgIHdsX3Jl
c291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihzdXJmYWNlUmVzb3VyY2UsICZzdXJmYWNlSW50ZXJm
YWNlLCBuZXcgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UoKSwKKyAgICAgICAgICAgICAgICBb
XShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSo+KHds
X3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHN1cmZhY2U7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgfSwKKyAgICAv
LyBjcmVhdGVSZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qg
d2xfcmVzb3VyY2UqLCB1aW50MzJfdCkKKyAgICB7CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0
IHN0cnVjdCB3bF93ZWJraXRndGtfaW50ZXJmYWNlIHdlYmtpdGd0a0ludGVyZmFjZSA9IHsKKyAg
ICAvLyBiaW5kU3VyZmFjZVRvUGFnZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCos
IHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFj
ZVJlc291cmNlLCB1aW50MzJfdCBwYWdlSUQpIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0
YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3Vz
ZXJfZGF0YShzdXJmYWNlUmVzb3VyY2UpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIGNvbXBvc2l0b3IgPSBzdGF0aWNfY2FzdDxX
YXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsK
KyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dlYlBhZ2Uoc3VyZmFjZSwgcGFnZUlE
KTsKKyAgICB9Cit9OworCitib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkK
K3sKKyAgICBlZ2xDcmVhdGVJbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMQ1JFQVRFSU1B
R0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRlSW1hZ2VLSFIiKSk7CisgICAg
ZWdsRGVzdHJveUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQ
Uk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hSIikpOworICAgIGlmICgh
ZWdsQ3JlYXRlSW1hZ2UgfHwgIWVnbERlc3Ryb3lJbWFnZSkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIldheWxhbmRDb21wb3NpdG9yIHJlcXVpcmVzIGVnbENyZWF0ZUltYWdlIGFuZCBlZ2xEZXN0
cm95SW1hZ2UuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlZ2xJbWFn
ZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRF
WFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVy
ZTJET0VTIikpOworICAgIGlmICghZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbFF1ZXJ5
V2F5bGFuZEJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMUVVFUllXQVlMQU5EQlVGRkVS
V0w+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeVdheWxhbmRCdWZmZXJXTCIpKTsKKyAgICBp
ZiAoIWVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxh
bmRDb21wb3NpdG9yIHJlcXVpcmVzIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlci4iKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbEJpbmRXYXlsYW5kRGlzcGxheSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZORUdMQklORFdBWUxBTkRESVNQTEFZV0w+KGVnbEdldFByb2NBZGRyZXNz
KCJlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCIpKTsKKyAgICBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxh
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTD4oZWdsR2V0
UHJvY0FkZHJlc3MoImVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wiKSk7CisgICAgaWYgKCFlZ2xC
aW5kV2F5bGFuZERpc3BsYXkgfHwgIWVnbFVuYmluZFdheWxhbmREaXNwbGF5KSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3IgcmVxdWlyZXMgZWdsQmluZFdheWxhbmRE
aXNwbGF5V0wgYW5kIGVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wuIik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBtX2VnbENvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9m
ZnNjcmVlbkNvbnRleHQoKTsKKyAgICBpZiAoIW1fZWdsQ29udGV4dCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFtX2VnbENvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordHlwZWRlZiBz
dHJ1Y3QgeworICAgIEdTb3VyY2Ugc291cmNlOworICAgIGdwb2ludGVyIGZkVGFnOworICAgIHN0
cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5OworfSBXYXlsYW5kTG9vcFNvdXJjZTsKKworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHdheWxhbmRMb29wU291cmNlQ29uZGl0aW9uID0gR19JT19JTiB8IEdf
SU9fSFVQIHwgR19JT19FUlI7CisKK3N0YXRpYyBHU291cmNlRnVuY3Mgd2F5bGFuZExvb3BTb3Vy
Y2VGdW5jdGlvbnMgPSB7CisgICAgLy8gcHJlcGFyZQorICAgIFtdKEdTb3VyY2UgKnNvdXJjZSwg
aW50ICp0aW1lb3V0KSAtPiBnYm9vbGVhbiB7CisgICAgICAgICp0aW1lb3V0ID0gLTE7CisgICAg
ICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3Vy
Y2UqPihzb3VyY2UpOworICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoX2NsaWVudHMod2xMb29wU291
cmNlLT5kaXNwbGF5KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0sCisgICAgbnVsbHB0
ciwgLy8gY2hlY2sKKyAgICAvLyBkaXNwYXRjaAorICAgIFtdKEdTb3VyY2UqIHNvdXJjZSwgR1Nv
dXJjZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAg
ICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3Vy
Y2UqPihzb3VyY2UpOworICAgICAgICB1bnNpZ25lZCBldmVudHMgPSBnX3NvdXJjZV9xdWVyeV91
bml4X2ZkKHNvdXJjZSwgd2xMb29wU291cmNlLT5mZFRhZykgJiB3YXlsYW5kTG9vcFNvdXJjZUNv
bmRpdGlvbjsKKyAgICAgICAgaWYgKGV2ZW50cyAmIEdfSU9fSFVQIHx8IGV2ZW50cyAmIEdfSU9f
RVJSKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmQgRGlzcGxheSBFdmVudCBT
b3VyY2U6IGxvc3QgY29ubmVjdGlvbiB0byBuZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIik7Cisg
ICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGV2ZW50cyAmIEdfSU9fSU4pCisgICAgICAgICAgICB3bF9ldmVudF9sb29wX2Rpc3BhdGNo
KHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3Aod2xMb29wU291cmNlLT5kaXNwbGF5KSwgMCk7Cisg
ICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8v
IGZpbmFsaXplCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjaworICAgIG51bGxwdHIs
IC8vIGNsb3N1cmVfbWFyc2hhbGwKK307CisKK3N0YXRpYyBHUmVmUHRyPEdTb3VyY2U+IGNyZWF0
ZVdheWxhbmRMb29wU291cmNlKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQoreworICAgIEdS
ZWZQdHI8R1NvdXJjZT4gc291cmNlID0gYWRvcHRHUmVmKGdfc291cmNlX25ldygmd2F5bGFuZExv
b3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihXYXlsYW5kTG9vcFNvdXJjZSkpKTsKKyAgICBnX3Nv
dXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGRp
c3BsYXkgZXZlbnQgc291cmNlIik7CisgICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KHNvdXJjZS5n
ZXQoKSwgR19QUklPUklUWV9ERUZBVUxUICsgMSk7CisKKyAgICBhdXRvKiB3bExvb3BTb3VyY2Ug
PSByZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291cmNlKj4oc291cmNlLmdldCgpKTsKKyAg
ICB3bExvb3BTb3VyY2UtPmRpc3BsYXkgPSBkaXNwbGF5OworICAgIHdsTG9vcFNvdXJjZS0+ZmRU
YWcgPSBnX3NvdXJjZV9hZGRfdW5peF9mZChzb3VyY2UuZ2V0KCksIHdsX2V2ZW50X2xvb3BfZ2V0
X2ZkKHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AoZGlzcGxheSkpLCBzdGF0aWNfY2FzdDxHSU9D
b25kaXRpb24+KHdheWxhbmRMb29wU291cmNlQ29uZGl0aW9uKSk7CisgICAgZ19zb3VyY2VfYXR0
YWNoKHNvdXJjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gc291cmNlOworfQorCitX
YXlsYW5kQ29tcG9zaXRvcjo6V2F5bGFuZENvbXBvc2l0b3IoKQoreworICAgIFdsVW5pcXVlUHRy
PHN0cnVjdCB3bF9kaXNwbGF5PiBkaXNwbGF5KHdsX2Rpc3BsYXlfY3JlYXRlKCkpOworICAgIGlm
ICghZGlzcGxheSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBv
c2l0b3IgY291bGQgbm90IGNyZWF0ZSBkaXNwbGF5IG9iamVjdCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gIndlYmtpdGd0ay13YXlsYW5kLWNv
bXBvc2l0b3ItIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBpZiAod2xfZGlz
cGxheV9hZGRfc29ja2V0KGRpc3BsYXkuZ2V0KCksIGRpc3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkp
ID09IC0xKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRv
ciBjb3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgc29ja2V0Iik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiBjb21wb3NpdG9yR2xvYmFs
KHdsX2dsb2JhbF9jcmVhdGUoZGlzcGxheS5nZXQoKSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNl
LCB3bF9jb21wb3NpdG9yX2ludGVyZmFjZS52ZXJzaW9uLCB0aGlzLAorICAgICAgICBbXShzdHJ1
Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHZvaWQqIGRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQz
Ml90IGlkKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9
IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgc3Rk
OjptaW4oc3RhdGljX2Nhc3Q8aW50Pih2ZXJzaW9uKSwgMyksIGlkKSkKKyAgICAgICAgICAgICAg
ICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsICZjb21wb3NpdG9ySW50
ZXJmYWNlLCBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KGRhdGEpLCBudWxscHRyKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19tZW1v
cnkoY2xpZW50KTsKKyAgICAgICAgfSkpOworICAgIGlmICghY29tcG9zaXRvckdsb2JhbCkgewor
ICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90
IHJlZ2lzdGVyIGNvbXBvc2l0b3IgZ2xvYmFsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiB3ZWJraXRndGtHbG9iYWwod2xfZ2xv
YmFsX2NyZWF0ZShkaXNwbGF5LmdldCgpLCAmd2xfd2Via2l0Z3RrX2ludGVyZmFjZSwgMSwgdGhp
cywKKyAgICAgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCB2b2lkKiBkYXRhLCB1aW50
MzJfdCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkgeworICAgICAgICAgICAgaWYgKHN0cnVjdCB3bF9y
ZXNvdXJjZSogcmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfd2Via2l0
Z3RrX2ludGVyZmFjZSwgMSwgaWQpKQorICAgICAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9p
bXBsZW1lbnRhdGlvbihyZXNvdXJjZSwgJndlYmtpdGd0a0ludGVyZmFjZSwgc3RhdGljX2Nhc3Q8
V2F5bGFuZENvbXBvc2l0b3IqPihkYXRhKSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgICAg
IH0pKTsKKyAgICBpZiAoIXdlYmtpdGd0a0dsb2JhbCkgeworICAgICAgICBXVEZMb2dBbHdheXMo
Ik5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IHJlZ2lzdGVyIHdlYmtpdGd0ayBn
bG9iYWwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW5pdGlhbGl6ZUVH
TCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBj
b3VsZCBub3QgaW5pdGlhbGl6ZSBFR0wiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghZWdsQmluZFdheWxhbmREaXNwbGF5KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpLmVnbERpc3BsYXkoKSwgZGlzcGxheS5nZXQoKSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBiaW5kIG5lc3RlZCBkaXNwbGF5
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Rpc3BsYXlOYW1lID0gV1RGTW92
ZShkaXNwbGF5TmFtZSk7CisgICAgbV9kaXNwbGF5ID0gV1RGTW92ZShkaXNwbGF5KTsKKyAgICBt
X2NvbXBvc2l0b3JHbG9iYWwgPSBXVEZNb3ZlKGNvbXBvc2l0b3JHbG9iYWwpOworICAgIG1fd2Vi
a2l0Z3RrR2xvYmFsID0gV1RGTW92ZSh3ZWJraXRndGtHbG9iYWwpOworICAgIG1fZXZlbnRTb3Vy
Y2UgPSBjcmVhdGVXYXlsYW5kTG9vcFNvdXJjZShtX2Rpc3BsYXkuZ2V0KCkpOworfQorCitib29s
IFdheWxhbmRDb21wb3NpdG9yOjpnZXRUZXh0dXJlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdW5z
aWduZWQmIHRleHR1cmUsIEludFNpemUmIHRleHR1cmVTaXplKQoreworICAgIGlmIChhdXRvKiBz
dXJmYWNlID0gbV9wYWdlTWFwLmdldCgmd2ViUGFnZSkpCisgICAgICAgIHJldHVybiBzdXJmYWNl
LT5wcmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKHRleHR1cmUsIHRleHR1cmVTaXplKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmJpbmRTdXJmYWNlVG9X
ZWJQYWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKiBzdXJmYWNlLCB1aW50NjRfdCBwYWdl
SUQpCit7CisgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1
dG8qIHBhZ2UgOiBtX3BhZ2VNYXAua2V5cygpKSB7CisgICAgICAgIGlmIChwYWdlLT5wYWdlSUQo
KSA9PSBwYWdlSUQpIHsKKyAgICAgICAgICAgIHdlYlBhZ2UgPSBwYWdlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdXJmYWNlLT5zZXRXZWJQYWdlKHdlYlBhZ2UpOworICAgIG1fcGFnZU1hcC5z
ZXQod2ViUGFnZSwgc3VyZmFjZSk7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnJlZ2lz
dGVyV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgbV9wYWdlTWFwLmFkZCgm
d2ViUGFnZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnVucmVnaXN0
ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sKKyAgICBpZiAoYXV0byogc3VyZmFj
ZSA9IG1fcGFnZU1hcC50YWtlKCZ3ZWJQYWdlKSkKKyAgICAgICAgc3VyZmFjZS0+c2V0V2ViUGFn
ZShudWxscHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
YXlsYW5kQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNzFjNTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRD
b21wb3NpdG9yLmgKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2xVbmlxdWVQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHZvaWQgKkVHTEltYWdlS0hSOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBHTENvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdheWxhbmRDb21wb3NpdG9yIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXYXlsYW5kQ29tcG9zaXRvcik7CisgICAgZnJpZW5kIGNsYXNzIE5l
dmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9yPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2F5
bGFuZENvbXBvc2l0b3ImIHNpbmdsZXRvbigpOworCisgICAgY2xhc3MgQnVmZmVyIHsKKyAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnVmZmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgQnVmZmVyKiBnZXRPckNyZWF0ZShzdHJ1Y3Qg
d2xfcmVzb3VyY2UqKTsKKyAgICAgICAgfkJ1ZmZlcigpOworCisgICAgICAgIHZvaWQgdXNlKCk7
CisgICAgICAgIHZvaWQgdW51c2UoKTsKKworICAgICAgICBFR0xJbWFnZUtIUiBjcmVhdGVJbWFn
ZSgpIGNvbnN0OworICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKworICAg
ICAgICBXZWFrUHRyPEJ1ZmZlcj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBCdWZmZXIo
c3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lMaXN0ZW5l
ckNhbGxiYWNrKHN0cnVjdCB3bF9saXN0ZW5lciosIHZvaWQqKTsKKworICAgICAgICBzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIG1fcmVzb3VyY2UgeyBudWxscHRyIH07CisgICAgICAgIHN0cnVjdCB3bF9s
aXN0ZW5lciBtX2Rlc3Ryb3lMaXN0ZW5lcjsKKyAgICAgICAgdWludDMyX3QgbV9idXN5Q291bnQg
eyAwIH07CisgICAgICAgIFdlYWtQdHJGYWN0b3J5PEJ1ZmZlcj4gbV93ZWFrUHRyRmFjdG9yeTsK
KyAgICB9OworCisgICAgY2xhc3MgU3VyZmFjZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFN1cmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFN1cmZhY2UoKTsKKyAgICAgICAgflN1cmZhY2UoKTsKKworICAgICAgICB2b2lkIGF0dGFj
aEJ1ZmZlcihzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWUo
c3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIGJvb2wgY29tbWl0KCk7CisKKyAgICAgICAg
dm9pZCBzZXRXZWJQYWdlKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkgeyBtX3dlYlBhZ2UgPSB3ZWJQ
YWdlOyB9CisgICAgICAgIGJvb2wgcHJlcGFyZVRleHR1cmVGb3JQYWludGluZyh1bnNpZ25lZCYs
IFdlYkNvcmU6OkludFNpemUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgbWFrZVBl
bmRpbmdCdWZmZXJDdXJyZW50KCk7CisKKyAgICAgICAgV2Vha1B0cjxCdWZmZXI+IG1fYnVmZmVy
OworICAgICAgICBXZWFrUHRyPEJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOworICAgICAgICB1bnNp
Z25lZCBtX3RleHR1cmU7CisgICAgICAgIEVHTEltYWdlS0hSIG1faW1hZ2U7CisgICAgICAgIFZl
Y3Rvcjx3bF9yZXNvdXJjZSo+IG1fZnJhbWVDYWxsYmFja0xpc3Q7CisgICAgICAgIFdlYlBhZ2VQ
cm94eSogbV93ZWJQYWdlIHsgbnVsbHB0ciB9OworICAgIH07CisKKyAgICBib29sIGlzUnVubmlu
ZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CisgICAgU3RyaW5nIGRpc3BsYXlOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQorCisgICAgdm9pZCBiaW5kU3VyZmFj
ZVRvV2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBh
Z2VQcm94eSYpOworCisgICAgYm9vbCBnZXRUZXh0dXJlKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVk
JiwgV2ViQ29yZTo6SW50U2l6ZSYpOworCitwcml2YXRlOgorICAgIFdheWxhbmRDb21wb3NpdG9y
KCk7CisKKyAgICBib29sIGluaXRpYWxpemVFR0woKTsKKworICAgIFN0cmluZyBtX2Rpc3BsYXlO
YW1lOworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9kaXNwbGF5PiBtX2Rpc3Bs
YXk7CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX2dsb2JhbD4gbV9jb21wb3Np
dG9yR2xvYmFsOworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IG1f
d2Via2l0Z3RrR2xvYmFsOworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9ldmVudFNvdXJjZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2VnbENvbnRleHQ7CisgICAg
SGFzaE1hcDxXZWJQYWdlUHJveHkqLCBTdXJmYWNlKj4gbV9wYWdlTWFwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcAppbmRleCBh
ZTE0ZTllLi4zZjA1ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlByZWZlcmVuY2VzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlByZWZlcmVuY2VzR3RrLmNwcApAQCAtMjcsMzEgKzI3LDUyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgIldheWxhbmRD
b21wb3NpdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgor
I2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQogewotI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Oldh
eWxhbmQpIHsKLSAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVy
IFdheWxhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKLSAgICAgICAgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwotICAgIH0KLSNlbmRpZgotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVl
KTsKLSNlbmRpZgogI2lmICFFTkFCTEUoT1BFTkdMKQogICAgIHNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKGZhbHNlKTsKICNlbHNlCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
X1RIUkVBREVEKQorICAgIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworI2Vsc2UKICAg
ICBpZiAoZ2V0ZW52KCJXRUJLSVRfRk9SQ0VfQ09NUE9TSVRJTkdfTU9ERSIpKQogICAgICAgICBz
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKLSAgICBpZiAoZ2V0ZW52KCJXRUJLSVRfRElT
QUJMRV9DT01QT1NJVElOR19NT0RFIikpCisjZW5kaWYKKworICAgIGlmIChnZXRlbnYoIldFQktJ
VF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUiKSkgewogICAgICAgICBzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBV
U0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7
CisgICAgICAgIGF1dG8mIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKKyAgICAgICAgT3B0aW9uYWw8aW50PiBk
YW1hZ2VCYXNlOworICAgICAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRlKCkgfHwg
IWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdlKGRhbWFnZUJhc2UpKQorICAgICAgICAgICAgc2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIH0KICNlbmRpZgorCisjaWYg
UExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAgICAgICBp
ZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmcoKSkKKyAgICAgICAg
ICAgIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICB9CisjZW5k
aWYKKworI2VuZGlmIC8vIEVOQUJMRShPUEVOR0wpCiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5v
dGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzM2ZjYy4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWERhbWFnZU5vdGlmaWVyLmgiCi0KLSNpZiBQTEFU
Rk9STShYMTEpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgotI2lu
Y2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgot
I2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7
Ci0KLVhEYW1hZ2VOb3RpZmllciYgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+IG5vdGlmaWVyOwotICAgIHJl
dHVybiBub3RpZmllcjsKLX0KLQotWERhbWFnZU5vdGlmaWVyOjpYRGFtYWdlTm90aWZpZXIoKQot
ewotICAgIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkpLnN1cHBvcnRzWERhbWFnZShzX2RhbWFnZUV2ZW50QmFzZSk7Ci19Ci0KLXZv
aWQgWERhbWFnZU5vdGlmaWVyOjphZGQoRGFtYWdlIGRhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+JiYgbm90aWZ5RnVuY3Rpb24pCi17Ci0gICAgaWYgKCFzX2RhbWFnZUV2ZW50QmFzZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlzRW1wdHkoKSkKLSAg
ICAgICAgZ2RrX3dpbmRvd19hZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R2Rr
RmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOwotICAgIG1fbm90aWZ5RnVu
Y3Rpb25zLmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsKLX0KLQotdm9pZCBY
RGFtYWdlTm90aWZpZXI6OnJlbW92ZShEYW1hZ2UgZGFtYWdlKQotewotICAgIGlmICghc19kYW1h
Z2VFdmVudEJhc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbm90aWZ5RnVuY3Rpb25zLnJl
bW92ZShkYW1hZ2UpOwotICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIGdka193aW5kb3dfcmVtb3ZlX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9jYXN0PEdk
a0ZpbHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLX0KLQotR2RrRmlsdGVy
UmV0dXJuIFhEYW1hZ2VOb3RpZmllcjo6ZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCogZXZl
bnQsIEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKLXsKLSAgICBBU1NFUlQo
c19kYW1hZ2VFdmVudEJhc2UpOwotICAgIGF1dG8qIHhFdmVudCA9IHN0YXRpY19jYXN0PFhFdmVu
dCo+KGV2ZW50KTsKLSAgICBpZiAoeEV2ZW50LT50eXBlICE9IHNfZGFtYWdlRXZlbnRCYXNlLnZh
bHVlKCkgKyBYRGFtYWdlTm90aWZ5KQotICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5V
RTsKLQotICAgIGF1dG8qIGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxYRGFtYWdlTm90
aWZ5RXZlbnQqPih4RXZlbnQpOwotICAgIGlmIChub3RpZmllci0+bm90aWZ5KGRhbWFnZUV2ZW50
LT5kYW1hZ2UpKSB7Ci0gICAgICAgIFhEYW1hZ2VTdWJ0cmFjdCh4RXZlbnQtPnhhbnkuZGlzcGxh
eSwgZGFtYWdlRXZlbnQtPmRhbWFnZSwgTm9uZSwgTm9uZSk7Ci0gICAgICAgIHJldHVybiBHREtf
RklMVEVSX1JFTU9WRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsK
LX0KLQotYm9vbCBYRGFtYWdlTm90aWZpZXI6Om5vdGlmeShEYW1hZ2UgZGFtYWdlKSBjb25zdAot
ewotICAgIGlmIChjb25zdCBhdXRvJiBub3RpZnlGdW5jdGlvbiA9IG1fbm90aWZ5RnVuY3Rpb25z
LmdldChkYW1hZ2UpKSB7Ci0gICAgICAgIG5vdGlmeUZ1bmN0aW9uKCk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5MzM0Y2MyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERh
bWFnZU5vdGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgUExBVEZPUk0oWDExKQotCi0jaW5j
bHVkZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBYRGFtYWdlTm90aWZpZXIgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFhEYW1hZ2VOb3RpZmllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+OwotcHVi
bGljOgotICAgIHN0YXRpYyBYRGFtYWdlTm90aWZpZXImIHNpbmdsZXRvbigpOwotCi0gICAgdm9p
ZCBhZGQoRGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmUo
RGFtYWdlKTsKLQotcHJpdmF0ZToKLSAgICBYRGFtYWdlTm90aWZpZXIoKTsKLQotICAgIHN0YXRp
YyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCosIEdka0V2ZW50
KiwgWERhbWFnZU5vdGlmaWVyKik7Ci0gICAgYm9vbCBub3RpZnkoRGFtYWdlKSBjb25zdDsKLQot
ICAgIEhhc2hNYXA8RGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fbm90aWZ5RnVuY3Rp
b25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShY
MTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZGJkMDI4MC4uMzczNWEzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTMwLDE0ICszMCwxMiBAQAogI2luY2x1ZGUg
IlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgiCiAKICNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKLSNl
bmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01NCwyNiArNTIsMTggQEAgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpCiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFn
ZSkKICAgICA6IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQogICAgICwgbV9jb21w
b3NpdG9yQ2xpZW50KCp0aGlzKQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotICAgICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpj
cmVhdGUod2ViUGFnZSkpCi0gICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRDb21wb3NpdG9yOjpj
cmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCwgbV9yZWRpcmVjdGVkV2luZG93ID8gbV9yZWRpcmVj
dGVkV2luZG93LT53aW5kb3coKSA6IDApKQotI2Vsc2UKLSAgICAsIG1fY29tcG9zaXRvcihUaHJl
YWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50KSkKLSNlbmRpZgorICAg
ICwgbV9zdXJmYWNlKEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKHdlYlBhZ2UpKQorICAgICwg
bV9jb21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2NvbXBvc2l0b3JDbGll
bnQsIG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+d2luZG93KCkgOiAwKSkKIHsKLSNpZiBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KQot
ICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93
LT5waXhtYXAoKTsKLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIG1fbGF5ZXJU
cmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogfQogCiB2b2lk
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCkKIHsKICAgICBt
X2NvbXBvc2l0b3ItPmludmFsaWRhdGUoKTsKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmludmFsaWRhdGUoKTsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAg
ICBtX3JlZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOwotI2VuZGlmCisgICAgbV9zdXJmYWNlID0g
bnVsbHB0cjsKIH0KIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9y
Y2VSZXBhaW50KCkKQEAgLTk1LDEyICs4NSw4IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAK
IHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
Ci0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBtX3JlZGlyZWN0ZWRXaW5k
b3ctPnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgpKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0
LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQotI2VuZGlm
CisgICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgp
KSkKKyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3Vy
ZmFjZUlEKCk7CiAKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fY29tcG9zaXRvci0+c2V0RGV2aWNlU2NhbGVGYWN0
b3IobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwpAQCAtMTE0LDEyICsxMDAsOSBAQCB2
b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5z
cGFyZW5jeUNoYW5nZWQoKQogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0jaWYgVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAg
ICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShzaXplKTsKLSAgICAgICAgbV9sYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAg
fQotI2VuZGlmCisgICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShzaXplKSkK
KyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFj
ZUlEKCk7CisKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2Uoc2l6
ZSk7CiAgICAgbV9jb21wb3NpdG9yLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoc2l6ZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBhNDFhMTE2Li44OTBlN2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93OworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlOwogY2xhc3MgV2ViUGFnZTsKIAogY2xh
c3MgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QgZmluYWwgOiBwdWJsaWMgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0IHsKQEAgLTEwNSw5ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmKSBvdmVycmlkZTsKIAogICAgIENvbXBvc2l0b3JDbGllbnQgbV9jb21wb3NpdG9yQ2xpZW50
OwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2luZG93OwotI2Vu
ZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwog
ICAgIFJlZlB0cjxUaHJlYWRlZENvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKICAgICBmbG9hdCBt
X2xhc3RTY2FsZUZhY3RvciB7IDEgfTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3ByZXZTY3Jv
bGxQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43MWZkNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCkBAIC0wLDAgKzEs
NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bURpc3BsYXkuaD4KKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiQWNjZWxlcmF0
ZWRTdXJmYWNlV2F5bGFuZC5oIgorI2VuZGlmCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VYMTEuaCIKKyNlbmRpZgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0ZDo6
dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRl
KFdlYlBhZ2UmIHdlYlBhZ2UpCit7CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6
OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkg
PT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRl
ZFN1cmZhY2VYMTE6OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRy
OworfQorCitBY2NlbGVyYXRlZFN1cmZhY2U6OkFjY2VsZXJhdGVkU3VyZmFjZShXZWJQYWdlJiB3
ZWJQYWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3NpemUod2ViUGFnZS5z
aXplKCkpCit7CisgICAgbV9zaXplLnNjYWxlKG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlOjp+QWNjZWxlcmF0ZWRTdXJmYWNlKCkKK3sKK30K
KworYm9vbCBBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQor
eworICAgIEludFNpemUgc2NhbGVkU2l6ZShzaXplKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKG1f
d2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBpZiAoc2NhbGVkU2l6ZSA9PSBtX3Np
emUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc2l6ZSA9IHNjYWxlZFNpemU7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJm
YWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI4MmMyNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxl
cmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZTsKKworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShBY2NlbGVyYXRlZFN1cmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gY3JlYXRlKFdl
YlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZFN1cmZhY2UoKTsKKworICAgIHZpcnR1
YWwgdWludDY0X3Qgd2luZG93KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAwOyB9OworICAgIHZpcnR1YWwgYm9vbCByZXNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOworCitwcm90ZWN0ZWQ6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNl
KFdlYlBhZ2UmKTsKKworICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKKyAgICBXZWJDb3JlOjpJbnRT
aXplIG1fc2l6ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0
ZWRTdXJmYWNlV2F5bGFuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YjZmMGI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAKQEAgLTAsMCArMSwxMTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaCIKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisK
KyNpbmNsdWRlICJXZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oPgor
I2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgZmluYWwgOiBw
dWJsaWMgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5ID0gd2xfZGlzcGxheV9jb25uZWN0KFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgaWYgKCFkaXNwbGF5KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMo
IlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25uZWN0
IHRvIHRoZSBXYXlsYW5kIGRpc3BsYXk6ICVzIiwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4obmV3IFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eShkaXNwbGF5KSk7CisgICAgfQorCisgICAgdm9pZCBiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qg
d2xfc3VyZmFjZSogc3VyZmFjZSwgV2ViUGFnZSYgcGFnZSkKKyAgICB7CisgICAgICAgIGlmICgh
bV93ZWJraXRndGspCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgd2xfd2Via2l0Z3Rr
X2JpbmRfc3VyZmFjZV90b19wYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0
ayo+KG1fd2Via2l0Z3RrLmdldCgpKSwgc3VyZmFjZSwgcGFnZS5wYWdlSUQoKSk7CisgICAgICAg
IHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1fZGlzcGxheSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKKyAg
ICB7CisgICAgICAgIGluaXRpYWxpemUoZGlzcGxheSk7CisgICAgICAgIFBsYXRmb3JtRGlzcGxh
eTo6c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCp0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlZ2lzdHJ5R2xvYmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJlZ2lzdHJ5
R2xvYmFsKGludGVyZmFjZSwgbmFtZSk7CisgICAgICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJm
YWNlLCAid2xfd2Via2l0Z3RrIikpCisgICAgICAgICAgICBtX3dlYmtpdGd0ay5yZXNldChzdGF0
aWNfY2FzdDxzdHJ1Y3Qgd2xfcHJveHkqPih3bF9yZWdpc3RyeV9iaW5kKG1fcmVnaXN0cnkuZ2V0
KCksIG5hbWUsICZ3bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxKSkpOworICAgIH0KKworICAgIFds
VW5pcXVlUHRyPHN0cnVjdCB3bF9wcm94eT4gbV93ZWJraXRndGs7Cit9OworCitzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4mIHdheWxhbmRDb21wb3NpdG9y
RGlzcGxheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+PiB3YXlsYW5kRGlzcGxheShXYXlsYW5kQ29tcG9zaXRv
ckRpc3BsYXk6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gd2F5bGFuZERpc3BsYXk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kPiBBY2NlbGVyYXRlZFN1cmZh
Y2VXYXlsYW5kOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKK3sKKyAgICByZXR1cm4gd2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5KCkgPyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
V2F5bGFuZD4obmV3IEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQod2ViUGFnZSkpIDogbnVsbHB0
cjsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZChXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2Up
CisgICAgLCBtX3N1cmZhY2Uod2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCktPmNyZWF0ZVN1cmZh
Y2UoKSkKKyAgICAsIG1fd2luZG93KHdsX2VnbF93aW5kb3dfY3JlYXRlKG1fc3VyZmFjZS5nZXQo
KSwgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0
KCkpKSkKK3sKKyAgICB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKS0+YmluZFN1cmZhY2VUb1Bh
Z2UobV9zdXJmYWNlLmdldCgpLCBtX3dlYlBhZ2UpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VX
YXlsYW5kOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpCit7CisgICAgd2xfZWdsX3dpbmRv
d19kZXN0cm95KG1fd2luZG93KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5k
OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoIUFjY2VsZXJhdGVkU3Vy
ZmFjZTo6cmVzaXplKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB3bF9lZ2xf
d2luZG93X3Jlc2l6ZShtX3dpbmRvdywgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwg
MCwgMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5k
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjNTgxZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0
ZWRTdXJmYWNlV2F5bGFuZC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAi
QWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvV2xVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC1jb3JlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kIGZpbmFs
IDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFu
ZD4gY3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpOwor
CisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdD4obV93aW5kb3cpOyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpOyB9CisgICAgYm9vbCBy
ZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoV2ViUGFnZSYpOworCisgICAgV2ViQ29yZTo6V2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBzdHJ1Y3Qgd2xfZWds
X3dpbmRvdyogbV93aW5kb3cgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgx
MS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU1NTdkOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxl
cmF0ZWRTdXJmYWNlWDExLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1
cmZhY2VYMTEuaCIKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDEx
Lmg+CisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29t
cG9zaXRlLmg+CisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VYMTE+IEFjY2VsZXJhdGVkU3VyZmFjZVgx
MTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCit7CisgICAgaWYgKCFkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5zdXBwb3J0c1hD
b21wb3NpdGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VYMTE+KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VYMTEo
d2ViUGFnZSkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OkFjY2VsZXJhdGVkU3VyZmFj
ZVgxMShXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2Up
CisgICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkpCit7CisgICAgU2NyZWVuKiBzY3JlZW4g
PSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7CisKKyAgICBBU1NFUlQoZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCkgPT0gbV9kaXNwbGF5KTsKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19zY3Jl
ZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAgaWYgKCF2
aXN1YWwpCisgICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2Rr
X3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKworICAgIFhVbmlxdWVDb2xvcm1hcCBjb2xvcm1hcChY
Q3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RL
X1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9jTm9uZSkpOworCisgICAgWFNldFdpbmRvd0F0
dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRl
X3JlZGlyZWN0ID0gVHJ1ZTsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3Jt
YXAuZ2V0KCk7CisKKyAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVuIHRo
ZSBkZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCisgICAgLy8gU2VlIGh0dHA6
Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/aWQ9
eG9yZy1zZXJ2ZXItMS4xNi4wI243MDMuCisgICAgd2luZG93QXR0cmlidXRlcy5ib3JkZXJfcGl4
ZWwgPSAwOworCisgICAgbV9wYXJlbnRXaW5kb3cgPSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwK
KyAgICAgICAgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksCisgICAgICAgIC0xLCAtMSwgMSwg
MSwKKyAgICAgICAgMCwKKyAgICAgICAgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwKKyAg
ICAgICAgSW5wdXRPdXRwdXQsCisgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAor
ICAgICAgICBDV092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwK
KyAgICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBt
X3BhcmVudFdpbmRvdy5nZXQoKSk7CisKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmV2ZW50X21hc2sg
PSBTdHJ1Y3R1cmVOb3RpZnlNYXNrOworICAgIHdpbmRvd0F0dHJpYnV0ZXMub3ZlcnJpZGVfcmVk
aXJlY3QgPSBGYWxzZTsKKworICAgIC8vIENyZWF0ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgx
IHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KKyAgICBtX3dp
bmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LAorICAgICAgICBtX3BhcmVudFdpbmRvdy5n
ZXQoKSwKKyAgICAgICAgMCwgMCwKKyAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkp
LAorICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpLAorICAgICAgICAwLAorICAg
ICAgICBDb3B5RnJvbVBhcmVudCwKKyAgICAgICAgSW5wdXRPdXRwdXQsCisgICAgICAgIENvcHlG
cm9tUGFyZW50LAorICAgICAgICBDV0V2ZW50TWFzaywKKyAgICAgICAgJndpbmRvd0F0dHJpYnV0
ZXMpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7CisKKyAgICB3
aGlsZSAoMSkgeworICAgICAgICBYRXZlbnQgZXZlbnQ7CisgICAgICAgIFhXaW5kb3dFdmVudCht
X2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmZXZlbnQpOwor
ICAgICAgICBpZiAoZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQueG1hcC53aW5kb3cg
PT0gbV93aW5kb3cuZ2V0KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgWFNlbGVj
dElucHV0KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNrKTsKKyAgICBYQ29t
cG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgQ29tcG9zaXRl
UmVkaXJlY3RNYW51YWwpOworICAgIG1fcGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXht
YXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVgx
MTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSgpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheSk7Cisg
ICAgQVNTRVJUKG1fd2luZG93KTsKKyAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOworCisgICAg
Ly8gRXhwbGljaXRseSByZXNldCB0aGVzZSBiZWNhdXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhh
cHBlbnMgaW4gdGhpcyBvcmRlci4KKyAgICBtX3dpbmRvdy5yZXNldCgpOworICAgIG1fcGFyZW50
V2luZG93LnJlc2V0KCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpyZXNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoIUFjY2VsZXJhdGVkU3VyZmFjZTo6cmVz
aXplKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBSZXNpemUgdGhlIHdp
bmRvdyB0byBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5
IHdpbmRvd3MuCisgICAgWFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBz
dGQ6Om1heCgxLCBtX3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSkp
OworICAgIFhGbHVzaChtX2Rpc3BsYXkpOworCisgICAgLy8gUmVsZWFzZSB0aGUgcHJldmlvdXMg
cGl4bWFwIGxhdGVyIHRvIGdpdmUgc29tZSB0aW1lIHRvIHRoZSBVSSBwcm9jZXNzIHRvIHVwZGF0
ZS4KKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6c2Vjb25k
cyg1KSwgW3BpeG1hcCA9IFdURk1vdmUobV9waXhtYXApXSB7IH0pOworICAgIG1fcGl4bWFwID0g
WENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDEx
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3MmQ1MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0
ZWRTdXJmYWNlWDExLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1hVbmlxdWVSZXNvdXJjZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsK
K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2lu
ZG93OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQWNj
ZWxlcmF0ZWRTdXJmYWNlWDExIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlWDExKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2VYMTE+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgfkFjY2VsZXJhdGVkU3Vy
ZmFjZVgxMSgpOworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV93aW5kb3cuZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BpeG1hcC5nZXQoKTsgfQorICAgIGJvb2wgcmVzaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1
cmZhY2VYMTEoV2ViUGFnZSYpOworCisgICAgRGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9
OworICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CisgICAgV2ViQ29yZTo6WFVu
aXF1ZVdpbmRvdyBtX3BhcmVudFdpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1f
cGl4bWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDlhMDky
ZWQuLjJmY2VjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNl
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckdMLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNDYsMjAgKzQ3LDggQEAKICNpbmNsdWRl
IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQog
I2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotI2Rl
ZmluZSBSZWdpb24gWFJlZ2lvbgotI2RlZmluZSBGb250IFhGb250Ci0jZGVmaW5lIEN1cnNvciBY
Q3Vyc29yCi0jZGVmaW5lIFNjcmVlbiBYU2NyZWVuCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNl
bmRpZgotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0jaW5jbHVkZSAi
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTM3LDkgKzEyNiw3
IEBAIFJlZjxMYXllclRyZWVIb3N0R3RrPiBMYXllclRyZWVIb3N0R3RrOjpjcmVhdGUoV2ViUGFn
ZSYgd2ViUGFnZSkKIAogTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdl
JiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQotI2lmIFVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUod2ViUGFnZSkpCi0jZW5kaWYKKyAgICAsIG1fc3Vy
ZmFjZShBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZSh3ZWJQYWdlKSkKICAgICAsIG1fcmVuZGVy
RnJhbWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSwg
dGhpcykpCiB7CiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhp
Y3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwpAQCAtMTY3LDI5ICsxNTQsMjIgQEAgTGF5ZXJUcmVl
SG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlJiB3ZWJQYWdlKQogICAgIG1fcm9vdExh
eWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSNpZiBVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93
KSB7CisgICAgaWYgKG1fc3VyZmFjZSkgewogICAgICAgICBjcmVhdGVUZXh0dXJlTWFwcGVyKCk7
Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5k
b3ctPnBpeG1hcCgpOworICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9z
dXJmYWNlLT5zdXJmYWNlSUQoKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogYm9vbCBMYXllclRyZWVI
b3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKQotICAgIHVpbnQ2NF90IG5hdGl2ZUhhbmRsZSA9IG1fcmVkaXJlY3RlZFdp
bmRvdyA/IG1fcmVkaXJlY3RlZFdpbmRvdy0+d2luZG93KCkgOiBtX2xheWVyVHJlZUNvbnRleHQu
Y29udGV4dElEOwotI2Vsc2UKLSAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBtX2xheWVyVHJl
ZUNvbnRleHQuY29udGV4dElEOwotI2VuZGlmCi0KKyAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUg
PSBtX3N1cmZhY2UgPyBtX3N1cmZhY2UtPndpbmRvdygpIDogbV9sYXllclRyZWVDb250ZXh0LmNv
bnRleHRJRDsKICAgICBpZiAoIW5hdGl2ZUhhbmRsZSkgewogICAgICAgICBtX2NvbnRleHQgPSBu
dWxscHRyOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnRl
eHQpIHsKLSAgICAgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5kb3dUeXBlPihuYXRpdmVIYW5kbGUpLCBH
TENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRl
eHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRv
d1R5cGU+KG5hdGl2ZUhhbmRsZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JD
b21wb3NpdGluZygpKTsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMjI5LDkgKzIwOSw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0
azo6aW52YWxpZGF0ZSgpCiAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICBMYXllclRyZWVI
b3N0OjppbnZhbGlkYXRlKCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKLSAgICBtX3JlZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOwotI2VuZGlmCisgICAgbV9zdXJm
YWNlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROb25Db21wb3Np
dGVkQ29udGVudHNOZWVkRGlzcGxheSgpCkBAIC0yNzEsMjQgKzI0OSwxNiBAQCB2b2lkIExheWVy
VHJlZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxv
YXRSZWN0KDAsIG9sZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWln
aHQoKSAtIG9sZFNpemUuaGVpZ2h0KCkpKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBtX3JlZGlyZWN0
ZWRXaW5kb3ctPnJlc2l6ZShuZXdTaXplKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNv
bnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQotI2VuZGlmCisg
ICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShuZXdTaXplKSkKKyAgICAgICAg
bV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7CiAK
ICAgICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXplKTsKIH0KIAogdm9pZCBMYXll
clRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotI2lmIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5k
b3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobV93ZWJQYWdlLnNpemUo
KSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRX
aW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9z
dXJmYWNlLT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29u
dGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgLy8gT3RoZXIg
bGF5ZXJzIGxlYXJuIG9mIHRoZSBzY2FsZSBmYWN0b3IgY2hhbmdlIHZpYSBXZWJQYWdlOjpzZXRE
ZXZpY2VTY2FsZUZhY3Rvci4KICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmRldmlj
ZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCBkNjlkZTk3
Li40NDc0NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c7CitjbGFzcyBB
Y2NlbGVyYXRlZFN1cmZhY2U7CiAKIGNsYXNzIExheWVyVHJlZUhvc3RHdGsgZmluYWwgOiBwdWJs
aWMgTGF5ZXJUcmVlSG9zdCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6
CkBAIC0xMDksOSArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpHTENvbnRleHQ+IG1fY29udGV4dDsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3NjYWxlTWF0cml4OwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9y
ZWRpcmVjdGVkV2luZG93OwotI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVk
U3VyZmFjZT4gbV9zdXJmYWNlOwogICAgIFJlbmRlckZyYW1lU2NoZWR1bGVyIG1fcmVuZGVyRnJh
bWVTY2hlZHVsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjMyYWUyLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuaCIKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQotCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5WDExLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5z
aW9ucy9YY29tcG9zaXRlLmg+Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQotewotICAgIGlm
ICghZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKSkuc3VwcG9ydHNYQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+KG5l
dyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyh3ZWJQYWdlKSk7Ci19Ci0KLVJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJiB3ZWJQ
YWdlKQotICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCi0gICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCkpCi0gICAgLCBtX3NpemUod2ViUGFnZS5zaXplKCkpCi17Ci0gICAgbV9zaXplLnNjYWxl
KG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLQotICAgIFNjcmVlbiogc2NyZWVuID0g
RGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOwotCi0gICAgQVNTRVJUKGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpID09IG1fZGlzcGxheSk7Ci0gICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVu
X2dldF9yZ2JhX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIGlmICghdmlz
dWFsKQotICAgICAgICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19z
Y3JlZW5fZ2V0X2RlZmF1bHQoKSk7Ci0KLSAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENy
ZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19W
SVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpKTsKLQotICAgIFhTZXRXaW5kb3dBdHRy
aWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9y
ZWRpcmVjdCA9IFRydWU7Ci0gICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFw
LmdldCgpOwotCi0gICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUg
ZGVwdGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgotICAgIC8vIFNlZSBodHRwOi8v
Y2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhv
cmctc2VydmVyLTEuMTYuMCNuNzAzLgotICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVs
ID0gMDsKLQotICAgIG1fcGFyZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0g
ICAgICAgIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLAotICAgICAgICAtMSwgLTEsIDEsIDEs
Ci0gICAgICAgIDAsCi0gICAgICAgIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksCi0gICAg
ICAgIElucHV0T3V0cHV0LAotICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKLSAg
ICAgICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCi0g
ICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9w
YXJlbnRXaW5kb3cuZ2V0KCkpOwotCi0gICAgd2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0g
U3RydWN0dXJlTm90aWZ5TWFzazsKLSAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGly
ZWN0ID0gRmFsc2U7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBz
aW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAgbV93aW5k
b3cgPSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwKLSAgICAgICAgbV9wYXJlbnRXaW5kb3cuZ2V0
KCksCi0gICAgICAgIDAsIDAsCi0gICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwK
LSAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKLSAgICAgICAgMCwKLSAgICAg
ICAgQ29weUZyb21QYXJlbnQsCi0gICAgICAgIElucHV0T3V0cHV0LAotICAgICAgICBDb3B5RnJv
bVBhcmVudCwKLSAgICAgICAgQ1dFdmVudE1hc2ssCi0gICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVz
KTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwotCi0gICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgWEV2ZW50IGV2ZW50OwotICAgICAgICBYV2luZG93RXZlbnQobV9k
aXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKLSAg
ICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09
IG1fd2luZG93LmdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFhTZWxlY3RJ
bnB1dChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBOb0V2ZW50TWFzayk7Ci0gICAgWENvbXBv
c2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIENvbXBvc2l0ZVJl
ZGlyZWN0TWFudWFsKTsKLSAgICBtX3BpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFw
KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwotfQotCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKLXsKLSAgICBBU1NFUlQobV9kaXNw
bGF5KTsKLSAgICBBU1NFUlQobV93aW5kb3cpOwotICAgIEFTU0VSVChtX3BhcmVudFdpbmRvdyk7
Ci0KLSAgICAvLyBFeHBsaWNpdGx5IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0byBlbnN1
cmUgaXQgaGFwcGVucyBpbiB0aGlzIG9yZGVyLgotICAgIG1fd2luZG93LnJlc2V0KCk7Ci0gICAg
bV9wYXJlbnRXaW5kb3cucmVzZXQoKTsKLX0KLQotdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgSW50U2l6ZSBzY2FsZWRT
aXplKHNpemUpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFj
dG9yKCkpOwotICAgIGlmIChzY2FsZWRTaXplID09IG1fc2l6ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9zaXplID0gc2NhbGVkU2l6ZTsKLQotICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRv
IGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93
cy4KLSAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4
KDEsIG1fc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSk7Ci0gICAg
WEZsdXNoKG1fZGlzcGxheSk7Ci0KLSAgICAvLyBSZWxlYXNlIHRoZSBwcmV2aW91cyBwaXhtYXAg
bGF0ZXIgdG8gZ2l2ZSBzb21lIHRpbWUgdG8gdGhlIFVJIHByb2Nlc3MgdG8gdXBkYXRlLgotICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpLCBb
cGl4bWFwID0gV1RGTW92ZShtX3BpeG1hcCldIHsgfSk7Ci0gICAgbV9waXhtYXAgPSBYQ29tcG9z
aXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg0YTU0ZDkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVS
ZXNvdXJjZS5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi10eXBlZGVmIHN0cnVj
dCBfWERpc3BsYXkgRGlzcGxheTsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7Ci10eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViUGFnZTsKLQotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKFdlYlBhZ2UmKTsKLSAgICB+UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3coKTsKLQotICAgIFdpbmRvdyB3aW5kb3coKSBjb25zdCB7IHJldHVybiBt
X3dpbmRvdy5nZXQoKTsgfQotICAgIFBpeG1hcCBwaXhtYXAoKSBjb25zdCB7IHJldHVybiBtX3Bp
eG1hcC5nZXQoKTsgfQotICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
LQotcHJpdmF0ZToKLSAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJik7Ci0K
LSAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0
ciB9OwotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlhVbmlxdWVX
aW5kb3cgbV93aW5kb3c7Ci0gICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3BhcmVudFdpbmRv
dzsKLSAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDE0YjNhMTQu
LjZjNDI1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MzAwLDYgKzMwMCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fYXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UtPnNldERlZmF1bHRPcmlnaW5RdW90YSgyNVVMTCAqIDEwMjQgKiAxMDI0
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBtX3dheWxhbmRDb21wb3Np
dG9yRGlzcGxheU5hbWUgPSBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNzUzYWVkMS4uNjk5
ZTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE5Nyw2ICsx
OTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25z
KCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgU3RyaW5nIHdheWxhbmRD
b21wb3NpdG9yRGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3dheWxhbmRDb21wb3NpdG9y
RGlzcGxheU5hbWU7IH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0Kik7CiAgICAgc3RhdGljIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopOwogCkBAIC00
MDQsNiArNDA4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N1cHByZXNzTWVtb3J5UHJlc3N1
cmVIYW5kbGVyIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6VXNlckdlc3R1cmVU
b2tlbiAqLCB1aW50NjRfdD4gbV91c2VyR2VzdHVyZVRva2VuczsKKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgU3RyaW5nIG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGNk
ODI5M2EuLjk4YmE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0zOTAsMTAgKzM5MCwxNCBA
QCBpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9S
ICJSZWNvbXBpbGUgR1RLKyB3aXRoIFdheWxhbmQgYmFja2VuZCB0byB1c2UgRU5BQkxFX1dBWUxB
TkRfVEFSR0VUIikKICAgICBlbmRpZiAoKQogCi0gICAgaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdF
VCBBTkQgR1RLM19WRVJTSU9OIFZFUlNJT05fTEVTUyAzLjEyKQorICAgIGlmIChHVEszX1ZFUlNJ
T04gVkVSU0lPTl9MRVNTIDMuMTIpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdUSysg
My4xMiBpcyByZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKICAgICBlbmRp
ZiAoKQogCisgICAgaWYgKE5PVCBFR0xfRk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJS
T1IgIkVHTCBpcyByZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKKyAgICBl
bmRpZiAoKQorCiAgICAgZmluZF9wYWNrYWdlKFdheWxhbmQgUkVRVUlSRUQpCiBlbmRpZiAoKQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286848</attachid>
            <date>2016-08-24 04:24:36 -0700</date>
            <delta_ts>2016-08-25 03:35:42 -0700</delta_ts>
            <desc>Another update</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>210670</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZTI1ZTlmLi4yMzkxODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTI0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQ2MjQgYW5kIHIyMDQ2NDgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDkzMzRjZmIuLmUzMjNkYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNDQsNiArMTQ0LDggQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNw
bGF5V2F5bGFuZC5jcHAKKwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3Bs
YXlYMTEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVSZXNvdXJjZS5jcHAK
IApAQCAtMzQ4LDI0ICszNTAsNiBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiBl
bmRpZiAoKQogCiBpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQotICAgICMgV2F5bGFuZCBwcm90
b2NvbCBleHRlbnNpb24uCi0gICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90
b2NvbC5jCi0gICAgICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sCi0gICAgICAgIENPTU1B
TkQgd2F5bGFuZC1zY2FubmVyIHNlcnZlci1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZFNlcnZlclByb3Rv
Y29sLmgKLSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY2xpZW50LWhlYWRlciA8ICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5l
ciBjb2RlIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC5jCi0gICAgKQotCi0gICAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQv
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5
bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9X
ZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICkKLQogICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAgICAgJHtXQVlMQU5EX0lO
Q0xVREVfRElSU30KICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcAppbmRleCBkZTYxMjQ4Li5lNmE4MGM2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xOSwxMCArMTksNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0K
ICNpbmNsdWRlICJHTENvbnRleHQuaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogCiAjaWYgVVNFKEVHTCkKQEAgLTU3LDEy
ICs1NCw2IEBAIGlubGluZSBUaHJlYWRHbG9iYWxHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0KCkK
ICAgICByZXR1cm4gKlRocmVhZEdsb2JhbEdMQ29udGV4dDo6c3RhdGljR0xDb250ZXh0OwogfQog
Ci1HTENvbnRleHQqIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKQotewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0Piwgc2hhcmlu
ZywgKGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKSkpOwotICAgIHJldHVybiBzaGFyaW5nLmdldCgp
OwotfQotCiAjaWYgUExBVEZPUk0oWDExKQogLy8gQmVjYXVzZSBvZiBkcml2ZXIgYnVncywgZXhp
dGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJlIGFyZSBhY3RpdmUgcGJ1ZmZlcnMKIC8vIGNhbiBj
cmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFzIGJlZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNp
YWwgTnZpZGlhIGRyaXZlcnMpLgpAQCAtMTExLDEyICsxMDIsMzAgQEAgdm9pZCBHTENvbnRleHQ6
OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oWDEx
KQogCitzdGF0aWMgYm9vbCBpbml0aWFsaXplT3BlbkdMU2hpbXNJZk5lZWRlZCgpCit7CisjaWYg
VVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwor
ICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVu
R0xTaGltcygpOworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorICAgIHJldHVy
biBzdWNjZXNzOworI2VuZGlmCit9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29u
dGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFu
ZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSogcGxhdGZvcm1EaXNwbGF5KQogeworICAgIGlm
ICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkgPyAq
cGxhdGZvcm1EaXNwbGF5IDogUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CiAjaWYg
UExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkg
ewotICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250
ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgIGlmIChkaXNwbGF5LnR5cGUo
KSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIGRp
c3BsYXkpKQogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZWdsQ29udGV4dCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyOCwzNCArMTM3LDYzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2
ZVdpbmRvd1R5cGUKICNlbHNlCiAgICAgWElEIEdMWFdpbmRvd0hhbmRsZSA9IHN0YXRpY19jYXN0
PFhJRD4od2luZG93SGFuZGxlKTsKICNlbmRpZgotICAgIGlmIChhdXRvIGdseENvbnRleHQgPSBH
TENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoR0xYV2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4
dCkpCisgICAgaWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4
dChHTFhXaW5kb3dIYW5kbGUsIGRpc3BsYXkpKQogICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhD
b250ZXh0KTsKICNlbmRpZgogI2lmIFVTRShFR0wpCi0gICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9
IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0
KSkKKyAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0
KHdpbmRvd0hhbmRsZSwgZGlzcGxheSkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRl
eHQpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdMQ29udGV4dDo6R0xDb250
ZXh0KCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2Ny
ZWVuQ29udGV4dChQbGF0Zm9ybURpc3BsYXkqIHBsYXRmb3JtRGlzcGxheSkKIHsKLSNpZiBQTEFU
Rk9STShYMTEpCi0gICAgYWRkQWN0aXZlQ29udGV4dCh0aGlzKTsKKyAgICBpZiAoIWluaXRpYWxp
emVPcGVuR0xTaGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coMCwgcGxhdGZvcm1EaXNwbGF5ID8gcGxhdGZv
cm1EaXNwbGF5IDogJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKK30KKworc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dChQ
bGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkpCit7CisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hp
bXNJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgaWYgKGRpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V2F5bGFuZCkgeworICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpj
cmVhdGVTaGFyaW5nQ29udGV4dChkaXNwbGF5KSkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGVnbENvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKyNp
ZiBVU0UoR0xYKQorICAgIGlmIChhdXRvIGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0
ZVNoYXJpbmdDb250ZXh0KGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhDb250
ZXh0KTsKKyNlbmRpZgorI2lmIFVTRShFR0wpCisgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdM
Q29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlzcGxheSkpCisgICAgICAgIHJldHVy
biBXVEZNb3ZlKGVnbENvbnRleHQpOwogI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29u
dGV4dChHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorR0xDb250ZXh0OjpHTENvbnRleHQoUGxh
dGZvcm1EaXNwbGF5JiBkaXNwbGF5KQorICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coMCwgc2hhcmluZ0NvbnRleHQpOworI2lmIFBM
QVRGT1JNKFgxMSkKKyAgICBpZiAoZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpU
eXBlOjpYMTEpCisgICAgICAgIGFkZEFjdGl2ZUNvbnRleHQodGhpcyk7CisjZW5kaWYKIH0KIAog
R0xDb250ZXh0Ojp+R0xDb250ZXh0KCkKIHsKICAgICBpZiAodGhpcyA9PSBjdXJyZW50Q29udGV4
dCgpLT5jb250ZXh0KCkpCi0gICAgICAgIGN1cnJlbnRDb250ZXh0KCktPnNldENvbnRleHQoMCk7
CisgICAgICAgIGN1cnJlbnRDb250ZXh0KCktPnNldENvbnRleHQobnVsbHB0cik7CiAjaWYgUExB
VEZPUk0oWDExKQotICAgIHJlbW92ZUFjdGl2ZUNvbnRleHQodGhpcyk7CisgICAgaWYgKG1fZGlz
cGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJlbW92
ZUFjdGl2ZUNvbnRleHQodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTY1LDcgKzIwMyw3IEBAIGJv
b2wgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1HTENvbnRleHQqIEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpCitHTENvbnRleHQqIEdMQ29udGV4
dDo6Y3VycmVudCgpCiB7CiAgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0KCktPmNvbnRleHQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKaW5kZXgg
ZDQzOTQ1NC4uMWI4NmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgR0xDb250ZXh0X2gKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1EaXNwbGF5LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNp
ZiBVU0UoRUdMKSAmJiAhUExBVEZPUk0oR1RLKQpAQCAtMzksMjEgKzM5LDE4IEBAIHR5cGVkZWYg
dWludDY0X3QgR0xOYXRpdmVXaW5kb3dUeXBlOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX2Rldmlj
ZSBjYWlyb19kZXZpY2VfdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oWDExKQotdHlwZWRlZiBz
dHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHTENvbnRleHQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dCk7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNy
ZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nID0gMCk7Ci0g
ICAgc3RhdGljIEdMQ29udGV4dCogZ2V0Q3VycmVudCgpOwotICAgIHN0YXRpYyBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+
IGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwg
UGxhdGZvcm1EaXNwbGF5KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0PiBjcmVhdGVPZmZzY3JlZW5Db250ZXh0KFBsYXRmb3JtRGlzcGxheSogPSBudWxs
cHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlU2hhcmlu
Z0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CisgICAgc3RhdGljIEdMQ29udGV4dCogY3VycmVu
dCgpOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5OyB9CiAKLSAgICBHTENvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHQoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IHN3YXBCdWZmZXJzKCkgPSAwOwpAQCAtNjcsMjYgKzY0LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpID0gMDsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oWDExKQotICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFEaXNwbGF5KCk7Ci0gICAg
c3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKTsKKyNpZiBFTkFCTEUoR1JBUEhJ
Q1NfQ09OVEVYVF8zRCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxh
dGZvcm1Db250ZXh0KCkgPSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShYMTEpCitwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7CiAgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKICAgICBzdGF0aWMgdm9p
ZCBjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4aXQoKTsKLQotI2lmIEVOQUJMRShHUkFQSElDU19D
T05URVhUXzNEKQotICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9y
bUNvbnRleHQoKSA9IDA7CiAjZW5kaWYKIAotICAgIGNsYXNzIERhdGEgewotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+RGF0YSgpID0gZGVmYXVsdDsKLSAgICB9OwotCiBwcm90ZWN0ZWQ6
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERhdGE+IG1fY29udGV4dERhdGE7CisgICAgR0xDb250ZXh0
KFBsYXRmb3JtRGlzcGxheSYpOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBtX2Rpc3BsYXk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRl
eCAxNWNkNGRmLi42YTczMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEcKIHsKICAgICBzd2l0Y2ggKHJlbmRlclN0
eWxlKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgotICAg
ICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENv
bnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4
dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dDoKICAgICAgICAgYnJlYWs7CkBAIC04NSw3
ICs4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJl
bnQoKQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9nbENvbnRleHQgPyBtX2dsQ29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBHTENvbnRleHQ6OmdldEN1cnJlbnQoKS0+cGxhdGZv
cm1Db250ZXh0KCk7CisgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpIDogR0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwog
fQogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpAQCAtMTIzLDcgKzEy
Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCiAgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0LT5t
X3N0YXRlLmJvdW5kRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3VycmVu
dCgpOworICAgICAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4
dDo6Y3VycmVudCgpOwogICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xD
b250ZXh0LmdldCgpKQogICAgICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5jcHAKaW5kZXggMmU5MWFhMy4uMTg1MTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5Lmgi
CiAKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUg
PG11dGV4PgogCkBAIC01OSw2ICs2MCw4IEBACiAKICNpZiBVU0UoRUdMKQogI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc5LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5OjpjcmVh
dGVQbGF0Zm9ybURpc3BsYXkoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBp
ZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSkKLSAgICAgICAgcmV0dXJuIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9k
aXNwbGF5KGRpc3BsYXkpKTsKICNlbmRpZgogI2VuZGlmCiAjZWxpZiBQTEFURk9STShFRkwpICYm
IGRlZmluZWQoSEFWRV9FQ09SRV9YKQpAQCAtMTAzLDYgKzEwNiwxOCBAQCBQbGF0Zm9ybURpc3Bs
YXkmIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpCiAgICAgcmV0dXJuICpkaXNwbGF5
OwogfQogCitzdGF0aWMgUGxhdGZvcm1EaXNwbGF5KiBzX3NoYXJlZERpc3BsYXlGb3JDb21wb3Np
dGluZzsKKworUGxhdGZvcm1EaXNwbGF5JiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlG
b3JDb21wb3NpdGluZygpCit7CisgICAgcmV0dXJuIHNfc2hhcmVkRGlzcGxheUZvckNvbXBvc2l0
aW5nID8gKnNfc2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nIDogc2hhcmVkRGlzcGxheSgpOwor
fQorCit2b2lkIFBsYXRmb3JtRGlzcGxheTo6c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5n
KFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSkKK3sKKyAgICBzX3NoYXJlZERpc3BsYXlGb3JDb21w
b3NpdGluZyA9ICZkaXNwbGF5OworfQorCiBQbGF0Zm9ybURpc3BsYXk6OlBsYXRmb3JtRGlzcGxh
eSgpCiAjaWYgVVNFKEVHTCkKICAgICA6IG1fZWdsRGlzcGxheShFR0xfTk9fRElTUExBWSkKQEAg
LTExNyw3ICsxMzIsMjIgQEAgUGxhdGZvcm1EaXNwbGF5Ojp+UGxhdGZvcm1EaXNwbGF5KCkKICNl
bmRpZgogfQogCisjaWYgIVBMQVRGT1JNKEVGTCkKK0dMQ29udGV4dCogUGxhdGZvcm1EaXNwbGF5
OjpzaGFyaW5nR0xDb250ZXh0KCkKK3sKKyAgICBpZiAoIW1fc2hhcmluZ0dMQ29udGV4dCkKKyAg
ICAgICAgbV9zaGFyaW5nR0xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4
dCgqdGhpcyk7CisgICAgcmV0dXJuIG1fc2hhcmluZ0dMQ29udGV4dC5nZXQoKTsKK30KKyNlbmRp
ZgorCiAjaWYgVVNFKEVHTCkKK3N0YXRpYyBIYXNoU2V0PFBsYXRmb3JtRGlzcGxheSo+JiBlZ2xE
aXNwbGF5cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UGxhdGZvcm1E
aXNwbGF5Kj4+IGRpc3BsYXlzOworICAgIHJldHVybiBkaXNwbGF5czsKK30KKwogRUdMRGlzcGxh
eSBQbGF0Zm9ybURpc3BsYXk6OmVnbERpc3BsYXkoKSBjb25zdAogewogICAgIGlmICghbV9lZ2xE
aXNwbGF5SW5pdGlhbGl6ZWQpCkBAIC0xMjUsMTIgKzE1NSwyMCBAQCBFR0xEaXNwbGF5IFBsYXRm
b3JtRGlzcGxheTo6ZWdsRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZWdsRGlzcGxheTsK
IH0KIAorYm9vbCBQbGF0Zm9ybURpc3BsYXk6OmVnbENoZWNrVmVyc2lvbihpbnQgbWFqb3IsIGlu
dCBtaW5vcikgY29uc3QKK3sKKyAgICBpZiAoIW1fZWdsRGlzcGxheUluaXRpYWxpemVkKQorICAg
ICAgICBjb25zdF9jYXN0PFBsYXRmb3JtRGlzcGxheSo+KHRoaXMpLT5pbml0aWFsaXplRUdMRGlz
cGxheSgpOworCisgICAgcmV0dXJuIChtX2VnbE1ham9yVmVyc2lvbiA+IG1ham9yKSB8fCAoKG1f
ZWdsTWFqb3JWZXJzaW9uID09IG1ham9yKSAmJiAobV9lZ2xNaW5vclZlcnNpb24gPj0gbWlub3Ip
KTsKK30KKwogdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKIHsK
ICAgICBtX2VnbERpc3BsYXlJbml0aWFsaXplZCA9IHRydWU7CiAKICAgICBpZiAobV9lZ2xEaXNw
bGF5ID09IEVHTF9OT19ESVNQTEFZKSB7Ci0vLyBFR0wgaXMgb3B0aW9uYWxseSBzb2Z0IGxpbmtl
ZCBvbiBXaW5kb3dzLgorICAgICAgICAvLyBFR0wgaXMgb3B0aW9uYWxseSBzb2Z0IGxpbmtlZCBv
biBXaW5kb3dzLgogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgYXV0byBlZ2xHZXREaXNwbGF5
ID0gZWdsR2V0RGlzcGxheVB0cigpOwogICAgICAgICBpZiAoIWVnbEdldERpc3BsYXkpCkBAIC0x
NDEsMzYgKzE3OSw0MSBAQCB2b2lkIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERpc3Bs
YXkoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChlZ2xJbml0aWFsaXpl
KG1fZWdsRGlzcGxheSwgMCwgMCkgPT0gRUdMX0ZBTFNFKSB7CisgICAgRUdMaW50IG1ham9yVmVy
c2lvbiwgbWlub3JWZXJzaW9uOworICAgIGlmIChlZ2xJbml0aWFsaXplKG1fZWdsRGlzcGxheSwg
Jm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7CiAgICAgICAgIExP
R19FUlJPUigiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CiAgICAgICAgIHRl
cm1pbmF0ZUVHTERpc3BsYXkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFVTRShP
UEVOR0xfRVNfMikKLSAgICBzdGF0aWMgY29uc3QgRUdMZW51bSBlZ2xBUElWZXJzaW9uID0gRUdM
X09QRU5HTF9FU19BUEk7Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBFR0xlbnVtIGVnbEFQSVZl
cnNpb24gPSBFR0xfT1BFTkdMX0FQSTsKLSNlbmRpZgotICAgIGlmIChlZ2xCaW5kQVBJKGVnbEFQ
SVZlcnNpb24pID09IEVHTF9GQUxTRSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBz
ZXQgRUdMIEFQSSglZCkuIiwgZWdsR2V0RXJyb3IoKSk7Ci0gICAgICAgIHRlcm1pbmF0ZUVHTERp
c3BsYXkoKTsKLSAgICAgICAgcmV0dXJuOworICAgIG1fZWdsTWFqb3JWZXJzaW9uID0gbWFqb3JW
ZXJzaW9uOworICAgIG1fZWdsTWlub3JWZXJzaW9uID0gbWlub3JWZXJzaW9uOworCisgICAgZWds
RGlzcGxheXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBlZ2xBdGV4aXRIYW5kbGVy
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXpl
ZCkgeworICAgICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVhbnVw
IGl0cyBnbG9iYWwgZGlzcGxheSBsaXN0LgorICAgICAgICAvLyBTaW5jZSB0aGUgZ2xvYmFsIFBs
YXRmb3JtRGlzcGxheSBpbnN0YW5jZSBpcyBjcmVhdGVkIGJlZm9yZSwKKyAgICAgICAgLy8gd2hl
biB0aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IgaXMgY2FsbGVkLCBFR0wgaGFzIGFscmVh
ZHkgcmVtb3ZlZCB0aGUKKyAgICAgICAgLy8gZGlzcGxheSBmcm9tIHRoZSBsaXN0LCBjYXVzaW5n
IGVnbFRlcm1pbmF0ZSgpIHRvIGNyYXNoLiBTbywgaGVyZSB3ZSByZWdpc3RlcgorICAgICAgICAv
LyBvdXIgb3duIGF0ZXhpdCBoYW5kbGVyLCBhZnRlciBFR0wgaGFzIGJlZW4gaW5pdGlhbGl6ZWQg
YW5kIGFmdGVyIHRoZSBnbG9iYWwKKyAgICAgICAgLy8gaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRl
ZCB0byBlbnN1cmUgd2UgY2FsbCBlZ2xUZXJtaW5hdGUoKSBiZWZvcmUgdGhlIG90aGVyCisgICAg
ICAgIC8vIEVHTCBhdGV4aXQgaGFuZGxlcnMgYW5kIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVzdHJ1
Y3Rvci4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTc5NzMuCisgICAgICAgIGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCA9IHRydWU7
CisgICAgICAgIHN0ZDo6YXRleGl0KFtdIHsKKyAgICAgICAgICAgIHdoaWxlICghZWdsRGlzcGxh
eXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBkaXNwbGF5ID0gZWdsRGlz
cGxheXMoKS50YWtlQW55KCk7CisgICAgICAgICAgICAgICAgZGlzcGxheS0+dGVybWluYXRlRUdM
RGlzcGxheSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKICAgICB9Ci0KLSAgICAvLyBF
R0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVhbnVwIGl0cyBnbG9iYWwgZGlzcGxh
eSBsaXN0LgotICAgIC8vIFNpbmNlIHRoZSBnbG9iYWwgUGxhdGZvcm1EaXNwbGF5IGluc3RhbmNl
IGlzIGNyZWF0ZWQgYmVmb3JlLAotICAgIC8vIHdoZW4gdGhlIFBsYXRmb3JtRGlzcGxheSBkZXN0
cnVjdG9yIGlzIGNhbGxlZCwgRUdMIGhhcyBhbHJlYWR5IHJlbW92ZWQgdGhlCi0gICAgLy8gZGlz
cGxheSBmcm9tIHRoZSBsaXN0LCBjYXVzaW5nIGVnbFRlcm1pbmF0ZSgpIHRvIGNyYXNoLiBTbywg
aGVyZSB3ZSByZWdpc3RlcgotICAgIC8vIG91ciBvd24gYXRleGl0IGhhbmRsZXIsIGFmdGVyIEVH
TCBoYXMgYmVlbiBpbml0aWFsaXplZCBhbmQgYWZ0ZXIgdGhlIGdsb2JhbAotICAgIC8vIGluc3Rh
bmNlIGhhcyBiZWVuIGNyZWF0ZWQgdG8gZW5zdXJlIHdlIGNhbGwgZWdsVGVybWluYXRlKCkgYmVm
b3JlIHRoZSBvdGhlcgotICAgIC8vIEVHTCBhdGV4aXQgaGFuZGxlcnMgYW5kIHRoZSBQbGF0Zm9y
bURpc3BsYXkgZGVzdHJ1Y3Rvci4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1Nzk3My4KLSAgICBzdGQ6OmF0ZXhpdChbXSB7IFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnRlcm1pbmF0ZUVHTERpc3BsYXkoKTsgfSk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1EaXNwbGF5Ojp0ZXJtaW5hdGVFR0xEaXNwbGF5KCkKIHsKKyAgICBtX3NoYXJp
bmdHTENvbnRleHQgPSBudWxscHRyOwogICAgIEFTU0VSVChtX2VnbERpc3BsYXlJbml0aWFsaXpl
ZCk7CiAgICAgaWYgKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1EaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuaAppbmRleCA5MjA5ZjQ1Li43MDA3NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaApAQCAtMzUsMTAgKzM1LDEzIEBA
IHR5cGVkZWYgdm9pZCAqRUdMRGlzcGxheTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBHTENvbnRleHQ7CisKIGNsYXNzIFBsYXRmb3JtRGlzcGxheSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUGxhdGZvcm1EaXNwbGF5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBsYXRmb3JtRGlzcGxheSYgc2hhcmVkRGlzcGxheSgpOworICAgIHN0
YXRpYyBQbGF0Zm9ybURpc3BsYXkmIHNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpOwogICAg
IHZpcnR1YWwgflBsYXRmb3JtRGlzcGxheSgpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsKQEAg
LTU1LDEzICs1OCwyMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
ID0gMDsKIAorI2lmICFQTEFURk9STShFRkwpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5v
dCBoYXZlIGFueSBwbGF0Zm9ybSBpZmRlZiwgYnV0IEVGTCBoYXMgaXRzIG93biBFR0xDb250ZXh0
IGNsYXNzCisgICAgLy8gaW5zdGVhZCBvZiB1c2luZyB0aGUgR0xDb250ZXh0IGNvbW1vbiBBUEku
CisgICAgR0xDb250ZXh0KiBzaGFyaW5nR0xDb250ZXh0KCk7CisjZW5kaWYKKwogI2lmIFVTRShF
R0wpCiAgICAgRUdMRGlzcGxheSBlZ2xEaXNwbGF5KCkgY29uc3Q7CisgICAgYm9vbCBlZ2xDaGVj
a1ZlcnNpb24oaW50IG1ham9yLCBpbnQgbWlub3IpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKICAgICBQbGF0Zm9ybURpc3BsYXkoKTsKIAorICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZERp
c3BsYXlGb3JDb21wb3NpdGluZyhQbGF0Zm9ybURpc3BsYXkmKTsKKwogI2lmIFVTRShFR0wpCiAg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVFR0xEaXNwbGF5KCk7CiAKQEAgLTc1LDcgKzg3LDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0ZXJtaW5hdGVFR0xEaXNwbGF5KCk7CiAKICAgICBib29s
IG1fZWdsRGlzcGxheUluaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBpbnQgbV9lZ2xNYWpvclZl
cnNpb24geyAwIH07CisgICAgaW50IG1fZWdsTWlub3JWZXJzaW9uIHsgMCB9OwogI2VuZGlmCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gbV9zaGFyaW5nR0xDb250ZXh0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA4ZjQ4YzIw
Li4zY2QyYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtODgsOCArODgsOCBAQCBJbWFn
ZUJ1ZmZlckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQogICAgICAgICByZXR1cm47CiAKICNpZiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3Rp
dmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7Ci0gICAgR0xDb250ZXh0OjpzaGFy
aW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHByZXZp
b3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGlmIChtX3RleHR1cmUpCiAgICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CkBAIC0xMDgsNyArMTA4LDggQEAgSW1hZ2VCdWZm
ZXJEYXRhOjp+SW1hZ2VCdWZmZXJEYXRhKCkKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigp
CiB7Ci0gICAgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAKICAgICBnbEdlblRleHR1cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0dXJl
KTsKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUp
OwpAQCAtMTE5LDE1ICsxMjAsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNvbXBv
c2l0b3JCdWZmZXIoKQogICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7
CiAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAgLCBHTF9SR0JBLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsK
IAotICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCktPmNhaXJvRGV2aWNlKCk7Ci0gICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9IGFkb3B0UmVmKGNh
aXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9D
T0xPUl9BTFBIQSwgbV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5o
ZWlnaHQoKSkpOworICAgIG1fY29tcG9zaXRvclN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9z
dXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShjb250ZXh0LT5jYWlyb0RldmljZSgpLCBDQUlST19D
T05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpKSk7CiAgICAgbV9jb21wb3NpdG9yQ3IgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUobV9jb21wb3NpdG9yU3VyZmFjZS5nZXQoKSkpOwogICAgIGNhaXJvX3NldF9hbnRpYWxp
YXMobV9jb21wb3NpdG9yQ3IuZ2V0KCksIENBSVJPX0FOVElBTElBU19OT05FKTsKIH0KIAogdm9p
ZCBJbWFnZUJ1ZmZlckRhdGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogewotICAgIEdMQ29udGV4
dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7CisgICAg
R0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsK
IAogICAgIGlmICghbV9jb21wb3NpdG9yVGV4dHVyZSkgewogICAgICAgICBjcmVhdGVDb21wb3Np
dG9yQnVmZmVyKCk7CkBAIC0xNTksNyArMTU5LDggQEAgdm9pZCBjbGVhclN1cmZhY2UoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlKQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9H
TFN1cmZhY2UoKQogewotICAgIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgYXV0byogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpOworICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gV2UgbXVzdCBnZW5lcmF0ZSB0aGUgdGV4
dHVyZSBvdXJzZWx2ZXMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gQ2Fpcm8gQVBJIGZvciBleHRyYWN0
aW5nIGl0CiAgICAgLy8gZnJvbSBhIHByZS1leGlzdGluZyBzdXJmYWNlLgpAQCAtMTc0LDcgKzE3
NSw2IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiAKICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAvKiBsZXZlbCAqLywgR0xfUkdCQSwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIDApOwogCi0gICAgR0xDb250ZXh0KiBjb250ZXh0ID0gR0xDb250ZXh0
OjpzaGFyaW5nQ29udGV4dCgpOwogICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250ZXh0
LT5jYWlyb0RldmljZSgpOwogCiAgICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBpcyBhIGh1Z2UgcGVy
Zm9ybWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgpAQCAtNTYzLDcgKzU2Myw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGCiAgICAgQVNTRVJUKG1fdGV4dHVyZSk7CiAKICAgICAvLyBD
YWlybyBtYXkgY2hhbmdlIHRoZSBhY3RpdmUgY29udGV4dCwgc28gd2UgbWFrZSBzdXJlIHRvIGNo
YW5nZSBpdCBiYWNrIGFmdGVyIGZsdXNoaW5nLgotICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3Rp
dmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7CisgICAgR0xDb250ZXh0KiBwcmV2
aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKICAgICBjYWlyb19zdXJm
YWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIApAQCAtNjA5LDcgKzYwOSw3IEBAIGJvb2wgSW1hZ2VCdWZm
ZXI6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCYsIEdDM0RlbnVtIHRh
cmdldCwgUGxhCiAKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fZGF0YS5tX3N1cmZhY2UuZ2V0
KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4
dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdygwLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNy
ZWF0ZU9mZnNjcmVlbkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNv
bXBvc2l0aW5nKCkpOwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHVp
bnQzMl90IGZibzsKICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5k
ZXggYTJiYzc1Yi4uMGFlMzFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpZiBV
U0UoRUdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybURpc3BsYXkuaCIKIAogI2lmIFVTRShDQUlSTykKICNpbmNsdWRlIDxjYWlyby5oPgpAQCAt
NDAsNiArMzksMTEgQEAKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShXQVlMQU5EKQorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVdheWxhbmQuaCIKKyNpbmNs
dWRlIDx3YXlsYW5kLWVnbC5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQogLy8gY2Fpcm8tZ2wuaCBpbmNsdWRlcyBzb21lIGRlZmluaXRpb25zIGZyb20gR0xY
IHRoYXQgY29uZmxpY3Qgd2l0aAogLy8gdGhlIG9uZXMgcHJvdmlkZWQgYnkgdXMuIFNpbmNlIEdM
Q29udGV4dEVHTCBkb2Vzbid0IHVzZSBhbnkgR0xYCkBAIC01MCwxMSArNTQsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkoKQot
ewotICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5
KCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7CiAj
aWYgVVNFKE9QRU5HTF9FU18yKQogICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLApA
QCAtNjIsNyArNjEsMTMgQEAgc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0dHJpYnV0ZXNb
XSA9IHsKICAgICBFR0xfTk9ORQogfTsKIAotc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVHTENv
bmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKQor
I2lmIFVTRShPUEVOR0xfRVNfMikKK3N0YXRpYyBjb25zdCBFR0xlbnVtIGdFR0xBUElWZXJzaW9u
ID0gRUdMX09QRU5HTF9FU19BUEk7CisjZWxzZQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0VHTEFQ
SVZlcnNpb24gPSBFR0xfT1BFTkdMX0FQSTsKKyNlbmRpZgorCitib29sIEdMQ29udGV4dEVHTDo6
Z2V0RUdMQ29uZmlnKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnKiBjb25maWcsIEVHTFN1
cmZhY2VUeXBlIHN1cmZhY2VUeXBlKQogewogICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7
CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtODcsMjcgKzkyLDIzIEBAIHN0YXRpYyBib29sIGdl
dEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlw
ZSBzdXJmYWNlCiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgorICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpTdXJmYWNlbGVzczoKICAgICAgICAgYXR0cmlidXRlTGlzdFsx
M10gPSBFR0xfV0lORE9XX0JJVDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgRUdMaW50
IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKLSAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNoYXJl
ZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1Jl
dHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7CisgICAgcmV0dXJuIGVnbENob29zZUNv
bmZpZyhkaXNwbGF5LCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0
dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0LCBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0OjpEYXRhPiYmIGNvbnRleHREYXRhKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0g
c2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4
dCktPm1fY29udGV4dCA6IDA7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xE
aXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5
LmVnbERpc3BsYXkoKTsKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29u
ZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQorICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3Bs
YXksICZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmln
LCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBFR0xDb250ZXh0
IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRl
eHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CiAgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRF
WFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMTcsMTkgKzExOCwxNCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRl
eHQoRUdMTmF0aXZlV2luZG93VAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBhdXRvIGdsQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihjb250ZXh0
LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKTsKLSAgICBnbENvbnRleHQtPm1fY29udGV4dERhdGEg
PSBXVEZNb3ZlKGNvbnRleHREYXRhKTsKLSAgICByZXR1cm4gZ2xDb250ZXh0OworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3Jt
RGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV2luZG93U3VyZmFjZSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0
KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxh
dGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xf
Tk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZpZyBjb25m
aWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQorICAg
IGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXksICZjb25maWcsIFBidWZmZXJTdXJmYWNlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmli
dXRlcyk7CkBAIC0xNDMsMTggKzEzOSwzNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKTsKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0
Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7CiB9CiAKLSNp
ZiBQTEFURk9STShYMTEpCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlU3VyZmFjZWxlc3ND
b250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJp
bmdDb250ZXh0KQogewotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXko
KTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgp
OwogICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAorICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhkaXNw
bGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYgKCFzdHJzdHIoZXh0ZW5zaW9ucywgIkVHTF9L
SFJfc3VyZmFjZWxlc3NfY29udGV4dCIpICYmICFzdHJzdHIoZXh0ZW5zaW9ucywgIkVHTF9LSFJf
c3VyZmFjZWxlc3Nfb3BlbmdsIikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgRUdM
Q29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBTdXJm
YWNlKSkKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBTdXJmYWNlbGVz
cykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0g
ZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4
dEF0dHJpYnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NV
UkZBQ0UsIFN1cmZhY2VsZXNzKSk7Cit9CisKKyNpZiBQTEFURk9STShYMTEpCitzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoUGxh
dGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQp
Cit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXko
KTsKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXks
ICZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBz
aGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKQEAgLTE2Nyw3ICsxODEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENv
bnRleHQoRUdMQ29udGV4dCBzaGFyaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxheSog
eDExRGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZvcm1EaXNwbGF5
KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoeDEx
RGlzcGxheSwgRGVmYXVsdFJvb3RXaW5kb3coeDExRGlzcGxheSksIDEsIDEsIGRlcHRoKTsKICAg
ICBpZiAoIXBpeG1hcCkgewogICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250
ZXh0KTsKQEAgLTE4MCw0OSArMTk0LDEwNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdURk1vdmUocGl4bWFwKSk7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxh
dGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHBpeG1hcCkpKTsKIH0KICNl
bmRpZiAvLyBQTEFURk9STShYMTEpCiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCkKKyNpZiBQTEFURk9STShXQVlMQU5EKQorc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChQ
bGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4
dCkKIHsKLSAgICBpZiAoIXNoYXJlZEVHTERpc3BsYXkoKSkKKyAgICBFR0xEaXNwbGF5IGRpc3Bs
YXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOworICAgIEVHTENvbmZpZyBjb25maWc7
CisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgV2luZG93U3VyZmFjZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQg
PSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAoIWluaXRp
YWxpemVkKSB7Ci0jaWYgIVVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgc3VjY2VzcyA9IGluaXRp
YWxpemVPcGVuR0xTaGltcygpOwotI2VuZGlmCi0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsK
KyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZp
Zywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgaWYgKGNvbnRleHQg
PT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgV2xVbmlx
dWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IHdsU3VyZmFjZShkb3duY2FzdDxQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kPihwbGF0Zm9ybURpc3BsYXkpLmNyZWF0ZVN1cmZhY2UoKSk7CisgICAgaWYgKCF3
bFN1cmZhY2UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBpZiAoIXN1Y2Nlc3MpCisKKyAg
ICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3Vy
ZmFjZS5nZXQoKSwgMSwgMSk7CisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2lu
ZG93U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7CisgICAgaWYgKHN1cmZhY2Ug
PT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwg
Y29udGV4dCk7CisgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveSh3aW5kb3cpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250
ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5n
Q29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0gICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3Jl
YXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxh
dGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHdsU3VyZmFjZSksIHdpbmRv
dykpOworfQorI2VuZGlmCisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxhdGZvcm1E
aXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7CisgICAgaWYgKHBsYXRmb3JtRGlzcGxheS5lZ2xE
aXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKGVnbEJpbmRBUEkoZ0VHTEFQSVZlcnNpb24pID09IEVHTF9GQUxTRSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gcGxh
dGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVH
TCo+KHBsYXRmb3JtRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCkpLT5tX2NvbnRleHQgOiBFR0xf
Tk9fQ09OVEVYVDsKKyAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250
ZXh0KHdpbmRvdywgcGxhdGZvcm1EaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkgOiBudWxscHRy
OworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVN1cmZhY2VsZXNz
Q29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICBpZiAoIWNv
bnRleHQpIHsKICNpZiBQTEFURk9STShYMTEpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICAgICAgY29udGV4
dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4
dCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgICAgICBpZiAocGxhdGZvcm1E
aXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAg
ICAgICBjb250ZXh0ID0gY3JlYXRlV2F5bGFuZENvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBlZ2xT
aGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKyAgICB9CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAg
ICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7CisgICAg
ICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNo
YXJpbmdDb250ZXh0KTsKKworICAgIHJldHVybiBjb250ZXh0OworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRm
b3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5KQoreworICAgIGlmIChwbGF0Zm9ybURpc3BsYXku
ZWdsRGlzcGxheSgpID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGlmIChlZ2xCaW5kQVBJKGdFR0xBUElWZXJzaW9uKSA9PSBFR0xfRkFMU0UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlU3VyZmFjZWxl
c3NDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIGlmICgh
Y29udGV4dCkgeworICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9y
bURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBD
b250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQor
ICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5
cGU6OldheWxhbmQpCisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlV2F5bGFuZENvbnRleHQo
cGxhdGZvcm1EaXNwbGF5KTsKKyNlbmRpZgorICAgIH0KICAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Cisg
ICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOwog
CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVH
TENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBl
KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQ
bGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogICAgICwg
bV90eXBlKHR5cGUpCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gUGl4bWFwU3VyZmFjZSk7CisgICAg
QVNTRVJUKHR5cGUgPT0gU3VyZmFjZWxlc3MgfHwgc3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSk7
CiB9CiAKICNpZiBQTEFURk9STShYMTEpCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xD
b250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1h
cCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wo
UGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5
KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKICAg
ICAsIG1fdHlwZShQaXhtYXBTdXJmYWNlKQogICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXhtYXAp
KQpAQCAtMjMwLDYgKzMwMiwxOCBAQCBHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250
ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcAogfQogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxh
dGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYgd2xTdXJmYWNlLCBFR0xOYXRp
dmVXaW5kb3dUeXBlIHdsV2luZG93KQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAgICwgbV90eXBl
KFdpbmRvd1N1cmZhY2UpCisgICAgLCBtX3dsU3VyZmFjZShXVEZNb3ZlKHdsU3VyZmFjZSkpCisg
ICAgLCBtX3dsV2luZG93KHdsV2luZG93KQoreworfQorI2VuZGlmCisKIEdMQ29udGV4dEVHTDo6
fkdMQ29udGV4dEVHTCgpCiB7CiAjaWYgVVNFKENBSVJPKQpAQCAtMjM3LDcgKzMyMSw3IEBAIEdM
Q29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95
KG1fY2Fpcm9EZXZpY2UpOwogI2VuZGlmCiAKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFy
ZWRFR0xEaXNwbGF5KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gbV9kaXNwbGF5LmVnbERp
c3BsYXkoKTsKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCAwKTsKICAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CkBAIC0yNDYsNiAr
MzMwLDExIEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAKICAgICBpZiAobV9zdXJm
YWNlKQogICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCBtX3N1cmZhY2UpOworCisj
aWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAobV93bFdpbmRvdykKKyAgICAgICAgd2xfZWds
X3dpbmRvd19kZXN0cm95KG1fd2xXaW5kb3cpOworI2VuZGlmCiB9CiAKIGJvb2wgR0xDb250ZXh0
RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpCkBAIC0yNTgsOSArMzQ3LDEwIEBA
IEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKICAgICBpZiAo
IWNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBJbnRTaXpl
KCk7CiAKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBtX2Rpc3BsYXkuZWdsRGlzcGxheSgpOwog
ICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0OwotICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKHNoYXJl
ZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKLSAgICAgICAgfHwg
IWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hFSUdI
VCwgJmhlaWdodCkpCisgICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNl
LCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShkaXNwbGF5
LCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQogICAgICAgICByZXR1cm4gSW50U2l6
ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC0yNjgsMTkgKzM1
OCwxOSBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAK
IGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIEFTU0VSVCht
X2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKIAogICAgIEdM
Q29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGVnbEdldEN1cnJlbnRDb250
ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBl
Z2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBt
X2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXkuZWdsRGlzcGxh
eSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKIH0KIAogdm9pZCBHTENvbnRl
eHRFR0w6OnN3YXBCdWZmZXJzKCkKIHsKICAgICBBU1NFUlQobV9zdXJmYWNlKTsKLSAgICBlZ2xT
d2FwQnVmZmVycyhzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSk7CisgICAgZWdsU3dhcEJ1
ZmZlcnMobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKIH0KIAogdm9pZCBHTENv
bnRleHRFR0w6OndhaXROYXRpdmUoKQpAQCAtMjk1LDcgKzM4NSw3IEBAIGNhaXJvX2RldmljZV90
KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZp
Y2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZp
Y2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4
dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKG1fZGlzcGxh
eS5lZ2xEaXNwbGF5KCksIG1fY29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJv
RGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTC5oCmluZGV4IDg2NTc1YTkuLmUwNjM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTI5LDQ5ICsy
OSw2NyBAQAogI2luY2x1ZGUgIlhVbmlxdWVSZXNvdXJjZS5oIgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShXQVlMQU5EKQorI2luY2x1ZGUgIldsVW5pcXVlUHRyLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xDb250ZXh0IHsK
K2NsYXNzIEdMQ29udGV4dEVHTCBmaW5hbCA6IHB1YmxpYyBHTENvbnRleHQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEVHTCk7CiBwdWJsaWM6Ci0gICAgZW51bSBFR0xTdXJm
YWNlVHlwZSB7IFBidWZmZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5kb3dDb250ZXh0
KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBl
LCBQbGF0Zm9ybURpc3BsYXkmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CiAKLSAgICBHTENv
bnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOwotI2lmIFBM
QVRGT1JNKFgxMSkKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVu
aXF1ZVBpeG1hcCYmKTsKLSNlbmRpZgogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwotICAg
IHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3dh
cEJ1ZmZlcnMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwotICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwotICAgIHZpcnR1YWwgSW50U2l6
ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7CisKKyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVu
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdhaXROYXRpdmUoKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1l
YnVmZmVyKCkgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkg
b3ZlcnJpZGU7CiAjaWYgVVNFKENBSVJPKQotICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNh
aXJvRGV2aWNlKCk7CisgICAgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0gICAgdmlydHVhbCBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOworICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgZW51bSBFR0xT
dXJmYWNlVHlwZSB7IFBidWZmZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNl
LCBTdXJmYWNlbGVzcyB9OworCisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVH
TENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKICNpZiBQTEFURk9STShYMTEp
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENv
bnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgR0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJik7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURp
c3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3Vy
ZmFjZT4mJiwgRUdMTmF0aXZlV2luZG93VHlwZSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdp
bmRvd1R5cGUsIFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBF
R0xfTk9fQ09OVEVYVCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IGNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBF
R0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOworI2lmIFBMQVRGT1JN
KFgxMSkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4
bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0g
RUdMX05PX0NPTlRFWFQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2F5bGFuZENvbnRleHQoUGxh
dGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhU
KTsKICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRF
R0wqKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lkKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMRGlzcGxheSwgRUdMQ29uZmlnKiwgRUdMU3Vy
ZmFjZVR5cGUpOwogCi0gICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7Ci0gICAgRUdMU3VyZmFjZSBt
X3N1cmZhY2U7CisgICAgRUdMQ29udGV4dCBtX2NvbnRleHQgeyBFR0xfTk9fQ09OVEVYVCB9Owor
ICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgRUdMX05PX1NVUkZBQ0UgfTsKICAgICBFR0xTdXJm
YWNlVHlwZSBtX3R5cGU7CiAjaWYgUExBVEZPUk0oWDExKQogICAgIFhVbmlxdWVQaXhtYXAgbV9w
aXhtYXA7CiAjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIFdsVW5pcXVlUHRyPHN0
cnVjdCB3bF9zdXJmYWNlPiBtX3dsU3VyZmFjZTsKKyAgICBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyog
bV93bFdpbmRvdyB7IG51bGxwdHIgfTsKKyNlbmRpZgogI2lmIFVTRShDQUlSTykKICAgICBjYWly
b19kZXZpY2VfdCogbV9jYWlyb0RldmljZSB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApp
bmRleCAxNGJiNTM5Li40MTUwN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJp
bmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpj
cmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1E
aXNwbGF5LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIERpc3BsYXkqIGRpc3Bs
YXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhXaW5kb3dB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhkaXNw
bGF5LCB3aW5kb3csICZhdHRyaWJ1dGVzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00
NSwxNSArNDUsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xY
OjpjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ28KICAgICBpbnQgbnVtUmV0dXJu
ZWQgPSAwOwogICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm9MaXN0KFhHZXRW
aXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm8sICZudW1SZXR1cm5l
ZCkpOwogCi0gICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0
ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQu
Z2V0KCkgOiBudWxscHRyOwotICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5nZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQs
IFRydWUpKTsKKyAgICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQo
ZGlzcGxheSwgdmlzdWFsSW5mb0xpc3QuZ2V0KCksIHNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CiAg
ICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGTW92ZShjb250ZXh0KSwgd2luZG93KTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4dEdM
WChwbGF0Zm9ybURpc3BsYXksIFdURk1vdmUoY29udGV4dCksIHdpbmRvdykpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250
ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYg
cGxhdGZvcm1EaXNwbGF5LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewogICAgIHN0YXRp
YyBjb25zdCBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEdMWF9EUkFXQUJM
RV9UWVBFLCBHTFhfUEJVRkZFUl9CSVQsCkBAIC02Nyw3ICs2Niw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29u
dGV4dCBzaGFyCiAgICAgfTsKIAogICAgIGludCByZXR1cm5lZEVsZW1lbnRzOwotICAgIERpc3Bs
YXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAg
IFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3MoZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxh
eSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJuZWRFbGVtZW50cykpOwogICAgIGlmICgh
cmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04MiwxMCArODEs
MTAgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQ
YnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0
R0xYPihXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBidWZmZXIpKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4dEdMWChwbGF0Zm9ybURpc3Bs
YXksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGJ1ZmZlcikpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdM
WENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBH
TENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9y
bURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7CiAgICAgc3RhdGljIGludCB2
aXN1YWxBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEdMWF9SR0JBLApAQCAtOTYsNyArOTUsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1h
cENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgICAgICAwCiAgICAgfTsKIAotICAgIERpc3Bs
YXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAg
IFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oZ2xYQ2hvb3NlVmlzdWFsKGRpc3Bs
YXksIERlZmF1bHRTY3JlZW4oZGlzcGxheSksIHZpc3VhbEF0dHJpYnV0ZXMpKTsKICAgICBpZiAo
IXZpc3VhbEluZm8pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEzLDQ2ICsxMTIsNDYg
QEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXht
YXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmkKICAgICBpZiAoIWdseFBpeG1hcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRH
TFg+KFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGl4bWFwKSwgV1RGTW92ZShnbHhQaXhtYXAp
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4
dEdMWChwbGF0Zm9ybURpc3BsYXksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGl4bWFwKSwg
V1RGTW92ZShnbHhQaXhtYXApKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+
IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJp
bmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpj
cmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5
KQogewotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3RhdGljIGJv
b2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBzdWNj
ZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1
ZTsKLSAgICB9Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRp
Y19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0LmdldCgpIDog
bnVsbHB0cjsKLSAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0
KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICBHTFhDb250ZXh0IGdseFNo
YXJpbmdDb250ZXh0ID0gcGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSA/IHN0YXRp
Y19jYXN0PEdMQ29udGV4dEdMWCo+KHBsYXRmb3JtRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCkp
LT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/
IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBwbGF0Zm9ybURpc3BsYXksIGdseFNoYXJpbmdD
b250ZXh0KSA6IG51bGxwdHI7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0g
Y3JlYXRlUGJ1ZmZlckNvbnRleHQoZ2x4U2hhcmluZ0NvbnRleHQpOworICAgICAgICBjb250ZXh0
ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBnbHhTaGFyaW5nQ29udGV4
dCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29u
dGV4dChnbHhTaGFyaW5nQ29udGV4dCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZv
cm1EaXNwbGF5LCBnbHhTaGFyaW5nQ29udGV4dCk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0K
IAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0
LCBYSUQgd2luZG93KQotICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVNoYXJpbmdDb250ZXh0
KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5KQoreworICAgIGF1dG8gY29udGV4dCA9
IGNyZWF0ZVBidWZmZXJDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURpc3BsYXkp
OworICAgIHJldHVybiBjb250ZXh0OworfQorCitHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChQ
bGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWElE
IHdpbmRvdykKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KFdURk1v
dmUoY29udGV4dCkpCiAgICAgLCBtX3dpbmRvdyh3aW5kb3cpCiB7CiB9CiAKLUdMQ29udGV4dEdM
WDo6R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZUdMWFBi
dWZmZXImJiBwYnVmZmVyKQotICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitHTENv
bnRleHRHTFg6OkdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIFhVbmlxdWVH
TFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZUdMWFBidWZmZXImJiBwYnVmZmVyKQorICAgIDog
R0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAg
ICAsIG1fcGJ1ZmZlcihXVEZNb3ZlKHBidWZmZXIpKQogewogfQogCi1HTENvbnRleHRHTFg6OkdM
Q29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVQaXhtYXAmJiBw
aXhtYXAsIFhVbmlxdWVHTFhQaXhtYXAmJiBnbHhQaXhtYXApCi0gICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKK0dMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxh
eSYgZGlzcGxheSwgWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlUGl4bWFwJiYg
cGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAgIDogR0xDb250ZXh0KGRp
c3BsYXkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fcGl4bWFw
KFdURk1vdmUocGl4bWFwKSkKICAgICAsIG1fZ2x4UGl4bWFwKFdURk1vdmUoZ2x4UGl4bWFwKSkK
IHsKQEAgLTE2Niw5ICsxNjUsOCBAQCBHTENvbnRleHRHTFg6On5HTENvbnRleHRHTFgoKQogICAg
IGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHBy
ZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2lu
YWxseQogICAgICAgICAvLyBmcm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24g
YXQ6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KLSAgICAgICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUl9FWFQsIDApOwotICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5
LCBOb25lLCBOb25lKTsKKyAgICAgICAgZ2xYTWFrZUN1cnJlbnQoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpLCBOb25lLCBOb25lKTsKICAgICB9CiB9CiAK
QEAgLTE4NSw4ICsxODMsNyBAQCBJbnRTaXplIEdMQ29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVm
ZmVyU2l6ZSgpCiAgICAgaW50IHgsIHk7CiAgICAgV2luZG93IHJvb3RXaW5kb3c7CiAgICAgdW5z
aWduZWQgaW50IHdpZHRoLCBoZWlnaHQsIGJvcmRlcldpZHRoLCBkZXB0aDsKLSAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgaWYgKCFYR2V0R2VvbWV0cnkoZGlzcGxh
eSwgbV93aW5kb3csICZyb290V2luZG93LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCwgJmJvcmRl
cldpZHRoLCAmZGVwdGgpKQorICAgIGlmICghWEdldEdlb21ldHJ5KGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgbV93aW5kb3csICZyb290V2luZG93LCAm
eCwgJnksICZ3aWR0aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQogICAgICAgICBy
ZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBA
IC0yMDAsNyArMTk3LDcgQEAgYm9vbCBHTENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCgp
CiAgICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0LmdldCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0
Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUo
KTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPiht
X2Rpc3BsYXkpLm5hdGl2ZSgpOwogICAgIGlmIChtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIGds
WE1ha2VDdXJyZW50KGRpc3BsYXksIG1fd2luZG93LCBtX2NvbnRleHQuZ2V0KCkpOwogCkBAIC0y
MTMsNyArMjEwLDcgQEAgYm9vbCBHTENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB2
b2lkIEdMQ29udGV4dEdMWDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIGlmIChtX3dpbmRvdykKLSAg
ICAgICAgZ2xYU3dhcEJ1ZmZlcnMoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1fd2luZG93KTsKKyAgICAgICAg
Z2xYU3dhcEJ1ZmZlcnMoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5h
dGl2ZSgpLCBtX3dpbmRvdyk7CiB9CiAKIHZvaWQgR0xDb250ZXh0R0xYOjp3YWl0TmF0aXZlKCkK
QEAgLTIyNyw3ICsyMjQsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0Rl
dmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykgJiYgQ0FJUk9fSEFTX0dMWF9GVU5DVElPTlMKLSAgICBtX2NhaXJv
RGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1fY29udGV4
dC5nZXQoKSk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgbV9jb250ZXh0
LmdldCgpKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKaW5kZXgg
NjQ3Zjk5OC4uMzRjYjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguaApAQCAtMzIsMzEgKzMyLDM0IEBAIHR5cGVkZWYgdm9p
ZCogQ29udGV4dEtleVR5cGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xDb250
ZXh0R0xYIDogcHVibGljIEdMQ29udGV4dCB7CitjbGFzcyBHTENvbnRleHRHTFggZmluYWwgOiBw
dWJsaWMgR0xDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRHTFgp
OwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVh
dGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJ
RCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3Jt
RGlzcGxheSYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVh
dGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsKIAotICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYSUQpOwotICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29u
dGV4dCYmLCBYVW5pcXVlR0xYUGJ1ZmZlciYmKTsKLSAgICBHTENvbnRleHRHTFgoWFVuaXF1ZUdM
WENvbnRleHQmJiwgWFVuaXF1ZVBpeG1hcCYmLCBYVW5pcXVlR0xYUGl4bWFwJiYpOwogICAgIHZp
cnR1YWwgfkdMQ29udGV4dEdMWCgpOwotICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2FpdE5hdGl2ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1
ZmZlcigpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7Ci0g
ICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNFR0xDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgbWFr
ZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2FwQnVmZmVycygpIG92ZXJy
aWRlOworICAgIHZvaWQgd2FpdE5hdGl2ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVuZGVy
VG9EZWZhdWx0RnJhbWVidWZmZXIoKSBvdmVycmlkZTsKKyAgICBJbnRTaXplIGRlZmF1bHRGcmFt
ZUJ1ZmZlclNpemUoKSBvdmVycmlkZTsKKyAgICBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2Uo
KSBvdmVycmlkZTsKKyAgICBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2aXJ0
dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CisgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSBvdmVycmlkZTsKICNlbmRp
ZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBj
cmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4dChHTFhD
b250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5
JiwgWFVuaXF1ZUdMWENvbnRleHQmJiwgWElEKTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1E
aXNwbGF5JiwgWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBidWZmZXImJik7CisgICAg
R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlx
dWVQaXhtYXAmJiwgWFVuaXF1ZUdMWFBpeG1hcCYmKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRm
b3JtRGlzcGxheSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQo
UGxhdGZvcm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250
ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRy
KTsKIAogICAgIFhVbmlxdWVHTFhDb250ZXh0IG1fY29udGV4dDsKICAgICBYSUQgbV93aW5kb3cg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKaW5kZXggYjI5MjM5ZS4uZmNmZjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMjM1LDggKzIzNSw4IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0
KCkKICAgICBpZiAobV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgY29u
c3QgYXV0byYgc2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZv
ckNvbXBvc2l0aW5nKCk7CiAgICAgaWYgKCFtX2dsRGlzcGxheSkgewotICAgICAgICBjb25zdCBh
dXRvJiBzaGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CiAj
aWYgUExBVEZPUk0oWDExKQogICAgICAgICBtX2dsRGlzcGxheSA9IEdTVF9HTF9ESVNQTEFZKGdz
dF9nbF9kaXNwbGF5X3gxMV9uZXdfd2l0aF9kaXNwbGF5KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCkpKTsKICNlbGlmIFBMQVRGT1JNKFdBWUxBTkQp
CkBAIC0yNDQsNyArMjQ0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjplbnN1cmVHc3RHTENvbnRleHQoKQogI2VuZGlmCiAgICAgfQogCi0gICAgR0xDb250ZXh0KiB3
ZWJraXRDb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIEdMQ29udGV4
dCogd2Via2l0Q29udGV4dCA9IHNoYXJlZERpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpOwogICAg
IC8vIEVHTCBhbmQgR0xYIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG5vIG5lZWQgZm9yIGlmZGVm
cyBoZXJlLgogICAgIEdzdEdMUGxhdGZvcm0gZ2xQbGF0Zm9ybSA9IHdlYmtpdENvbnRleHQtPmlz
RUdMQ29udGV4dCgpID8gR1NUX0dMX1BMQVRGT1JNX0VHTCA6IEdTVF9HTF9QTEFURk9STV9HTFg7
CiAKQEAgLTcwMiw3ICs3MDIsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIWdzdF92
aWRlb19mcmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8R3N0TWFwRmxhZ3M+KEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJp
bmdDb250ZXh0KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7CiAgICAgY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9
IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxh
bmQuY3BwCmluZGV4IGQzMzA1ZTEuLjQ3OTI0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kLmNwcApAQCAtMjksMTI2ICsyOSw1NSBAQAogI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CiAKICNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKLSNpbmNsdWRlICJXYXlsYW5kU3VyZmFjZS5o
IgogI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHdheWxh
bmQtZWdsLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZDo6bV9yZWdpc3RyeUxpc3RlbmVyID0gewotICAgIFBsYXRmb3JtRGlzcGxheVdheWxh
bmQ6Omdsb2JhbENhbGxiYWNrLAotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2JhbFJl
bW92ZUNhbGxiYWNrCitjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZDo6c19yZWdpc3RyeUxpc3RlbmVyID0geworICAgIC8vIGdsb2JhbENhbGxi
YWNrCisgICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFt
ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCkgeworICAgICAgICBzdGF0aWNfY2Fz
dDxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKj4oZGF0YSktPnJlZ2lzdHJ5R2xvYmFsKGludGVyZmFj
ZSwgbmFtZSk7CisgICAgfSwKKyAgICAvLyBnbG9iYWxSZW1vdmVDYWxsYmFjaworICAgIFtdKHZv
aWQqLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCkKKyAgICB7CisgICAgfQogfTsKIAot
dm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxDYWxsYmFjayh2b2lkKiBkYXRhLCBz
dHJ1Y3Qgd2xfcmVnaXN0cnkqIHJlZ2lzdHJ5LCB1aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2UsIHVpbnQzMl90KQorUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNw
bGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKIHsKLSAgICBhdXRvIGRpc3Bs
YXkgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKj4oZGF0YSk7Ci0gICAgaWYg
KCFzdGQ6OnN0cmNtcChpbnRlcmZhY2UsICJ3bF9jb21wb3NpdG9yIikpCi0gICAgICAgIGRpc3Bs
YXktPm1fY29tcG9zaXRvciA9IHN0YXRpY19jYXN0PHN0cnVjdCB3bF9jb21wb3NpdG9yKj4od2xf
cmVnaXN0cnlfYmluZChyZWdpc3RyeSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAx
KSk7Ci0gICAgZWxzZSBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX3dlYmtpdGd0ayIp
KQotICAgICAgICBkaXNwbGF5LT5tX3dlYmtpdGd0ayA9IHN0YXRpY19jYXN0PHN0cnVjdCB3bF93
ZWJraXRndGsqPih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfd2Via2l0Z3Rr
X2ludGVyZmFjZSwgMSkpOworICAgIGluaXRpYWxpemUoZGlzcGxheSk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6Z2xvYmFsUmVtb3ZlQ2FsbGJhY2sodm9pZCosIHN0cnVjdCB3
bF9yZWdpc3RyeSosIHVpbnQzMl90KQotewotICAgIC8vIEZJWE1FOiBpZiB0aGlzIGNhbiBoYXBw
ZW4gd2l0aG91dCB0aGUgVUkgUHJvY2VzcyBnZXR0aW5nIHNodXQgZG93bgotICAgIC8vIHdlIHNo
b3VsZCBwcm9iYWJseSBkZXN0cm95IG91ciBjYWNoZWQgZGlzcGxheSBpbnN0YW5jZS4KLX0KLQot
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+IFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OmNyZWF0ZSgpCitQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5
V2F5bGFuZCgpCiB7Ci0gICAgc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheSA9IHdsX2Rpc3Bs
YXlfY29ubmVjdChudWxscHRyKTsKLSAgICBpZiAoIXdsRGlzcGxheSkgewotICAgICAgICBXVEZM
b2dBbHdheXMoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0
byBjb25uZWN0IHRvIHRoZSBXYXlsYW5kIHNlcnZlciBzb2NrZXQuIENoZWNrIHlvdXIgV0FZTEFO
RF9ESVNQTEFZIG9yIFdBWUxBTkRfU09DS0VUIGVudmlyb25tZW50IHZhcmlhYmxlcy4iKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBkaXNwbGF5ID0gc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KG5ldyBQbGF0Zm9ybURpc3BsYXlXYXls
YW5kKHdsRGlzcGxheSkpOwotICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlv
bjogZmFpbGVkIHRvIGNvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGlzcGxheS4i
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpc3BsYXk7
CiB9CiAKLVBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3Ry
dWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheSkKLSAgICA6IG1fZGlzcGxheSh3bERpc3BsYXkpCi0g
ICAgLCBtX3JlZ2lzdHJ5KHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KG1fZGlzcGxheSkpCi0gICAg
LCBtX2VnbENvbmZpZ0Nob3NlbihmYWxzZSkKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6
aW5pdGlhbGl6ZSh3bF9kaXNwbGF5KiBkaXNwbGF5KQogewotICAgIHdsX3JlZ2lzdHJ5X2FkZF9s
aXN0ZW5lcihtX3JlZ2lzdHJ5LCAmbV9yZWdpc3RyeUxpc3RlbmVyLCB0aGlzKTsKKyAgICBtX2Rp
c3BsYXkgPSBkaXNwbGF5OworICAgIG1fcmVnaXN0cnkucmVzZXQod2xfZGlzcGxheV9nZXRfcmVn
aXN0cnkobV9kaXNwbGF5KSk7CisgICAgd2xfcmVnaXN0cnlfYWRkX2xpc3RlbmVyKG1fcmVnaXN0
cnkuZ2V0KCksICZzX3JlZ2lzdHJ5TGlzdGVuZXIsIHRoaXMpOwogICAgIHdsX2Rpc3BsYXlfcm91
bmR0cmlwKG1fZGlzcGxheSk7CiAKLSAgICBzdGF0aWMgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJp
YnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX1dJTkRPV19CSVQsCi0g
ICAgICAgIEVHTF9SRURfU0laRSwgMSwKLSAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDEsCi0gICAg
ICAgIEVHTF9CTFVFX1NJWkUsIDEsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCAxLAotICAgICAg
ICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0gICAgICAgIEVHTF9O
T05FCi0gICAgfTsKLQogICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3BsYXkobV9kaXNwbGF5
KTsKICAgICBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCk7Ci0gICAgaWYg
KG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
RUdMaW50IG51bWJlck9mQ29uZmlnczsKLSAgICBpZiAoIWVnbENob29zZUNvbmZpZyhtX2VnbERp
c3BsYXksIGNvbmZpZ0F0dHJpYnV0ZXMsICZtX2VnbENvbmZpZywgMSwgJm51bWJlck9mQ29uZmln
cykgfHwgbnVtYmVyT2ZDb25maWdzICE9IDEpIHsKLSAgICAgICAgZ193YXJuaW5nKCJQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gZmluZCB0aGUgZGVzaXJl
ZCBFR0wgY29uZmlndXJhdGlvbi4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
ZWdsQ29uZmlnQ2hvc2VuID0gdHJ1ZTsKIH0KIAotUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6flBs
YXRmb3JtRGlzcGxheVdheWxhbmQoKQordm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpyZWdp
c3RyeUdsb2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IG5hbWUpCiB7Ci0gICAg
aWYgKG1fd2Via2l0Z3RrKQotICAgICAgICB3bF93ZWJraXRndGtfZGVzdHJveShtX3dlYmtpdGd0
ayk7Ci0gICAgaWYgKG1fY29tcG9zaXRvcikKLSAgICAgICAgd2xfY29tcG9zaXRvcl9kZXN0cm95
KG1fY29tcG9zaXRvcik7Ci0gICAgaWYgKG1fcmVnaXN0cnkpCi0gICAgICAgIHdsX3JlZ2lzdHJ5
X2Rlc3Ryb3kobV9yZWdpc3RyeSk7Ci0gICAgaWYgKG1fZGlzcGxheSkKLSAgICAgICAgd2xfZGlz
cGxheV9kaXNjb25uZWN0KG1fZGlzcGxheSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5k
U3VyZmFjZT4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZShjb25zdCBJbnRT
aXplJiBzaXplLCBpbnQgd2lkZ2V0SWQpCi17Ci0gICAgc3RydWN0IHdsX3N1cmZhY2UqIHdsU3Vy
ZmFjZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9yKTsKLSAgICAv
LyBXZSBrZWVwIHRoZSBtaW5pbXVtIHNpemUgYXQgMXgxcHggc2luY2UgTWVzYSByZXR1cm5zIG51
bGwgdmFsdWVzIGluIHdsX2VnbF93aW5kb3dfY3JlYXRlKCkgZm9yIHplcm8gd2lkdGggb3IgaGVp
Z2h0LgotICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRv
d19jcmVhdGUod2xTdXJmYWNlLCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6Om1heCgx
LCBzaXplLmhlaWdodCgpKSk7Ci0KLSAgICB3bF93ZWJraXRndGtfc2V0X3N1cmZhY2VfZm9yX3dp
ZGdldChtX3dlYmtpdGd0aywgd2xTdXJmYWNlLCB3aWRnZXRJZCk7Ci0gICAgd2xfZGlzcGxheV9y
b3VuZHRyaXAobV9kaXNwbGF5KTsKLQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdheWxh
bmRTdXJmYWNlPih3bFN1cmZhY2UsIG5hdGl2ZVdpbmRvdyk7CisgICAgaWYgKCFzdGQ6OnN0cmNt
cChpbnRlcmZhY2UsICJ3bF9jb21wb3NpdG9yIikpCisgICAgICAgIG1fY29tcG9zaXRvci5yZXNl
dChzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3JlZ2lzdHJ5X2JpbmQobV9y
ZWdpc3RyeS5nZXQoKSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxKSkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpj
cmVhdGVTaGFyaW5nR0xDb250ZXh0KCkKK1dsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKCkgY29uc3QKIHsKLSAgICBjbGFz
cyBPZmZzY3JlZW5Db250ZXh0RGF0YSA6IHB1YmxpYyBHTENvbnRleHQ6OkRhdGEgewotICAgIHB1
YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2Zmc2NyZWVuQ29udGV4dERhdGEoKQotICAgICAgICB7
Ci0gICAgICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobmF0aXZlV2luZG93KTsKLSAgICAg
ICAgICAgIHdsX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlOwotICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBl
IG5hdGl2ZVdpbmRvdzsKLSAgICB9OwotCi0gICAgYXV0byBjb250ZXh0RGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2Zmc2NyZWVuQ29udGV4dERhdGE+KCk7Ci0gICAgY29udGV4dERhdGEtPnN1cmZh
Y2UgPSB3bF9jb21wb3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7Ci0gICAgY29u
dGV4dERhdGEtPm5hdGl2ZVdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKGNvbnRleHREYXRh
LT5zdXJmYWNlLCAxLCAxKTsKKyAgICBpZiAoIW1fY29tcG9zaXRvcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvIG5hdGl2ZVdpbmRvdyA9IGNvbnRleHREYXRhLT5uYXRpdmVX
aW5kb3c7Ci0gICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChuYXRp
dmVXaW5kb3csIG51bGxwdHIsIFdURk1vdmUoY29udGV4dERhdGEpKTsKKyAgICByZXR1cm4gV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+KHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2Uo
bV9jb21wb3NpdG9yLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKaW5kZXggNGNjOTA0NC4uYzE2NTgyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5
bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKQEAgLTI5LDQ4ICsyOSwzNCBAQAogI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCiAKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKLSNpbmNsdWRl
ICJXZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSAiV2xVbmlxdWVQdHIuaCIKICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgotI2lu
Y2x1ZGUgPHdheWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdMQ29udGV4dEVHTDsKLWNsYXNzIEludFNpemU7Ci1jbGFzcyBX
YXlsYW5kU3VyZmFjZTsKLQotY2xhc3MgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBmaW5hbDogcHVi
bGljIFBsYXRmb3JtRGlzcGxheSB7CitjbGFzcyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIDogcHVi
bGljIFBsYXRmb3JtRGlzcGxheSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPiBjcmVhdGUoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5Kik7CiAgICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5
V2F5bGFuZCgpOwogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzcGxheTsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBj
cmVhdGVTdXJmYWNlKGNvbnN0IEludFNpemUmLCBpbnQgd2lkZ2V0SUQpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOworICAgIFds
VW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBtX3Jl
Z2lzdHJ5TGlzdGVuZXI7Ci0gICAgc3RhdGljIHZvaWQgZ2xvYmFsQ2FsbGJhY2sodm9pZCogZGF0
YSwgc3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciogaW50ZXJm
YWNlLCB1aW50MzJfdCB2ZXJzaW9uKTsKLSAgICBzdGF0aWMgdm9pZCBnbG9iYWxSZW1vdmVDYWxs
YmFjayh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1lKTsKKyAg
ICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIHNfcmVnaXN0cnlMaXN0
ZW5lcjsKIAotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rpc3BsYXkqKTsK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQ7IH0KIAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjaGVjayBhbHNv
IGZvciBtX3dlYmtpdGd0ayBvbmNlIHRoZSBVSVByb2Nlc3MgZW1iZWRkZWQgV2F5bGFuZCBzdWJj
b21wb3NpdGVyIGlzIGltcGxlbWVudGVkLgotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIHsgcmV0
dXJuIG1fY29tcG9zaXRvciAmJiBtX2VnbERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgbV9l
Z2xDb25maWdDaG9zZW47IH0KK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
KCkgPSBkZWZhdWx0OworICAgIHZvaWQgaW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOwog
Ci0gICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpXYXlsYW5kOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdHJ5R2xvYmFsKGNvbnN0
IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxh
eSogbV9kaXNwbGF5OwotICAgIHN0cnVjdCB3bF9yZWdpc3RyeSogbV9yZWdpc3RyeTsKLSAgICBz
dHJ1Y3Qgd2xfY29tcG9zaXRvciogbV9jb21wb3NpdG9yOwotICAgIHN0cnVjdCB3bF93ZWJraXRn
dGsqIG1fd2Via2l0Z3RrOwotCi0gICAgRUdMQ29uZmlnIG1fZWdsQ29uZmlnOwotICAgIGJvb2wg
bV9lZ2xDb25maWdDaG9zZW47CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3JlZ2lzdHJ5PiBt
X3JlZ2lzdHJ5OworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9jb21wb3NpdG9yPiBtX2NvbXBv
c2l0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNv
dXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMmFkMmYuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZl
bnRTb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2F5bGFuZEV2ZW50U291cmNlLmgiCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdMaWJTb3VyY2UgewotcHVibGljOgotICAg
IHZvaWQgaW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOwotCi0gICAgZ2Jvb2xlYW4gY2hl
Y2soKTsKLSAgICBnYm9vbGVhbiBkaXNwYXRjaCgpOwotCi1wcml2YXRlOgotICAgIEdTb3VyY2Ug
bV9zb3VyY2U7Ci0gICAgR1BvbGxGRCBtX3BvbGxGaWxlRGVzY3JpcHRvcjsKLSAgICBzdHJ1Y3Qg
d2xfZGlzcGxheSogbV9kaXNwbGF5OwotfTsKLQotdm9pZCBHTGliU291cmNlOjppbml0aWFsaXpl
KHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQotewotICAgIG1fZGlzcGxheSA9IGRpc3BsYXk7
Ci0gICAgc3RydWN0IHdsX2V2ZW50X2xvb3AqIGxvb3AgPSB3bF9kaXNwbGF5X2dldF9ldmVudF9s
b29wKGRpc3BsYXkpOwotICAgIG1fcG9sbEZpbGVEZXNjcmlwdG9yLmZkID0gd2xfZXZlbnRfbG9v
cF9nZXRfZmQobG9vcCk7Ci0gICAgbV9wb2xsRmlsZURlc2NyaXB0b3IuZXZlbnRzID0gR19JT19J
TiB8IEdfSU9fRVJSIHwgR19JT19IVVA7Ci0gICAgZ19zb3VyY2VfYWRkX3BvbGwoJm1fc291cmNl
LCAmbV9wb2xsRmlsZURlc2NyaXB0b3IpOwotCi0gICAgZ19zb3VyY2Vfc2V0X25hbWUoJm1fc291
cmNlLCAiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IGV2ZW50IHNvdXJjZSIpOwot
ICAgIGdfc291cmNlX3NldF9wcmlvcml0eSgmbV9zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7
Ci0gICAgZ19zb3VyY2Vfc2V0X2Nhbl9yZWN1cnNlKCZtX3NvdXJjZSwgVFJVRSk7Ci0gICAgZ19z
b3VyY2VfYXR0YWNoKCZtX3NvdXJjZSwgbnVsbHB0cik7Ci19Ci0KLWdib29sZWFuIEdMaWJTb3Vy
Y2U6OmNoZWNrKCkKLXsKLSAgICByZXR1cm4gbV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50czsK
LX0KLQotZ2Jvb2xlYW4gR0xpYlNvdXJjZTo6ZGlzcGF0Y2goKQotewotICAgIGlmIChtX3BvbGxG
aWxlRGVzY3JpcHRvci5yZXZlbnRzICYgR19JT19JTikgewotICAgICAgICBzdHJ1Y3Qgd2xfZXZl
bnRfbG9vcCogbG9vcCA9IHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AobV9kaXNwbGF5KTsKLSAg
ICAgICAgd2xfZXZlbnRfbG9vcF9kaXNwYXRjaChsb29wLCAtMSk7Ci0gICAgICAgIHdsX2Rpc3Bs
YXlfZmx1c2hfY2xpZW50cyhtX2Rpc3BsYXkpOwotICAgICAgICBtX3BvbGxGaWxlRGVzY3JpcHRv
ci5yZXZlbnRzID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9wb2xsRmlsZURlc2NyaXB0b3IucmV2
ZW50cyAmIChHX0lPX0VSUiB8IEdfSU9fSFVQKSkKLSAgICAgICAgZ193YXJuaW5nKCJXYXlsYW5k
IERpc3BsYXkgRXZlbnQgU291cmNlOiBsb3N0IGNvbm5lY3Rpb24gdG8gbmVzdGVkIFdheWxhbmQg
Y29tcG9zaXRvciIpOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBw
cmVwYXJlQ2FsbGJhY2soR1NvdXJjZSosIGdpbnQqIHRpbWVvdXQpCi17Ci0gICAgKnRpbWVvdXQg
PSAtMTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBjaGVja0NhbGxi
YWNrKEdTb3VyY2UqIGJhc2UpCi17Ci0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9jYXN0
PEdMaWJTb3VyY2UqPihiYXNlKTsKLSAgICByZXR1cm4gc291cmNlLT5jaGVjaygpOwotfQotCi1z
dGF0aWMgZ2Jvb2xlYW4gZGlzcGF0Y2hDYWxsYmFjayhHU291cmNlKiBiYXNlLCBHU291cmNlRnVu
YywgZ3BvaW50ZXIpCi17Ci0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PEdMaWJT
b3VyY2UqPihiYXNlKTsKLSAgICByZXR1cm4gc291cmNlLT5kaXNwYXRjaCgpOwotfQotCi1zdGF0
aWMgR1NvdXJjZUZ1bmNzIHdheWxhbmRHTGliU291cmNlRnVuY3MgPSB7Ci0gICAgcHJlcGFyZUNh
bGxiYWNrLAotICAgIGNoZWNrQ2FsbGJhY2ssCi0gICAgZGlzcGF0Y2hDYWxsYmFjaywKLSAgICBu
dWxscHRyLCAvLyBmaW5hbGl6ZQotICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfY2FsbGJhY2sKLSAg
ICBudWxscHRyLCAvLyBjbG9zdXJlX21hcnNoYWxsCi19OwotCi1HU291cmNlKiBXYXlsYW5kRXZl
bnRTb3VyY2U6OmNyZWF0ZURpc3BsYXlFdmVudFNvdXJjZShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlz
cGxheSkKLXsKLSAgICBHU291cmNlKiBiYXNlID0gZ19zb3VyY2VfbmV3KCZ3YXlsYW5kR0xpYlNv
dXJjZUZ1bmNzLCBzaXplb2YoR0xpYlNvdXJjZSkpOwotCi0gICAgYXV0byBzb3VyY2UgPSByZWlu
dGVycHJldF9jYXN0PEdMaWJTb3VyY2UqPihiYXNlKTsKLSAgICBzb3VyY2UtPmluaXRpYWxpemUo
ZGlzcGxheSk7Ci0KLSAgICByZXR1cm4gYmFzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWQxNjYyLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXYXlsYW5kRXZlbnRTb3VyY2VfaAotI2Rl
ZmluZSBXYXlsYW5kRXZlbnRTb3VyY2VfaAotCi0jaWYgUExBVEZPUk0oV0FZTEFORCkKLQotI2lu
Y2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFdheWxhbmRFdmVudFNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIEdTb3VyY2UqIGNyZWF0ZURpc3BsYXlFdmVudFNvdXJjZShzdHJ1Y3Qgd2xfZGlzcGxheSop
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oV0FZ
TEFORCkKLQotI2VuZGlmIC8vIFdheWxhbmRFdmVudFNvdXJjZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2Uu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzFhYjE5Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2Uu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
YXlsYW5kU3VyZmFjZS5oIgotCi0jaWYgUExBVEZPUk0oV0FZTEFORCkKLQotI2luY2x1ZGUgIkdM
Q29udGV4dEVHTC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmgiCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXZvaWQgZnJhbWVDYWxsYmFjayh2b2lkKiwgc3RydWN0IHdsX2NhbGxiYWNrKiBjYWxs
YmFjaywgdWludDMyX3QpCi17Ci0gICAgaWYgKGNhbGxiYWNrKQotICAgICAgICB3bF9jYWxsYmFj
a19kZXN0cm95KGNhbGxiYWNrKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFj
a19saXN0ZW5lciBmcmFtZUxpc3RlbmVyID0gewotICAgIGZyYW1lQ2FsbGJhY2sKLX07Ci0KLVdh
eWxhbmRTdXJmYWNlOjpXYXlsYW5kU3VyZmFjZShzdHJ1Y3Qgd2xfc3VyZmFjZSogd2xTdXJmYWNl
LCBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdykKLSAgICA6IG1fd2xTdXJmYWNlKHds
U3VyZmFjZSkKLSAgICAsIG1fbmF0aXZlV2luZG93KG5hdGl2ZVdpbmRvdykKLXsKLX0KLQotV2F5
bGFuZFN1cmZhY2U6On5XYXlsYW5kU3VyZmFjZSgpCi17Ci0gICAgLy8gVGhlIHN1cmZhY2UgY291
bGRuJ3QgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlIGlmIFdheWxhbmREaXNw
bGF5IHdhc24ndCBwcm9wZXJseSBpbml0aWFsaXplZC4KLSAgICBjb25zdCBQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kJiB3YXlsYW5kRGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxh
bmQ+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKLSAgICBBU1NFUlQod2F5bGFu
ZERpc3BsYXkubmF0aXZlKCkpOwotICAgIGVnbE1ha2VDdXJyZW50KHdheWxhbmREaXNwbGF5Lm5h
dGl2ZSgpLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsK
LQotICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveShtX25hdGl2ZVdpbmRvdyk7Ci0gICAgd2xfc3Vy
ZmFjZV9kZXN0cm95KG1fd2xTdXJmYWNlKTsKLX0KLQotdm9pZCBXYXlsYW5kU3VyZmFjZTo6cmVz
aXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgd2xfZWdsX3dpbmRvd19yZXNpemUobV9u
YXRpdmVXaW5kb3csIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgMCk7Ci19Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IFdheWxhbmRTdXJmYWNlOjpjcmVhdGVHTENvbnRl
eHQoKQotewotICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQobV9u
YXRpdmVXaW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7Ci19Ci0KLXZvaWQgV2F5
bGFuZFN1cmZhY2U6OnJlcXVlc3RGcmFtZSgpCi17Ci0gICAgc3RydWN0IHdsX2NhbGxiYWNrKiBm
cmFtZUNhbGxiYWNrID0gd2xfc3VyZmFjZV9mcmFtZShtX3dsU3VyZmFjZSk7Ci0gICAgd2xfY2Fs
bGJhY2tfYWRkX2xpc3RlbmVyKGZyYW1lQ2FsbGJhY2ssICZmcmFtZUxpc3RlbmVyLCB0aGlzKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFO
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQv
V2F5bGFuZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvV2F5bGFuZFN1cmZhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmMjJi
MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmRTdXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiAgV2F5bGFuZFN1
cmZhY2VfaAotI2RlZmluZSAgV2F5bGFuZFN1cmZhY2VfaAotCi0jaWYgUExBVEZPUk0oV0FZTEFO
RCkKLQotI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+Ci0KLSNpbmNsdWRlIDx3YXlsYW5kLWVn
bC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEdMQ29udGV4dEVHTDsKLWNsYXNzIEludFNpemU7Ci0KLWNsYXNzIFdheWxhbmRT
dXJmYWNlIHsKLXB1YmxpYzoKLSAgICBXYXlsYW5kU3VyZmFjZShzdHJ1Y3Qgd2xfc3VyZmFjZSos
IEVHTE5hdGl2ZVdpbmRvd1R5cGUpOwotICAgIH5XYXlsYW5kU3VyZmFjZSgpOwotCi0gICAgc3Ry
dWN0IHdsX3N1cmZhY2UqIHN1cmZhY2UoKSB7IHJldHVybiBtX3dsU3VyZmFjZTsgfQotICAgIEVH
TE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVX
aW5kb3c7IH0KLQotICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmKTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUdMQ29udGV4dCgpOwotCi0gICAgdm9pZCBy
ZXF1ZXN0RnJhbWUoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogbV93bFN1
cmZhY2U7Ci0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBtX25hdGl2ZVdpbmRvdzsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNl
bmRpZiAvLyBXYXlsYW5kU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxh
bmRDbGllbnRQcm90b2NvbC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMWE5
M2MuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm90
b2NvbCBuYW1lPSJ3bF93ZWJraXRndGsiPgotCi0gIDxjb3B5cmlnaHQ+Ci0gICAgQ29weXJpZ2h0
IMKpIDIwMTQgSWdhbGlhIFMuTC4KLQotICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMKLSAgICBzb2Z0d2FyZSBhbmQgaXRzIGRvY3Vt
ZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkCi0gICAgd2l0aG91dCBm
ZWUsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluCi0g
ICAgYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uCi0gICAgbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRp
b24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mCi0gICAgdGhlIGNvcHlyaWdodCBob2xkZXJzIG5vdCBi
ZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eQotICAgIHBlcnRhaW5pbmcgdG8gZGlz
dHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLAotICAgIHdyaXR0ZW4g
cHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQgaG9sZGVycyBtYWtlIG5vCi0gICAgcmVw
cmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBh
bnkKLSAgICBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mg
b3IgaW1wbGllZAotICAgIHdhcnJhbnR5LgotCi0gICAgVEhFIENPUFlSSUdIVCBIT0xERVJTIERJ
U0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMKLSAgICBTT0ZUV0FSRSwg
SU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAot
ICAgIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWQotICAgIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyBPUiBBTlkgREFNQUdFUwotICAgIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBP
RiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTgotICAgIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sCi0gICAgQVJJU0lORyBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YKLSAg
ICBUSElTIFNPRlRXQVJFLgotICA8L2NvcHlyaWdodD4KLQotICA8aW50ZXJmYWNlIG5hbWU9Inds
X3dlYmtpdGd0ayIgdmVyc2lvbj0iMSI+Ci0gICAgPHJlcXVlc3QgbmFtZT0ic2V0X3N1cmZhY2Vf
Zm9yX3dpZGdldCI+Ci0gICAgICA8YXJnIG5hbWU9InN1cmZhY2UiIHR5cGU9Im9iamVjdCIgaW50
ZXJmYWNlPSJ3bF9zdXJmYWNlIi8+Ci0gICAgICA8YXJnIG5hbWU9ImlkIiB0eXBlPSJ1aW50Ii8+
Ci0gICAgPC9yZXF1ZXN0PgotCi0gIDwvaW50ZXJmYWNlPgotCi08L3Byb3RvY29sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYzMwMDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dsVW5p
cXVlUHRyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNp
bmNsdWRlIDx3YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorI2luY2x1ZGUgPHdheWxhbmQtc2Vy
dmVyLWNvcmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgorc3RydWN0IFdsUHRyRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHB0cikgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3VzaW5nIFdsVW5pcXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFdsUHRyRGVsZXRlcjxUPj47
CisKKyNkZWZpbmUgRk9SX0VBQ0hfV0FZTEFORF9ERUxFVEVSKG1hY3JvKSBcCisgICAgbWFjcm8o
c3RydWN0IHdsX2Rpc3BsYXksIHdsX2Rpc3BsYXlfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVj
dCB3bF9nbG9iYWwsIHdsX2dsb2JhbF9kZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX3N1
cmZhY2UsIHdsX3N1cmZhY2VfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9jb21wb3Np
dG9yLCB3bF9jb21wb3NpdG9yX2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfcmVnaXN0
cnksIHdsX3JlZ2lzdHJ5X2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfcHJveHksIHds
X3Byb3h5X2Rlc3Ryb3kpCisKKyNkZWZpbmUgREVGSU5FX1dBWUxBTkRfREVMRVRFUih0eXBlTmFt
ZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBXbFB0ckRlbGV0ZXI8dHlw
ZU5hbWU+IFwKKyAgICB7IFwKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRy
KSBjb25zdCBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgaWYgKHB0cikgXAorICAgICAgICAg
ICAgICAgIGRlbGV0ZXJGdW5jKHB0cik7IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworRk9SX0VB
Q0hfV0FZTEFORF9ERUxFVEVSKERFRklORV9XQVlMQU5EX0RFTEVURVIpCisjdW5kZWYgRk9SX0VB
Q0hfV0FZTEFORF9ERUxFVEVSCisjdW5kZWYgREVGSU5FX1dBWUxBTkRfREVMRVRFUgorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDRiMWNmNmIuLmRjMjBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxNi0wOC0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZG9lcyBub3Qg
d29yayBpbiBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTU4MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdG8gdGhlIG5ldyBHTENvbnRleHQgQVBJLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUpOgorICAgICAgICAoQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFi
bGUpOgorCiAyMDE2LTA4LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVXNlIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3VtZW50KiB3aGVu
IGdldHRpbmcgY29va2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCmluZGV4
IDlhMjZkOTIuLjE3ODE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpp
bml0aWFsaXplKCkKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgVGV4dHVyZU1hcHBlciBu
ZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCiAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAg
ICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhtX3dpbmRv
dywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICAgICAgbV9jb250ZXh0ID0gR0xD
b250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KG1fd2luZG93KTsKIAogICAgIGlmICghbV9j
b250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC0yODIsNyArMjgyLDcgQEAgYm9vbCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENyZWF0ZSBHTCBjb250ZXh0LgotICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6
OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3codGVzdFdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29u
dGV4dCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBjb250ZXh0
ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHRlc3RXaW5kb3cpOwogCiAgICAg
aWYgKCFjb250ZXh0KSB7CiAgICAgICAgIDo6RGVzdHJveVdpbmRvdyh0ZXN0V2luZG93KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBlN2YyYmVmLi4yMGRmOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU1IEBA
CisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3JrIGlu
IFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaXMgdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgc3VwcG9ydCBpbiBXYXlsYW5kIGZvciB0aGUgR1RLKyBwb3J0LiBJdCdzIGJhc2VkCisg
ICAgICAgIG9uIHByZXZpb3VzIHBhdGNoZXMgd3JpdHRlbiBieSBJYWdvIFRvcmFsLCDFvWFuIERv
YmVyxaFlaywgRW1hbnVlbGUgQWluYSBhbmQgRW1pbGlvIFBvenVlbG8gTW9uZm9ydC4KKworICAg
ICAgICBUaGUgZXhpc3RpbmcgV2ViS2l0R1RLKyBXYXlsYW5kIGludGVyZmFjZSBwcmV2aW91c2x5
IGFkZGVkIGZvciB0aGlzIHRvIFdlYkNvcmUgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIFdlYktpdDIK
KyAgICAgICAgbGF5ZXIsIHNpbmNlIGl0J3MgYWN0dWFsbHkgc3BlY2lmaWMgdG8gV2ViS2l0Miwg
YW5kIGl0J3Mgbm93IGFjdHVhbGx5IHVzZWQuIFRoZSBVSSBwcm9jZXNzIHJ1bnMgYSBuZXN0ZWQg
V2F5bGFuZAorICAgICAgICBjb21wb3NpdG9yIHRoYXQgd2ViIHByb2Nlc3NlcyBjb25uZWN0IHRv
LiBXZWIgcHJvY2Vzc2VzIGNyZWF0ZSBhIFdheWxhbmQgc3VyZmFjZSBpbiB0aGUgbmVzdGVkIGNv
bXBvc2l0b3IgZm9yCisgICAgICAgIHRoZSB3ZWIgcGFnZSwgYW5kIHVzaW5nIHRoZSBXZWJLaXRH
VEsrIFdheWxhbmQgcHJvdG9jb2wgaW50ZXJmYWNlIHRoZXkgdGVsbCB0aGUgbmVzdGVkIGNvbXBv
c2l0b3IgdGhlIHdlYiBwYWdlCisgICAgICAgIGFzc29jaWF0ZWQgdG8gdGhlIHN1cmZhY2UuIEEg
V2F5bGFuZCB3aW5kb3cgaXMgY3JlYXRlZCBmb3IgdGhhdCBzdXJmYWNlIHRoYXQgaXMgdGhlbiB1
c2VkIGFzIHRoZSBuYXRpdmUgd2luZG93CisgICAgICAgIGhhbmRsZSBmb3IgY29tcG9zaXRpbmcu
IFRvIGNvbW11bmljYXRlIHdpdGggdGhlIG5lc3RlZCBjb21wb3NpdG9yIGFuZCB0byBlbnN1cmUg
YWxsIEdMIG9wZXJhdGlvbnMgaGFwcGVuIGluIHRoZQorICAgICAgICBuZXN0ZWQgY29tcG9zaXRv
ciBkaXNwbGF5LCB0aGUgd2ViIHByb2Nlc3MgY3JlYXRlcyBhIFdheWxhbmQgZGlzcGxheSB0aGF0
IGNvbm5lY3RzIHRvIHRoZSBuZXN0ZWQgY29tcG9zaXRvciwKKyAgICAgICAgdXNlcyB0aGUgV2Vi
S2l0R1RLKyBXYXlsYW5kIGludGVyZmFjZSBhbmQgaXQncyBzZXQgYXMgdGhlIGdsb2JhbCBzaGFy
ZWQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcuCisKKyAgICAgICAgVGhlIG5lc3RlZCBXYXlsYW5k
IGNvbXBvc2l0b3IgY3JlYXRlcyBhIG5ldyBkaXNwbGF5IHdpdGggYSB1bmlxdWUgbmFtZSB0aGF0
IGlzIHNlbnQgdG8gdGhlIHdlYiBwcm9jZXNzZXMgYXQKKyAgICAgICAgc3RhcnQgdXAuIEl0IGlt
cGxlbWVudHMgdGhlIFdheWxhbmQgc3VyZmFjZSBpbnRlcmZhY2UgdG8gaGFuZGxlIHRoZSBXYXls
YW5kIGJ1ZmZlcnMgY3JlYXRlZCBmb3IgZXZlcnkgc3VyZmFjZQorICAgICAgICBhbmQgc2NoZWR1
bGluZyByZWRyYXdzIG9uIHRoZSB3ZWIgcGFnZXMgd2hlbiB1cGRhdGVzIGFyZSBhdmFpbGFibGUu
IEl0IHVzZXMgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBpbnRlcmZhY2UgdG8KKyAgICAgICAgYXNz
b2NpYXRlIHRoZSBzdXJmYWNlcyB0byBhIHBhcnRpY3VsYXIgd2ViIHBhZ2UuIEEgdGV4dHVyZSBp
cyBjcmVhdGVkIGZvciBldmVyeSBzdXJmYWNlIGFuZCB1cGRhdGVkIHdpdGggdGhlCisgICAgICAg
IFdheWxhbmQgYnVmZmVyIGNvbnRlbnRzIHVzaW5nIGFuIEVHTEltYWdlS0hSIGFuZCBlZ2xJbWFn
ZVRhcmdldFRleHR1cmUyZCBBUEkuCisKKyAgICAgICAgVG8gYWJzdHJhY3QgdGhlIHBsYXRmb3Jt
IGRpZmZlcmVuY2VzIGFuZCBhdm9pZCBpZmRlZnMgYXMgbXVjaCBhcyBwb3NzaWJsZSwgbmV3IGFi
c3RyYWN0IGNsYXNzZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgICAgIHRvIHJlcHJlc2VudCB0aGUg
c3VyZmFjZXMgdXNlZCBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4gQWNjZWxlcmF0ZWRTdXJm
YWNlIGlzIHVzZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGFuZAorICAgICAgICByZXByZXNlbnRzIHRo
ZSBzdXJmYWNlIHdoZXJlIGNvbnRlbnRzIGFyZSByZW5kZXJlZCBpbnRvLiBUaGUgWDExIGltcGxl
bWVudGF0aW9uIGlzIHRoZSByZWRpcmVjdGVkIFhDb21wb3NpdGUKKyAgICAgICAgd2luZG93LCBh
bmQgdGhlIFdheWxhbmQgaW1wbGVtZW50YXRpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgcHJldmlv
dXMgV2F5bGFuZCBzdXJmYWNlIGFkZGVkIHRvIFdlYkNvcmUgYnV0IG5ldmVyCisgICAgICAgIHVz
ZWQuIEluIHRoZSBVSSBwcm9jZXNzIHRoZSB3ZWIgdmlldyBjcmVhdGVzIGFuIGFic3RyYWN0IEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlIHRoYXQgaXMgdXNlZCB0byByZW5kZXIgdGhlCisgICAgICAg
IEFjY2VsZXJhdGVkU3VyZmFjZSBpbnRvIHRoZSB3ZWIgdmlldyB1c2luZyBjYWlyby4gVGhlIFgx
MSBpbXBsZW1lbnRhdGlvbiBjcmVhdGVzIHRoZSBjYWlybyBzdXJmYWNlIGZvciB0aGUKKyAgICAg
ICAgcmVkaXJlY3RlZCBYQ29tcG9zaXRlIHdpbmRvdyBwaXhtYXAgYW5kIHVzZXMgWERhbWFnZSBl
eHRlbnNpb24gdG8gc2NoZWR1bGUgcmVkcmF3cy4gVGhlIFdheWxhbmQgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgYXNrcyB0aGUgbmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBmb3IgdGhlIHRleHR1
cmUgYXNzb2NpYXRlZCB0byB0aGUgd2ViIHZpZXcgcGFnZS4KKworICAgICAgICBBY2NlbGVyYXRl
ZCBjb21wb3NpdGluZyBpcyBub3cgYWx3YXlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBib3RoIFgx
MSBhbmQgV2F5bGFuZCwgdW5sZXNzIGl0J3MgZXhwbGljaXRseQorICAgICAgICBkaXNhYmxlZCBi
eSB0aGUgdXNlciB1c2luZyB0aGUgV0VCS0lUX0RJU0FCTEVfQ09NUE9TSVRJTkdfTU9ERSBlbnZp
cm9ubWVudCB2YXJpYWJsZSwgb3IgaWYgYW55IGV4dGVuc2lvbiBvcgorICAgICAgICBmZWF0dXJl
IHJlcXVpcnRlZCBieSBYMTEgb3IgV2F5bGFuZCBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhdmFp
bGFibGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpnbENvbnRleHQpOiBQ
YXNzIHRoZSBzaGFyZWQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcgdG8gR0xDb250ZXh0OjpjcmVh
dGVDb250ZXh0Rm9yV2luZG93KCkKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSk6IEVuY29kZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBE
ZWNvZGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOiBBZGQgd2F5bGFuZCBjb21wb3NpdG9yIGRp
c3BsYXkgbmFtZSBpbml0aWFsIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURpc3Bv
c2UpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VV
cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZVBhZ2VDbG9zZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNz
KTogSW5pdGlhbGl6ZSB0aGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZSBpbml0aWFs
IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
Ojp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJL
aXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlm
aWVyOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OmZpbHRlclhE
YW1hZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6bm90aWZ5KToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
WDExOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFu
ZENvbXBvc2l0b3I6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3Np
dG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBv
c2l0b3I6OkJ1ZmZlcjo6QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0
b3I6OkJ1ZmZlcjo6fkJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9y
OjpCdWZmZXI6OmRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2F5
bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dXNlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENv
bXBvc2l0b3I6OkJ1ZmZlcjo6dW51c2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9z
aXRvcjo6QnVmZmVyOjpjcmVhdGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjpCdWZmZXI6OnNpemUpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRv
cjo6U3VyZmFjZTo6U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9y
OjpTdXJmYWNlOjp+U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9y
OjpTdXJmYWNlOjptYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
YXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6YXR0YWNoQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVyZUZvclBhaW50
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OmNvbW1p
dCk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKToK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlV2F5bGFuZExvb3BTb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6V2F5bGFuZENvbXBvc2l0b3IpOgorICAgICAgICAoV2Vi
S2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6Z2V0VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6Oldh
eWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldheWxhbmRDb21wb3NpdG9yOjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
YXlsYW5kQ29tcG9zaXRvcjo6dW5yZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldheWxh
bmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAoV2ViS2l0OjpX
YXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6c2V0V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldheWxhbmRDb21wb3NpdG9yOjppc1J1bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5k
Q29tcG9zaXRvcjo6ZGlzcGxheU5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJl
ZmVyZW5jZXNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZv
cm1Jbml0aWFsaXplU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlm
aWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXpl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRTdXJmYWNlOjpBY2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZFN1cmZhY2U6On5BY2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkU3VyZmFjZTo6d2luZG93KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRTdXJmYWNlOjpzdXJmYWNlSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1
cmZhY2VXYXlsYW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZh
Y2VXYXlsYW5kOjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6fkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQpOgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpyZXNpemUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3Vy
ZmFjZVgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcC4KKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZFN1cmZhY2VYMTE6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6cmVzaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhv
c3RHdGspOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1
cnJlbnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2No
ZWR1bGVyOjpSZW5kZXJGcmFtZVNjaGVkdWxlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVdlYlByb2Nlc3MpOiBJbml0aWFsaXplIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBu
YW1lLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjp3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKTogUmV0dXJuIHRoZSB3
YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgorCiAyMDE2LTA4LTI0ICBIdW5zZW9wIEpl
b25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBGaXggdGVzdF9l
d2syX3ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzQzZTk2Yi4uMDk4MGY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTI5NSwxMyArMjk1LDE2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvSW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvZ3N0cmVh
bWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKIAorICAgIFVJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMS5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKICAg
ICBVSVByb2Nlc3MvZ3RrL0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcAogICAgIFVJUHJvY2Vzcy9n
dGsvR2VzdHVyZUNvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZp
bHRlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAogICAg
IFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCi0gICAgVUlQcm9jZXNzL2d0ay9YRGFt
YWdlTm90aWZpZXIuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAK
ICAgICBVSVByb2Nlc3MvZ3RrL1dlYkNvbG9yUGlja2VyR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9n
dGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1dlYkZ1bGxT
Y3JlZW5DbGllbnRHdGsuY3BwCkBAIC0zNTAsOCArMzUzLDEwIEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJlYW1lci9XZWJQYWdlR1N0
cmVhbWVyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZh
Y2UuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXls
YW5kLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDEx
LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCi0gICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtMzY4LDYgKzM3Myw3IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lU
MkdUS19ESVJ9L0luc3BlY3RvckdSZXNvdXJjZUJ1bmRsZS5jCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJJbnNwZWN0b3JHUmVzb3VyY2VCdW5kbGUuYwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyUmVzb3VyY2VzR1Jlc291
cmNlQnVuZGxlLmMKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0
MldheWxhbmRDbGllbnRQcm90b2NvbC5jCiAKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQy
R1RLX0FQSV9ESVJ9L1dlYktpdEVudW1UeXBlcy5jcHAKICAgICAke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0FQSV9ESVJ9L1dlYktpdE1hcnNoYWwuY3BwCkBAIC02ODQsNiArNjkwLDE3IEBA
IGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBWRVJCQVRJTQogKQogCitpZiAoRU5BQkxFX1dBWUxB
TkRfVEFSR0VUKQorICAgICMgV2F5bGFuZCBwcm90b2NvbCBleHRlbnNpb24uCisgICAgYWRkX2N1
c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdU
S19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYworICAgICAgICBERVBFTkRTICR7
V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwKKyAgICAg
ICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgc2VydmVyLWhlYWRlciA8ICR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwgPiAke0RFUklWRURfU09VUkNF
U19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MldheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCisgICAgICAg
IENPTU1BTkQgd2F5bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQktJVDJfRElSfS9T
aGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNf
V0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaAorICAgICAgICBD
T01NQU5EIHdheWxhbmQtc2Nhbm5lciBjb2RlIDwgJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0ay9X
ZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtf
RElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmMKKyAgICApCitlbmRpZiAoKQorCiBp
ZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgc2V0KFBsdWdpblByb2Nlc3NHVEsy
X0VYRUNVVEFCTEVfTkFNRSBXZWJLaXRQbHVnaW5Qcm9jZXNzMikKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRl
eCAzNDUyNDI4Li4zYTFiNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAogI2luY2x1ZGUgIkNvbXBvc2l0
aW5nUnVuTG9vcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiAjaWYgVVNFKE9QRU5HTF9F
U18yKQpAQCAtMTkwLDcgKzE5MSw3IEBAIEdMQ29udGV4dCogVGhyZWFkZWRDb21wb3NpdG9yOjpn
bENvbnRleHQoKQogICAgIGlmICghbV9uYXRpdmVTdXJmYWNlSGFuZGxlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZv
cldpbmRvdyhyZWludGVycHJldF9jYXN0PEdMTmF0aXZlV2luZG93VHlwZT4obV9uYXRpdmVTdXJm
YWNlSGFuZGxlKSwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICBtX2NvbnRleHQg
PSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5h
dGl2ZVdpbmRvd1R5cGU+KG1fbmF0aXZlU3VyZmFjZUhhbmRsZSksICZQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKICAgICByZXR1cm4gbV9jb250ZXh0Lmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOWViYjQzZC4uMjE5OGZjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtMTQ1LDYgKzE0NSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgT1MoTElOVVgpCiAgICAg
ZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZU1vbml0b3JIYW5kbGU7CiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCisgICAgZW5jb2RlciA8PCB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlO
YW1lOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKQEAgLTMwNSw2ICszMDksMTEgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggZmYyMDA1Yy4uYzI2YzRiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNzAs
NiArMTcwLDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBP
UyhMSU5VWCkKICAgICBJUEM6OkF0dGFjaG1lbnQgbWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxl
OwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIFN0cmluZyB3YXlsYW5kQ29t
cG9zaXRvckRpc3BsYXlOYW1lOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90
b2NvbC54bWwgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9j
b2wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDYxMzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJv
dG9jb2wueG1sCkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Cis8cHJvdG9jb2wgbmFtZT0id2xfd2Via2l0Z3RrIj4KKworICA8Y29weXJpZ2h0
PgorICAgIENvcHlyaWdodCDCqSAyMDE0IElnYWxpYSBTLkwuCisKKyAgICBQZXJtaXNzaW9uIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzCisgICAgc29mdHdh
cmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRl
ZAorICAgIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFwcGVhciBpbgorICAgIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgorICAgIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9y
dGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgorICAgIHRoZSBjb3B5cmln
aHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKKyAgICBw
ZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YywKKyAgICB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMg
bWFrZSBubworICAgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhp
cyBzb2Z0d2FyZSBmb3IgYW55CisgICAgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIg
d2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKyAgICB3YXJyYW50eS4KKworICAgIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElT
CisgICAgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQKKyAgICBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAgICBTUEVDSUFMLCBJTkRJUkVDVCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKyAgICBXSEFUU09FVkVSIFJFU1VM
VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KKyAgICBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9O
LAorICAgIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBF
UkZPUk1BTkNFIE9GCisgICAgVEhJUyBTT0ZUV0FSRS4KKyAgPC9jb3B5cmlnaHQ+CisKKyAgPGlu
dGVyZmFjZSBuYW1lPSJ3bF93ZWJraXRndGsiIHZlcnNpb249IjEiPgorICAgIDxyZXF1ZXN0IG5h
bWU9ImJpbmRfc3VyZmFjZV90b19wYWdlIj4KKyAgICAgIDxhcmcgbmFtZT0ic3VyZmFjZSIgdHlw
ZT0ib2JqZWN0IiBpbnRlcmZhY2U9IndsX3N1cmZhY2UiLz4KKyAgICAgIDxhcmcgbmFtZT0icGFn
ZV9pZCIgdHlwZT0idWludCIvPgorICAgIDwvcmVxdWVzdD4KKworICA8L2ludGVyZmFjZT4KKwor
PC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBhZDM4MTQwLi4wNmFmMDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2UuaCIKIAog
I2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2luY2x1
ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSAiS2V5QmluZGluZ1RyYW5zbGF0b3Iu
aCIKQEAgLTcyLDIzICs3MywxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkuaCIKICNlbmRpZgogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0j
aW5jbHVkZSAiWERhbWFnZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXlYMTEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2luY2x1
ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgotI2lu
Y2x1ZGUgPGNhaXJvLXhsaWIuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oWDExKQogI2luY2x1
ZGUgPGdkay9nZGt4Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0jaW5jbHVk
ZSA8Z2RrL2dka3dheWxhbmQuaD4KLSNlbmRpZgotCiAvLyBndGtfd2lkZ2V0X2dldF9zY2FsZV9m
YWN0b3IoKSBhcHBlYXJlZCBpbiBHVEsgMy4xMCwgYnV0IHdlIGFsc28gbmVlZAogLy8gdG8gbWFr
ZSBzdXJlIHdlIGhhdmUgY2Fpcm8gbmV3IGVub3VnaCB0byBzdXBwb3J0IGNhaXJvX3N1cmZhY2Vf
c2V0X2RldmljZV9zY2FsZQogI2RlZmluZSBIQVZFX0dUS19TQ0FMRV9GQUNUT1IgSEFWRV9DQUlS
T19TVVJGQUNFX1NFVF9ERVZJQ0VfU0NBTEUgJiYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTAsIDAp
CkBAIC0yMTEsMTAgKzE5OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsK
ICAgICB1bnNpZ25lZCBzY3JlZW5TYXZlckNvb2tpZTsKICNlbmRpZgogCi0jaWYgVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2U7Ci0gICAgWFVuaXF1ZURhbWFnZSBhY2NlbGVyYXRl
ZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZTsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZT4gYWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU7CiAKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmFnQW5kRHJvcEhhbmRs
ZXI+IGRyYWdBbmREcm9wSGFuZGxlcjsKQEAgLTM1MSw1MCArMzM2LDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWUKICAgICAgICAgcHJpdi0+dG9wbGV2ZWxXaW5kb3dSZWFsaXplZElEID0gZ19z
aWduYWxfY29ubmVjdF9zd2FwcGVkKHdpbmRvdywgInJlYWxpemUiLCBHX0NBTExCQUNLKHRvcGxl
dmVsV2luZG93UmVhbGl6ZWQpLCB3ZWJWaWV3QmFzZSk7CiB9CiAKLSNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldywgUGl4
bWFwIHBpeG1hcCkKLXsKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
dHlwZSgpICE9IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAg
IGlmIChwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZQotICAgICAgICAmJiBjYWly
b194bGliX3N1cmZhY2VfZ2V0X2RyYXdhYmxlKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdT
dXJmYWNlLmdldCgpKSA9PSBwaXhtYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChwcml2
LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZSkgewotICAgICAgICBpZiAocHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2UpIHsKLSAgICAgICAgICAgIFhEYW1hZ2VO
b3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3ZlKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdT
dXJmYWNlRGFtYWdlLmdldCgpKTsKLSAgICAgICAgICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdTdXJmYWNlRGFtYWdlLnJlc2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UgPSBudWxscHRyOwotICAgIH0KLQotICAgIGlmICgh
cGl4bWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJh
d2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHByaXYtPnBhZ2VQ
cm94eS0+ZHJhd2luZ0FyZWEoKSk7Ci0gICAgaWYgKCFkcmF3aW5nQXJlYSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgSW50U2l6ZSBzaXplID0gZHJhd2luZ0FyZWEtPnNpemUoKTsKLSAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IHByaXYtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKLSAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIERpc3BsYXkqIGRp
c3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLSAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gR0RL
X0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSkpOwotICAgIEdka1Zp
c3VhbCogdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRf
ZGVmYXVsdCgpKTsKLSAgICBpZiAoIXZpc3VhbCkKLSAgICAgICAgdmlzdWFsID0gZ2RrX3NjcmVl
bl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIHByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJm
YWNlX2NyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VT
Y2FsZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZS5nZXQoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBv
c2l0aW5nU3VyZmFjZURhbWFnZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBYRGFt
YWdlUmVwb3J0Tm9uRW1wdHkpOwotICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRk
KHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlLmdldCgpLCBbd2ViVmll
d10gewotICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoR1RLX1dJREdFVCh3ZWJWaWV3KSk7
Ci0gICAgfSk7Ci19Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFs
aXplKEd0a1dpZGdldCogd2lkZ2V0KQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKQEAgLTU2NCw5ICs1MDUsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UoR09iamVjdCogZ29iamVjdCkKICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbCh3ZWJWaWV3LT5wcml2LT5zY3JlZW5TYXZlckluaGliaXRDYW5j
ZWxsYWJsZS5nZXQoKSk7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVu
V2luZG93KHdlYlZpZXcsIG51bGxwdHIpOwogICAgIHdlYlZpZXctPnByaXYtPnBhZ2VQcm94eS0+
Y2xvc2UoKTsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2ViVmlldywgMCk7
Ci0jZW5kaWYKKyAgICB3ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSA9IG51
bGxwdHI7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2Ns
YXNzKS0+ZGlzcG9zZShnb2JqZWN0KTsKIH0KIApAQCAtNTg1LDU1ICs1MjQsNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBw
cml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZyA9IDA7CiB9CiAKLXN0YXRpYyBib29sIHdlYmtpdFdl
YlZpZXdSZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UsIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSwgY2Fpcm9f
dCogY3IsIEdka1JlY3RhbmdsZSogY2xpcFJlY3QpCi17Ci0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0gICAgQVNTRVJUKGRyYXdpbmdBcmVhKTsKLQotICAgIGlmICghZHJh
d2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3ZWJWaWV3QmFzZSktPnByaXY7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlID0gcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCk7Ci0gICAg
Y2Fpcm9fc2F2ZShjcik7Ci0KLSAgICBpZiAoIXN1cmZhY2UgfHwgIXByaXYtPnBhZ2VQcm94eS0+
ZHJhd3NCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
ID0gcHJpdi0+cGFnZVByb3h5LT5iYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAgICAgaWYgKGNvbG9y
Lmhhc0FscGhhKCkpIHsKLSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3Qt
PngsIGNsaXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAg
ICAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0g
ICAgICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb2xv
ci5hbHBoYSgpID4gMCkgewotICAgICAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwg
Y29sb3IpOwotICAgICAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRP
Ul9TT1VSQ0UpOwotICAgICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwg
Y2xpcFJlY3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7Ci0gICAgICAg
ICAgICBjYWlyb19maWxsKGNyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChzdXJmYWNl
KSB7Ci0gICAgICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHBy
b2Nlc3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKLSAgICAgICAgLy8gYXMgZGlydHkgdG8g
ZW5zdXJlIHdlIGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBw
b3NzaWJsZS4KLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KHN1cmZhY2UpOwotICAg
ICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xpcFJl
Y3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKLSAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsKLSAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNy
LCBDQUlST19PUEVSQVRPUl9PVkVSKTsKLSAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgfQot
Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHdlYlZpZXdCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oY3IpOwotICAgIFVO
VVNFRF9QQVJBTShjbGlwUmVjdCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNh
aXJvX3QqIGNyKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJ
VF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC02NDUsNyArNTM1LDkgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3Ip
CiAgICAgaWYgKCFnZGtfY2Fpcm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQog
ICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBpZiAoIXdlYmtpdFdlYlZpZXdSZW5kZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0FyZWEsIGNyLCAm
Y2xpcFJlY3QpKSB7CisgICAgaWYgKHdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZSAmJiBkcmF3aW5nQXJlYS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkp
CisgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+cGFp
bnQoY3IsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKICAgICAgICAgV2ViQ29yZTo6UmVnaW9uIHVu
cGFpbnRlZFJlZ2lvbjsgLy8gVGhpcyBpcyBzaW1wbHkgdW51c2VkLgogICAgICAgICBkcmF3aW5n
QXJlYS0+cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogICAgIH0KQEAgLTEy
ODYsNiArMTE3OCw4IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgUmVmPEFQCiAgICAgcHJpdi0+cGFnZVBy
b3h5ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqcHJpdi0+cGFnZUNsaWVudCwgV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OwogCisgICAgcHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgPSBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlKCpwcml2LT5wYWdlUHJveHkpOworCiAgICAgcHJpdi0+aW5wdXRNZXRo
b2RGaWx0ZXIuc2V0UGFnZShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOwogCiAjaWYgSEFWRShHVEtf
U0NBTEVfRkFDVE9SKQpAQCAtMTU2NiwyOSArMTQ2MCwyMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlUmVzZXRDbGlja0NvdW50ZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNl
KQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIGNvbnN0IExheWVyVHJlZUNv
bnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
UGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCBsYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFzZSk7Ci0jZW5kaWYKKyAgICBp
ZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAg
ICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVw
ZGF0ZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3QmFzZSwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKLSNp
ZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2Via2l0V2ViVmlld0Jhc2UsIGxheWVy
VHJlZUNvbnRleHQuY29udGV4dElEKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdl
YlZpZXdCYXNlKTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5h
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKGxheWVyVHJlZUNvbnRleHQpOwogfQogCiB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdQaXhtYXAod2Via2l0V2ViVmlld0Jhc2UsIDApOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYgKHdlYmtpdFdlYlZpZXdC
YXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAgICAgd2Via2l0V2ViVmll
d0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUoTGF5ZXJUcmVlQ29u
dGV4dCgpKTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vz
cyhXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCkBAIC0xNjE2LDkgKzE1MDEs
OSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFn
ZUNsb3NlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7Ci0jaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKLSNlbGlm
IFBMQVRGT1JNKFgxMSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGlmICh3ZWJraXRXZWJW
aWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKExheWVyVHJl
ZUNvbnRleHQoKSk7CisjaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYm
ICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpICE9IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDEx
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IGYxNGM4YjIuLjM3NjZiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTAxLDYgKzEwMSwxMSBAQAogI2luY2x1ZGUg
Ik1lbW9yeVByZXNzdXJlTW9uaXRvci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5E
KQorI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXkuaD4KKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpAQCAtNjQwLDYgKzY0NSwxMSBAQCBXZWJQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICAg
ICAgcGFyYW1ldGVycy5tZW1vcnlQcmVzc3VyZU1vbml0b3JIYW5kbGUgPSBNZW1vcnlQcmVzc3Vy
ZU1vbml0b3I6OnNpbmdsZXRvbigpLmNyZWF0ZUhhbmRsZSgpOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50
eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAgICBwYXJhbWV0
ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2lu
Z2xldG9uKCkuZGlzcGxheU5hbWUoKTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7
CiAKICAgICAvLyBBZGQgYW55IHBsYXRmb3JtIHNwZWNpZmljIHBhcmFtZXRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFjYWZlYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUuY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUuaCIKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuaCIKKyNlbmRpZgorCisjaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaCIK
KyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZT4gQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisjaWYgUExBVEZP
Uk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlw
ZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgcmV0dXJuIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisj
aWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Olgx
MSkKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpjcmVhdGUod2Vi
UGFnZSk7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkK
KyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQoreworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkKK3sKK30KKworYm9vbCBBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yID0gbV93ZWJQYWdlLmJhY2tn
cm91bmRDb2xvcigpOworICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKSB7CisgICAgICAgIGNhaXJv
X3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRo
KCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBD
QUlST19PUEVSQVRPUl9DTEVBUik7CisgICAgICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIH0KKwor
ICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkgeworICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNv
bG9yKGNyLCBjb2xvcik7CisgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BF
UkFUT1JfU09VUkNFKTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCks
IGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZDc2YmIyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX2NhaXJvIGNh
aXJvX3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBMYXllclRyZWVDb250ZXh0OworY2xhc3MgV2ViUGFnZVBy
b3h5OworCitjbGFzcyBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlPiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUoKTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworCitwcm90ZWN0ZWQ6CisgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmUoV2ViUGFnZVByb3h5Jik7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNmJhNjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZC5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5j
bHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQ
dHJDYWlyby5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdMRVMyL2dsMi5o
PgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNoaW1zLmg+CisjZW5kaWYKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1
ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPiBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQ6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgaWYgKCFX
YXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kPihuZXcgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKHdlYlBhZ2Up
KTsKK30KKworQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUod2ViUGFnZSkKK3sKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9u
KCkucmVnaXN0ZXJXZWJQYWdlKG1fd2ViUGFnZSk7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZDo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCgpCit7CisgICAgV2F5
bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJXZWJQYWdlKG1fd2ViUGFnZSk7
Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190
KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgR0x1aW50IHRleHR1cmU7Cisg
ICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsKKyAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5n
bGV0b24oKS5nZXRUZXh0dXJlKG1fd2ViUGFnZSwgdGV4dHVyZSwgdGV4dHVyZVNpemUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBSZWN0KTsKKworI2lmIDAKKyAgICAvLyBGSVhN
RTogVXNlIHRoaXMgd2hlbiBHVEsrID49IDMuMTYuIEdUSysgZXhwZWN0cyB0aGUgWSBheGlzIHRv
IGJlIGludmVydGVkIHRvIHdoYXQgd2UgZ2V0LCBzbyB3ZSBuZWVkIHRvIGZsaXAgaXQgc29tZWhv
dy4KKyAgICBnZGtfY2Fpcm9fZHJhd19mcm9tX2dsKGNyLCBndGtfd2lkZ2V0X2dldF93aW5kb3co
bV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksIHRleHR1cmUsIEdMX1RFWFRVUkUsIDEsIGNsaXBSZWN0
LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7
CisjZWxzZQorICAgIEludFNpemUgc2l6ZSA9IHRleHR1cmVTaXplOworICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgc2l6ZS5z
Y2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBpZiAoIW1fc3VyZmFjZSB8fCBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZhY2UuZ2V0KCkpICE9IHNpemUud2lkdGgoKSB8
fCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSAhPSBzaXpl
LmhlaWdodCgpKQorICAgICAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJm
YWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpKTsKKyAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShtX3N1cmZhY2UuZ2V0KCksIGRl
dmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBHTHVpbnQgZmI7Cisg
ICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZiKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgZmIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKwor
ICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfUEFDS19ST1dfTEVOR1RILCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9z
dXJmYWNlLmdldCgpKSAvIDQpOworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICBnbFJlYWRQaXhl
bHMoMCwgMCwgdGV4dHVyZVNpemUud2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCksIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJm
YWNlLmdldCgpKSk7CisjZWxzZQorICAgIGdsUmVhZFBpeGVscygwLCAwLCB0ZXh0dXJlU2l6ZS53
aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhf
OF84XzhfUkVWLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSkp
OworI2VuZGlmCisgICAgZ2xQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIDApOworCisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZmYik7CisKKyAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQg
YnkgdGhlIHdlYiBwcm9jZXNzIGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0CisgICAgLy8gYXMg
ZGlydHkgdG8gZW5zdXJlIHdlIGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMg
c29vbiBhcyBwb3NzaWJsZS4KKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJmYWNl
LmdldCgpKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3Qu
eSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2V0
X3NvdXJjZV9zdXJmYWNlKGNyLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3Nl
dF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fZmlsbChjcik7
CisjZW5kaWYKKworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjRjNDIyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCisKKyNpZiBQTEFURk9STShX
QVlMQU5EKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQgZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPiBjcmVhdGUoV2ViUGFnZVByb3h5
Jik7CisgICAgfkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCgpOworCitwcml2YXRlOgor
ICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZChXZWJQYWdlUHJveHkmKTsKKworICAg
IGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
KworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyODMwMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTEuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgiCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCisjaW5j
bHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4
dGVuc2lvbnMvWGRhbWFnZS5oPgorI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KKyNpbmNsdWRlIDxn
ZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7CisKK2NsYXNz
IFhEYW1hZ2VOb3RpZmllciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWERhbWFnZU5vdGlm
aWVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVyPjsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgWERhbWFnZU5vdGlmaWVyJiBzaW5nbGV0b24oKQorICAgIHsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4gbm90aWZpZXI7
CisgICAgICAgIHJldHVybiBub3RpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIGFkZChEYW1hZ2Ug
ZGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKKyAgICB7Cisg
ICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICBnZGtf
d2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5j
PigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAgICAgIG1fbm90aWZ5RnVuY3Rpb25z
LmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlbW92ZShEYW1hZ2UgZGFtYWdlKQorICAgIHsKKyAgICAgICAgbV9ub3RpZnlGdW5jdGlvbnMu
cmVtb3ZlKGRhbWFnZSk7CisgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkp
CisgICAgICAgICAgICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnBy
ZXRfY2FzdDxHZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFhEYW1hZ2VOb3RpZmllcigpID0gZGVmYXVsdDsKKworICAgIHN0
YXRpYyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCogZXZlbnQs
IEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKKyAgICB7CisgICAgICAgIGF1
dG8qIHhFdmVudCA9IHN0YXRpY19jYXN0PFhFdmVudCo+KGV2ZW50KTsKKyAgICAgICAgaWYgKHhF
dmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52YWx1ZSgpICsgWERhbWFnZU5vdGlmeSkK
KyAgICAgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJTlVFOworCisgICAgICAgIGF1dG8q
IGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxYRGFtYWdlTm90aWZ5RXZlbnQqPih4RXZl
bnQpOworICAgICAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVudC0+ZGFtYWdlKSkg
eworICAgICAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVudC0+eGFueS5kaXNwbGF5LCBkYW1h
Z2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBHREtfRklM
VEVSX1JFTU9WRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJ
TlVFOworICAgIH0KKworICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0
aW9ucy5nZXQoZGFtYWdlKSkgeworICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBIYXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX25vdGlm
eUZ1bmN0aW9uczsKK307CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMT4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdl
YlBhZ2UpCit7CisgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworICAgIGlmICghZGlzcGxheS5z
dXBwb3J0c1hDb21wb3NpdGUoKSB8fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2Uoc19kYW1hZ2VF
dmVudEJhc2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExPihuZXcgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTEod2ViUGFnZSkpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFnZSkKK3sKK30KKworQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTE6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSgpCit7CisgICAgaWYgKG1fZGFt
YWdlKSB7CisgICAgICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3ZlKG1fZGFt
YWdlLmdldCgpKTsKKyAgICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICB9Cit9CisKK3ZvaWQg
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0
JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIFBpeG1hcCBwaXhtYXAgPSBsYXllclRyZWVDb250
ZXh0LmNvbnRleHRJRDsKKyAgICBpZiAobV9zdXJmYWNlICYmIGNhaXJvX3hsaWJfc3VyZmFjZV9n
ZXRfZHJhd2FibGUobV9zdXJmYWNlLmdldCgpKSA9PSBwaXhtYXApCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAgICAgaWYgKG1fZGFtYWdlKSB7CisgICAgICAg
ICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShtX2RhbWFnZS5nZXQoKSk7
CisgICAgICAgICAgICBtX2RhbWFnZS5yZXNldCgpOworICAgICAgICB9CisgICAgICAgIG1fc3Vy
ZmFjZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFwaXhtYXApCisgICAgICAgIHJldHVy
bjsKKworICAgIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0
PERyYXdpbmdBcmVhUHJveHlJbXBsKj4obV93ZWJQYWdlLmRyYXdpbmdBcmVhKCkpOworICAgIGlm
ICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgc2l6ZSA9IGRy
YXdpbmdBcmVhLT5zaXplKCk7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBh
Z2UuZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9y
KTsKKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBBU1NFUlQo
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCkgPT0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2Rl
ZmF1bHQoKSkpOworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92
aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyAgICBpZiAoIXZpc3VhbCkKKyAgICAg
ICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9k
ZWZhdWx0KCkpOworICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9j
cmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUo
bV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIFhEYW1hZ2VSZXBv
cnROb25FbXB0eSk7CisgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGQobV9kYW1h
Z2UuZ2V0KCksIFt0aGlzXSB7CisgICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhtX3dlYlBh
Z2Uudmlld1dpZGdldCgpKTsKKyAgICB9KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorewor
ICAgIGlmICghbV9zdXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYWlyb19z
YXZlKGNyKTsKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBSZWN0
KTsKKworICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nl
c3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKKyAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUg
d2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxl
LgorICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkpOworICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0Lndp
ZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2Uo
Y3IsIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBD
QUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJvX3Jl
c3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
WDExLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlhN2MyZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTEuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9YVW5pcXVlUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEgZmluYWwgOiBwdWJs
aWMgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MSgpOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKFdlYlBhZ2VQ
cm94eSYpOworCisgICAgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJy
aWRlOworICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBv
dmVycmlkZTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKKyAgICBX
ZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1fZGFtYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgyMjUzYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBA
IC0wLDAgKzEsNTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgi
CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2ViS2l0MldheWxhbmRTZXJ2
ZXJQcm90b2NvbC5oIgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dMQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVUlELmg+
CisjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaD4KKworI2lmIFVTRShPUEVOR0xf
RVNfMikKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4K
KyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTaGltcy5oPgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmICFkZWZpbmVk
KFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdM
QklORFdBWUxBTkRESVNQTEFZV0wpIChFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfZGlzcGxheSopOwor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xVTkJJTkRXQVlMQU5ERElTUExBWVdMKQordHlw
ZWRlZiBFR0xCb29sZWFuICgqUEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCkgKEVHTERpc3Bs
YXksIHN0cnVjdCB3bF9kaXNwbGF5Kik7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKFBGTkVHTFFV
RVJZV0FZTEFOREJVRkZFUldMKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMUVVFUllXQVlM
QU5EQlVGRkVSV0wpIChFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqLCBFR0xpbnQgYXR0
cmlidXRlLCBFR0xpbnQqIHZhbHVlKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZORUdMQ1JF
QVRFSU1BR0VLSFJQUk9DKQordHlwZWRlZiBFR0xJbWFnZUtIUiAoKlBGTkVHTENSRUFURUlNQUdF
S0hSUFJPQykgKEVHTERpc3BsYXksIEVHTENvbnRleHQsIEVHTGVudW0gdGFyZ2V0LCBFR0xDbGll
bnRCdWZmZXIsIGNvbnN0IEVHTGludCogYXR0cmliTGlzdCk7CisjZW5kaWYKKworI2lmICFkZWZp
bmVkKFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MpCit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5F
R0xERVNUUk9ZSU1BR0VLSFJQUk9DKSAoRUdMRGlzcGxheSwgRUdMSW1hZ2VLSFIpOworI2VuZGlm
CisKKyNpZiAhZGVmaW5lZChQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQykKK3R5
cGVkZWYgdm9pZCAoKlBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKSAoR0xlbnVt
IHRhcmdldCwgR0xlZ2xJbWFnZU9FUyk7CisjZW5kaWYKKworc3RhdGljIFBGTkVHTEJJTkRXQVlM
QU5ERElTUExBWVdMIGVnbEJpbmRXYXlsYW5kRGlzcGxheTsKK3N0YXRpYyBQRk5FR0xVTkJJTkRX
QVlMQU5ERElTUExBWVdMIGVnbFVuYmluZFdheWxhbmREaXNwbGF5Oworc3RhdGljIFBGTkVHTFFV
RVJZV0FZTEFOREJVRkZFUldMIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcjsKK3N0YXRpYyBQRk5FR0xD
UkVBVEVJTUFHRUtIUlBST0MgZWdsQ3JlYXRlSW1hZ2U7CitzdGF0aWMgUEZORUdMREVTVFJPWUlN
QUdFS0hSUFJPQyBlZ2xEZXN0cm95SW1hZ2U7CitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRF
WFRVUkUyRE9FU1BST0MgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQ7CisKKworCitXYXlsYW5kQ29t
cG9zaXRvciYgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9yPiB3YXlsYW5kQ29tcG9zaXRvcjsKKyAgICBy
ZXR1cm4gd2F5bGFuZENvbXBvc2l0b3I7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIq
IFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKHN0cnVjdCB3bF9yZXNvdXJj
ZSogcmVzb3VyY2UpCit7CisgICAgaWYgKHN0cnVjdCB3bF9saXN0ZW5lciogbGlzdGVuZXIgPSB3
bF9yZXNvdXJjZV9nZXRfZGVzdHJveV9saXN0ZW5lcihyZXNvdXJjZSwgZGVzdHJveUxpc3RlbmVy
Q2FsbGJhY2spKSB7CisgICAgICAgIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIqIGJ1ZmZlcjsK
KyAgICAgICAgcmV0dXJuIHdsX2NvbnRhaW5lcl9vZihsaXN0ZW5lciwgYnVmZmVyLCBtX2Rlc3Ry
b3lMaXN0ZW5lcik7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBXYXlsYW5kQ29tcG9zaXRvcjo6
QnVmZmVyKHJlc291cmNlKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6QnVmZmVy
KHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCisgICAgOiBtX3Jlc291cmNlKHJlc291cmNl
KQorICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQoreworICAgIHdsX2xpc3RfaW5pdCgmbV9k
ZXN0cm95TGlzdGVuZXIubGluayk7CisgICAgbV9kZXN0cm95TGlzdGVuZXIubm90aWZ5ID0gZGVz
dHJveUxpc3RlbmVyQ2FsbGJhY2s7CisgICAgd2xfcmVzb3VyY2VfYWRkX2Rlc3Ryb3lfbGlzdGVu
ZXIobV9yZXNvdXJjZSwgJm1fZGVzdHJveUxpc3RlbmVyKTsKK30KKworV2F5bGFuZENvbXBvc2l0
b3I6OkJ1ZmZlcjo6fkJ1ZmZlcigpCit7CisgICAgd2xfbGlzdF9yZW1vdmUoJm1fZGVzdHJveUxp
c3RlbmVyLmxpbmspOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmRlc3Ry
b3lMaXN0ZW5lckNhbGxiYWNrKHN0cnVjdCB3bF9saXN0ZW5lciogbGlzdGVuZXIsIHZvaWQqKQor
eworICAgIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIqIGJ1ZmZlcjsKKyAgICBidWZmZXIgPSB3
bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZlciwgbV9kZXN0cm95TGlzdGVuZXIpOworICAg
IGRlbGV0ZSBidWZmZXI7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dXNl
KCkKK3sKKyAgICBtX2J1c3lDb3VudCsrOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpC
dWZmZXI6OnVudXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudC0tOworICAgIGlmICghbV9idXN5Q291
bnQpCisgICAgICAgIHdsX3Jlc291cmNlX3F1ZXVlX2V2ZW50KG1fcmVzb3VyY2UsIFdMX0JVRkZF
Ul9SRUxFQVNFKTsKK30KKworRUdMSW1hZ2VLSFIgV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6
Y3JlYXRlSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xJbWFnZUtI
Uio+KGVnbENyZWF0ZUltYWdlKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERp
c3BsYXkoKSwgRUdMX05PX0NPTlRFWFQsIEVHTF9XQVlMQU5EX0JVRkZFUl9XTCwgbV9yZXNvdXJj
ZSwgbnVsbHB0cikpOworfQorCitJbnRTaXplIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnNp
emUoKSBjb25zdAoreworICAgIEVHTERpc3BsYXkgZWdsRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsK
KyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIoZWdsRGlzcGxheSwgbV9yZXNvdXJjZSwgRUdMX1dJ
RFRILCAmd2lkdGgpOworICAgIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcihlZ2xEaXNwbGF5LCBtX3Jl
c291cmNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKworICAgIHJldHVybiB7IHdpZHRoLCBoZWln
aHQgfTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OlN1cmZhY2UoKQorICAgIDog
bV9pbWFnZShFR0xfTk9fSU1BR0VfS0hSKQoreworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4
dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xB
TVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNU
KTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6On5TdXJmYWNlKCkKK3sKKyAgICAv
LyBEZXN0cm95IHBlbmRpbmcgZnJhbWUgY2FsbGJhY2tzLgorICAgIGF1dG8gbGlzdCA9IFdURk1v
dmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IGxpc3Qp
CisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3VyY2UpOworCisgICAgaWYgKG1fYnVm
ZmVyKQorICAgICAgICBtX2J1ZmZlci0+dW51c2UoKTsKKworICAgIGlmIChtX2ltYWdlICE9IEVH
TF9OT19JTUFHRV9LSFIpCisgICAgICAgIGVnbERlc3Ryb3lJbWFnZShQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIG1faW1hZ2UpOworCisgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZTo6bWFrZVBlbmRpbmdCdWZmZXJDdXJyZW50KCkKK3sKKyAgICBpZiAobV9wZW5kaW5nQnVm
ZmVyID09IG1fYnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9idWZmZXIpCisg
ICAgICAgIG1fYnVmZmVyLT51bnVzZSgpOworCisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAg
ICAgICAgbV9wZW5kaW5nQnVmZmVyLT51c2UoKTsKKworICAgIG1fYnVmZmVyID0gbV9wZW5kaW5n
QnVmZmVyOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjphdHRhY2hCdWZm
ZXIoc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXIpCit7CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZl
cikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyID0gbnVsbHB0cjsKKworICAgIGlmIChidWZmZXIp
IHsKKyAgICAgICAgYXV0byogY29tcG9zaXRvckJ1ZmZlciA9IFdheWxhbmRDb21wb3NpdG9yOjpC
dWZmZXI6OmdldE9yQ3JlYXRlKGJ1ZmZlcik7CisgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IGNv
bXBvc2l0b3JCdWZmZXItPmNyZWF0ZVdlYWtQdHIoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2F5bGFu
ZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVlc3RGcmFtZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJl
c291cmNlKQoreworICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwg
bnVsbHB0ciwgdGhpcywgW10oc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkgeworICAgICAg
ICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2Uq
Pih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7CisgICAgICAgIGlmIChzaXpl
X3QgaXRlbSA9IHN1cmZhY2UtPm1fZnJhbWVDYWxsYmFja0xpc3QuZmluZChyZXNvdXJjZSkgIT0g
bm90Rm91bmQpCisgICAgICAgICAgICBzdXJmYWNlLT5tX2ZyYW1lQ2FsbGJhY2tMaXN0LnJlbW92
ZShpdGVtKTsKKyAgICB9KTsKKyAgICBtX2ZyYW1lQ2FsbGJhY2tMaXN0LmFwcGVuZChyZXNvdXJj
ZSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnByZXBhcmVUZXh0dXJl
Rm9yUGFpbnRpbmcodW5zaWduZWQmIHRleHR1cmUsIEludFNpemUmIHRleHR1cmVTaXplKQorewor
ICAgIGlmIChtX2ltYWdlID09IEVHTF9OT19JTUFHRV9LSFIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBl
Z2xJbWFnZVRhcmdldFRleHR1cmUyRChHTF9URVhUVVJFXzJELCBtX2ltYWdlKTsKKworICAgIHRl
eHR1cmUgPSBtX3RleHR1cmU7CisgICAgdGV4dHVyZVNpemUgPSBtX2J1ZmZlci0+c2l6ZSgpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpj
b21taXQoKQoreworICAgIEVHTERpc3BsYXkgZWdsRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKyAgICBpZiAobV9pbWFnZSAhPSBFR0xfTk9f
SU1BR0VfS0hSKQorICAgICAgICBlZ2xEZXN0cm95SW1hZ2UoZWdsRGlzcGxheSwgbV9pbWFnZSk7
CisgICAgbV9pbWFnZSA9IG1fcGVuZGluZ0J1ZmZlci0+Y3JlYXRlSW1hZ2UoKTsKKyAgICBpZiAo
bV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQoKTsKKyAgICBpZiAobV93ZWJQYWdlKQorICAgICAg
ICBtX3dlYlBhZ2UtPnNldFZpZXdOZWVkc0Rpc3BsYXkoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBtX3dlYlBhZ2UtPnZpZXdTaXplKCkpKTsKKworICAgIGF1dG8gbGlzdCA9IFdURk1vdmUobV9m
cmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IGxpc3QpIHsKKyAg
ICAgICAgd2xfY2FsbGJhY2tfc2VuZF9kb25lKHJlc291cmNlLCAwKTsKKyAgICAgICAgd2xfcmVz
b3VyY2VfZGVzdHJveShyZXNvdXJjZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc3VyZmFjZV9pbnRlcmZhY2Ugc3VyZmFjZUludGVyZmFj
ZSA9IHsKKyAgICAvLyBkZXN0cm95Q2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwg
c3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkgeworICAgICAgICB3bF9yZXNvdXJjZV9kZXN0
cm95KHJlc291cmNlKTsKKyAgICB9LAorICAgIC8vIGF0dGFjaENhbGxiYWNrCisgICAgW10oc3Ry
dWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1
Y3Qgd2xfcmVzb3VyY2UqIGJ1ZmZlciwgaW50MzJfdCBzeCwgaW50MzJfdCBzeSkgeworICAgICAg
ICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2Uq
Pih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7CisgICAgICAgIGlmICghc3Vy
ZmFjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBFR0xpbnQgZm9ybWF0OworICAg
ICAgICBpZiAoIWVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS5lZ2xEaXNwbGF5KCksIGJ1ZmZlciwgRUdMX1RFWFRVUkVfRk9STUFULCAmZm9ybWF0
KQorICAgICAgICAgICAgfHwgKGZvcm1hdCAhPSBFR0xfVEVYVFVSRV9SR0IgJiYgZm9ybWF0ICE9
IEVHTF9URVhUVVJFX1JHQkEpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN1cmZh
Y2UtPmF0dGFjaEJ1ZmZlcihidWZmZXIpOworICAgIH0sCisgICAgLy8gZGFtYWdlQ2FsbGJhY2sK
KyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgaW50MzJfdCwg
aW50MzJfdCwgaW50MzJfdCwgaW50MzJfdCkgeworICAgIH0sCisgICAgLy8gZnJhbWVDYWxsYmFj
aworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiBy
ZXNvdXJjZSwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19j
YXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0
YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHN0cnVjdCB3bF9yZXNvdXJjZSogY2FsbGJhY2tSZXNvdXJjZSA9IHds
X3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9jYWxsYmFja19pbnRlcmZhY2UsIDEsIGlkKSkK
KyAgICAgICAgICAgIHN1cmZhY2UtPnJlcXVlc3RGcmFtZShjYWxsYmFja1Jlc291cmNlKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7
CisgICAgfSwKKyAgICAvLyBzZXRPcGFxdWVSZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3
bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqKSB7Cisg
ICAgfSwKKyAgICAvLyBzZXRJbnB1dFJlZ2lvbkNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2Ns
aWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHN0cnVjdCB3bF9yZXNvdXJjZSopIHsKKyAgICB9
LAorICAgIC8vIGNvbW1pdENhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50
LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKSB7CisgICAgICAgIGF1dG8qIHN1cmZhY2Ug
PSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dl
dF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdXJmYWNlLT5jb21taXQoKSkKKyAgICAgICAgICAg
IHdsX2Rpc3BsYXlfZmx1c2hfY2xpZW50cyh3bF9jbGllbnRfZ2V0X2Rpc3BsYXkoY2xpZW50KSk7
CisgICAgfSwKKyAgICAvLyBzZXRCdWZmZXJUcmFuc2Zvcm1DYWxsYmFjaworICAgIFtdKHN0cnVj
dCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqLCBpbnQzMl90KSB7CisgICAgfSwKKyAg
ICAvLyBzZXRCdWZmZXJTY2FsZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0
cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QpIHsKKyAgICB9Cit9OworCitzdGF0aWMgY29uc3Qg
c3RydWN0IHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlIGNvbXBvc2l0b3JJbnRlcmZhY2UgPSB7Cisg
ICAgLy8gY3JlYXRlU3VyZmFjZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xp
ZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCB1aW50MzJfdCBpZCkgeworICAgICAg
ICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiBzdXJmYWNlUmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9j
cmVhdGUoY2xpZW50LCAmd2xfc3VyZmFjZV9pbnRlcmZhY2UsIDEsIGlkKSkgeworICAgICAgICAg
ICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHN1cmZhY2VSZXNvdXJjZSwgJnN1cmZh
Y2VJbnRlcmZhY2UsIG5ldyBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSgpLAorICAgICAgICAg
ICAgICAgIFtdKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJm
YWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgc3VyZmFjZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19tZW1vcnkoY2xpZW50KTsKKyAgICB9
LAorICAgIC8vIGNyZWF0ZVJlZ2lvbkNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCos
IHN0cnVjdCB3bF9yZXNvdXJjZSosIHVpbnQzMl90KQorICAgIHsKKyAgICB9Cit9OworCitzdGF0
aWMgY29uc3Qgc3RydWN0IHdsX3dlYmtpdGd0a19pbnRlcmZhY2Ugd2Via2l0Z3RrSW50ZXJmYWNl
ID0geworICAgIC8vIGJpbmRTdXJmYWNlVG9QYWdlQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xf
Y2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgc3RydWN0IHdsX3Jlc291cmNl
KiBzdXJmYWNlUmVzb3VyY2UsIHVpbnQzMl90IHBhZ2VJRCkgeworICAgICAgICBhdXRvKiBzdXJm
YWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJj
ZV9nZXRfdXNlcl9kYXRhKHN1cmZhY2VSZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2Up
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byogY29tcG9zaXRvciA9IHN0YXRp
Y19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNv
dXJjZSkpOworICAgICAgICBjb21wb3NpdG9yLT5iaW5kU3VyZmFjZVRvV2ViUGFnZShzdXJmYWNl
LCBwYWdlSUQpOworICAgIH0KK307CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxp
emVFR0woKQoreworICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xD
aGVja1ZlcnNpb24oMSwgNSkpIHsKKyAgICAgICAgZWdsQ3JlYXRlSW1hZ2UgPSByZWludGVycHJl
dF9jYXN0PFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENy
ZWF0ZUltYWdlIikpOworICAgICAgICBlZ2xEZXN0cm95SW1hZ2UgPSByZWludGVycHJldF9jYXN0
PFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xEZXN0cm95
SW1hZ2UiKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgY2hhciogZXh0ZW5zaW9ucyA9
IGVnbFF1ZXJ5U3RyaW5nKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3Bs
YXkoKSwgRUdMX0VYVEVOU0lPTlMpOworICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnMsICJF
R0xfS0hSX2ltYWdlX2Jhc2UiKSkgeworICAgICAgICAgICAgZWdsQ3JlYXRlSW1hZ2UgPSByZWlu
dGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3Mo
ImVnbENyZWF0ZUltYWdlS0hSIikpOworICAgICAgICAgICAgZWdsRGVzdHJveUltYWdlID0gcmVp
bnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVz
cygiZWdsRGVzdHJveUltYWdlS0hSIikpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghZWds
Q3JlYXRlSW1hZ2UgfHwgIWVnbERlc3Ryb3lJbWFnZSkgeworICAgICAgICBXVEZMb2dBbHdheXMo
IldheWxhbmRDb21wb3NpdG9yIHJlcXVpcmVzIGVnbENyZWF0ZUltYWdlIGFuZCBlZ2xEZXN0cm95
SW1hZ2UuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlZ2xJbWFnZVRh
cmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRV
UkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJE
T0VTIikpOworICAgIGlmICghZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQpIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBnbEVHTEltYWdlVGFyZ2V0VGV4
dHVyZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbFF1ZXJ5V2F5
bGFuZEJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMUVVFUllXQVlMQU5EQlVGRkVSV0w+
KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeVdheWxhbmRCdWZmZXJXTCIpKTsKKyAgICBpZiAo
IWVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRD
b21wb3NpdG9yIHJlcXVpcmVzIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlci4iKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbEJpbmRXYXlsYW5kRGlzcGxheSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZORUdMQklORFdBWUxBTkRESVNQTEFZV0w+KGVnbEdldFByb2NBZGRyZXNzKCJl
Z2xCaW5kV2F5bGFuZERpc3BsYXlXTCIpKTsKKyAgICBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTD4oZWdsR2V0UHJv
Y0FkZHJlc3MoImVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wiKSk7CisgICAgaWYgKCFlZ2xCaW5k
V2F5bGFuZERpc3BsYXkgfHwgIWVnbFVuYmluZFdheWxhbmREaXNwbGF5KSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3IgcmVxdWlyZXMgZWdsQmluZFdheWxhbmREaXNw
bGF5V0wgYW5kIGVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wuIik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBtX2VnbENvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNj
cmVlbkNvbnRleHQoKTsKKyAgICBpZiAoIW1fZWdsQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFtX2VnbENvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIEdTb3VyY2Ugc291cmNlOworICAgIGdwb2ludGVyIGZkVGFnOworICAgIHN0cnVj
dCB3bF9kaXNwbGF5KiBkaXNwbGF5OworfSBXYXlsYW5kTG9vcFNvdXJjZTsKKworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHdheWxhbmRMb29wU291cmNlQ29uZGl0aW9uID0gR19JT19JTiB8IEdfSU9f
SFVQIHwgR19JT19FUlI7CisKK3N0YXRpYyBHU291cmNlRnVuY3Mgd2F5bGFuZExvb3BTb3VyY2VG
dW5jdGlvbnMgPSB7CisgICAgLy8gcHJlcGFyZQorICAgIFtdKEdTb3VyY2UgKnNvdXJjZSwgaW50
ICp0aW1lb3V0KSAtPiBnYm9vbGVhbiB7CisgICAgICAgICp0aW1lb3V0ID0gLTE7CisgICAgICAg
IGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3VyY2Uq
Pihzb3VyY2UpOworICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoX2NsaWVudHMod2xMb29wU291cmNl
LT5kaXNwbGF5KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0sCisgICAgbnVsbHB0ciwg
Ly8gY2hlY2sKKyAgICAvLyBkaXNwYXRjaAorICAgIFtdKEdTb3VyY2UqIHNvdXJjZSwgR1NvdXJj
ZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAg
IGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3VyY2Uq
Pihzb3VyY2UpOworICAgICAgICB1bnNpZ25lZCBldmVudHMgPSBnX3NvdXJjZV9xdWVyeV91bml4
X2ZkKHNvdXJjZSwgd2xMb29wU291cmNlLT5mZFRhZykgJiB3YXlsYW5kTG9vcFNvdXJjZUNvbmRp
dGlvbjsKKyAgICAgICAgaWYgKGV2ZW50cyAmIEdfSU9fSFVQIHx8IGV2ZW50cyAmIEdfSU9fRVJS
KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmQgRGlzcGxheSBFdmVudCBTb3Vy
Y2U6IGxvc3QgY29ubmVjdGlvbiB0byBuZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIik7CisgICAg
ICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGV2ZW50cyAmIEdfSU9fSU4pCisgICAgICAgICAgICB3bF9ldmVudF9sb29wX2Rpc3BhdGNoKHds
X2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3Aod2xMb29wU291cmNlLT5kaXNwbGF5KSwgMCk7CisgICAg
ICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8vIGZp
bmFsaXplCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjaworICAgIG51bGxwdHIsIC8v
IGNsb3N1cmVfbWFyc2hhbGwKK307CisKK3N0YXRpYyBHUmVmUHRyPEdTb3VyY2U+IGNyZWF0ZVdh
eWxhbmRMb29wU291cmNlKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQoreworICAgIEdSZWZQ
dHI8R1NvdXJjZT4gc291cmNlID0gYWRvcHRHUmVmKGdfc291cmNlX25ldygmd2F5bGFuZExvb3BT
b3VyY2VGdW5jdGlvbnMsIHNpemVvZihXYXlsYW5kTG9vcFNvdXJjZSkpKTsKKyAgICBnX3NvdXJj
ZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGRpc3Bs
YXkgZXZlbnQgc291cmNlIik7CisgICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KHNvdXJjZS5nZXQo
KSwgR19QUklPUklUWV9ERUZBVUxUICsgMSk7CisKKyAgICBhdXRvKiB3bExvb3BTb3VyY2UgPSBy
ZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291cmNlKj4oc291cmNlLmdldCgpKTsKKyAgICB3
bExvb3BTb3VyY2UtPmRpc3BsYXkgPSBkaXNwbGF5OworICAgIHdsTG9vcFNvdXJjZS0+ZmRUYWcg
PSBnX3NvdXJjZV9hZGRfdW5peF9mZChzb3VyY2UuZ2V0KCksIHdsX2V2ZW50X2xvb3BfZ2V0X2Zk
KHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AoZGlzcGxheSkpLCBzdGF0aWNfY2FzdDxHSU9Db25k
aXRpb24+KHdheWxhbmRMb29wU291cmNlQ29uZGl0aW9uKSk7CisgICAgZ19zb3VyY2VfYXR0YWNo
KHNvdXJjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gc291cmNlOworfQorCitXYXls
YW5kQ29tcG9zaXRvcjo6V2F5bGFuZENvbXBvc2l0b3IoKQoreworICAgIFdsVW5pcXVlUHRyPHN0
cnVjdCB3bF9kaXNwbGF5PiBkaXNwbGF5KHdsX2Rpc3BsYXlfY3JlYXRlKCkpOworICAgIGlmICgh
ZGlzcGxheSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0
b3IgY291bGQgbm90IGNyZWF0ZSBkaXNwbGF5IG9iamVjdCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gIndlYmtpdGd0ay13YXlsYW5kLWNvbXBv
c2l0b3ItIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBpZiAod2xfZGlzcGxh
eV9hZGRfc29ja2V0KGRpc3BsYXkuZ2V0KCksIGRpc3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkpID09
IC0xKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBj
b3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgc29ja2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiBjb21wb3NpdG9yR2xvYmFsKHds
X2dsb2JhbF9jcmVhdGUoZGlzcGxheS5nZXQoKSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCB3
bF9jb21wb3NpdG9yX2ludGVyZmFjZS52ZXJzaW9uLCB0aGlzLAorICAgICAgICBbXShzdHJ1Y3Qg
d2xfY2xpZW50KiBjbGllbnQsIHZvaWQqIGRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90
IGlkKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9IHds
X3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgc3RkOjpt
aW4oc3RhdGljX2Nhc3Q8aW50Pih2ZXJzaW9uKSwgMyksIGlkKSkKKyAgICAgICAgICAgICAgICB3
bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsICZjb21wb3NpdG9ySW50ZXJm
YWNlLCBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KGRhdGEpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19tZW1vcnko
Y2xpZW50KTsKKyAgICAgICAgfSkpOworICAgIGlmICghY29tcG9zaXRvckdsb2JhbCkgeworICAg
ICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IHJl
Z2lzdGVyIGNvbXBvc2l0b3IgZ2xvYmFsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiB3ZWJraXRndGtHbG9iYWwod2xfZ2xvYmFs
X2NyZWF0ZShkaXNwbGF5LmdldCgpLCAmd2xfd2Via2l0Z3RrX2ludGVyZmFjZSwgMSwgdGhpcywK
KyAgICAgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCB2b2lkKiBkYXRhLCB1aW50MzJf
dCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkgeworICAgICAgICAgICAgaWYgKHN0cnVjdCB3bF9yZXNv
dXJjZSogcmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfd2Via2l0Z3Rr
X2ludGVyZmFjZSwgMSwgaWQpKQorICAgICAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9pbXBs
ZW1lbnRhdGlvbihyZXNvdXJjZSwgJndlYmtpdGd0a0ludGVyZmFjZSwgc3RhdGljX2Nhc3Q8V2F5
bGFuZENvbXBvc2l0b3IqPihkYXRhKSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgICAgIH0p
KTsKKyAgICBpZiAoIXdlYmtpdGd0a0dsb2JhbCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5l
c3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IHJlZ2lzdGVyIHdlYmtpdGd0ayBnbG9i
YWwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW5pdGlhbGl6ZUVHTCgp
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3Vs
ZCBub3QgaW5pdGlhbGl6ZSBFR0wiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghZWdsQmluZFdheWxhbmREaXNwbGF5KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
LmVnbERpc3BsYXkoKSwgZGlzcGxheS5nZXQoKSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJO
ZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBiaW5kIG5lc3RlZCBkaXNwbGF5Iik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Rpc3BsYXlOYW1lID0gV1RGTW92ZShk
aXNwbGF5TmFtZSk7CisgICAgbV9kaXNwbGF5ID0gV1RGTW92ZShkaXNwbGF5KTsKKyAgICBtX2Nv
bXBvc2l0b3JHbG9iYWwgPSBXVEZNb3ZlKGNvbXBvc2l0b3JHbG9iYWwpOworICAgIG1fd2Via2l0
Z3RrR2xvYmFsID0gV1RGTW92ZSh3ZWJraXRndGtHbG9iYWwpOworICAgIG1fZXZlbnRTb3VyY2Ug
PSBjcmVhdGVXYXlsYW5kTG9vcFNvdXJjZShtX2Rpc3BsYXkuZ2V0KCkpOworfQorCitib29sIFdh
eWxhbmRDb21wb3NpdG9yOjpnZXRUZXh0dXJlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdW5zaWdu
ZWQmIHRleHR1cmUsIEludFNpemUmIHRleHR1cmVTaXplKQoreworICAgIGlmIChhdXRvKiBzdXJm
YWNlID0gbV9wYWdlTWFwLmdldCgmd2ViUGFnZSkpCisgICAgICAgIHJldHVybiBzdXJmYWNlLT5w
cmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKHRleHR1cmUsIHRleHR1cmVTaXplKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmJpbmRTdXJmYWNlVG9XZWJQ
YWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKiBzdXJmYWNlLCB1aW50NjRfdCBwYWdlSUQp
Cit7CisgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8q
IHBhZ2UgOiBtX3BhZ2VNYXAua2V5cygpKSB7CisgICAgICAgIGlmIChwYWdlLT5wYWdlSUQoKSA9
PSBwYWdlSUQpIHsKKyAgICAgICAgICAgIHdlYlBhZ2UgPSBwYWdlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdXJmYWNlLT5zZXRXZWJQYWdlKHdlYlBhZ2UpOworICAgIG1fcGFnZU1hcC5zZXQo
d2ViUGFnZSwgc3VyZmFjZSk7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnJlZ2lzdGVy
V2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgbV9wYWdlTWFwLmFkZCgmd2Vi
UGFnZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OnVucmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sKKyAgICBpZiAoYXV0byogc3VyZmFjZSA9
IG1fcGFnZU1hcC50YWtlKCZ3ZWJQYWdlKSkKKyAgICAgICAgc3VyZmFjZS0+c2V0V2ViUGFnZShu
dWxscHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9S
TShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29t
cG9zaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNzFjNTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21w
b3NpdG9yLmgKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2xVbmlxdWVQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCit0eXBlZGVmIHZvaWQgKkVHTEltYWdlS0hSOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBHTENvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdheWxhbmRDb21wb3NpdG9yIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXYXlsYW5kQ29tcG9zaXRvcik7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVy
RGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9yPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2F5bGFu
ZENvbXBvc2l0b3ImIHNpbmdsZXRvbigpOworCisgICAgY2xhc3MgQnVmZmVyIHsKKyAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQnVmZmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgQnVmZmVyKiBnZXRPckNyZWF0ZShzdHJ1Y3Qgd2xf
cmVzb3VyY2UqKTsKKyAgICAgICAgfkJ1ZmZlcigpOworCisgICAgICAgIHZvaWQgdXNlKCk7Cisg
ICAgICAgIHZvaWQgdW51c2UoKTsKKworICAgICAgICBFR0xJbWFnZUtIUiBjcmVhdGVJbWFnZSgp
IGNvbnN0OworICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKworICAgICAg
ICBXZWFrUHRyPEJ1ZmZlcj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBCdWZmZXIoc3Ry
dWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lMaXN0ZW5lckNh
bGxiYWNrKHN0cnVjdCB3bF9saXN0ZW5lciosIHZvaWQqKTsKKworICAgICAgICBzdHJ1Y3Qgd2xf
cmVzb3VyY2UqIG1fcmVzb3VyY2UgeyBudWxscHRyIH07CisgICAgICAgIHN0cnVjdCB3bF9saXN0
ZW5lciBtX2Rlc3Ryb3lMaXN0ZW5lcjsKKyAgICAgICAgdWludDMyX3QgbV9idXN5Q291bnQgeyAw
IH07CisgICAgICAgIFdlYWtQdHJGYWN0b3J5PEJ1ZmZlcj4gbV93ZWFrUHRyRmFjdG9yeTsKKyAg
ICB9OworCisgICAgY2xhc3MgU3VyZmFjZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN1cmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAg
IFN1cmZhY2UoKTsKKyAgICAgICAgflN1cmZhY2UoKTsKKworICAgICAgICB2b2lkIGF0dGFjaEJ1
ZmZlcihzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWUoc3Ry
dWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIGJvb2wgY29tbWl0KCk7CisKKyAgICAgICAgdm9p
ZCBzZXRXZWJQYWdlKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkgeyBtX3dlYlBhZ2UgPSB3ZWJQYWdl
OyB9CisgICAgICAgIGJvb2wgcHJlcGFyZVRleHR1cmVGb3JQYWludGluZyh1bnNpZ25lZCYsIFdl
YkNvcmU6OkludFNpemUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgbWFrZVBlbmRp
bmdCdWZmZXJDdXJyZW50KCk7CisKKyAgICAgICAgV2Vha1B0cjxCdWZmZXI+IG1fYnVmZmVyOwor
ICAgICAgICBXZWFrUHRyPEJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOworICAgICAgICB1bnNpZ25l
ZCBtX3RleHR1cmU7CisgICAgICAgIEVHTEltYWdlS0hSIG1faW1hZ2U7CisgICAgICAgIFZlY3Rv
cjx3bF9yZXNvdXJjZSo+IG1fZnJhbWVDYWxsYmFja0xpc3Q7CisgICAgICAgIFdlYlBhZ2VQcm94
eSogbV93ZWJQYWdlIHsgbnVsbHB0ciB9OworICAgIH07CisKKyAgICBib29sIGlzUnVubmluZygp
IGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CisgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQorCisgICAgdm9pZCBiaW5kU3VyZmFjZVRv
V2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2Vi
UGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQ
cm94eSYpOworCisgICAgYm9vbCBnZXRUZXh0dXJlKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkJiwg
V2ViQ29yZTo6SW50U2l6ZSYpOworCitwcml2YXRlOgorICAgIFdheWxhbmRDb21wb3NpdG9yKCk7
CisKKyAgICBib29sIGluaXRpYWxpemVFR0woKTsKKworICAgIFN0cmluZyBtX2Rpc3BsYXlOYW1l
OworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9kaXNwbGF5PiBtX2Rpc3BsYXk7
CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX2dsb2JhbD4gbV9jb21wb3NpdG9y
R2xvYmFsOworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IG1fd2Vi
a2l0Z3RrR2xvYmFsOworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9ldmVudFNvdXJjZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2VnbENvbnRleHQ7CisgICAgSGFz
aE1hcDxXZWJQYWdlUHJveHkqLCBTdXJmYWNlKj4gbV9wYWdlTWFwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcAppbmRleCBhZTE0
ZTllLi4zZjA1ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlByZWZlcmVuY2VzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlByZWZlcmVuY2VzR3RrLmNwcApAQCAtMjcsMzEgKzI3LDUyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1ZGUgIldheWxhbmRDb21w
b3NpdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgorI2Vu
ZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQogewotI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxh
bmQpIHsKLSAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVuZGVyIFdh
eWxhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKLSAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoZmFsc2UpOwotICAgIH0KLSNlbmRpZgotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19USFJFQURFRCkKLSAgICBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsK
LSNlbmRpZgogI2lmICFFTkFCTEUoT1BFTkdMKQogICAgIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKGZhbHNlKTsKICNlbHNlCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworI2Vsc2UKICAgICBp
ZiAoZ2V0ZW52KCJXRUJLSVRfRk9SQ0VfQ09NUE9TSVRJTkdfTU9ERSIpKQogICAgICAgICBzZXRG
b3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKLSAgICBpZiAoZ2V0ZW52KCJXRUJLSVRfRElTQUJM
RV9DT01QT1NJVElOR19NT0RFIikpCisjZW5kaWYKKworICAgIGlmIChnZXRlbnYoIldFQktJVF9E
SVNBQkxFX0NPTVBPU0lUSU5HX01PREUiKSkgewogICAgICAgICBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7Cisg
ICAgICAgIGF1dG8mIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKKyAgICAgICAgT3B0aW9uYWw8aW50PiBkYW1h
Z2VCYXNlOworICAgICAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRlKCkgfHwgIWRp
c3BsYXkuc3VwcG9ydHNYRGFtYWdlKGRhbWFnZUJhc2UpKQorICAgICAgICAgICAgc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIH0KICNlbmRpZgorCisjaWYgUExB
VEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCku
dHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAgICAgICBpZiAo
IVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmcoKSkKKyAgICAgICAgICAg
IHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICB9CisjZW5kaWYK
KworI2VuZGlmIC8vIEVOQUJMRShPUEVOR0wpCiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBs
YXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzM2ZjYy4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWERhbWFnZU5vdGlmaWVyLmgiCi0KLSNpZiBQTEFURk9S
TShYMTEpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgotI2luY2x1
ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgotI2lu
Y2x1ZGUgPGdkay9nZGt4Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7Ci0K
LVhEYW1hZ2VOb3RpZmllciYgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+IG5vdGlmaWVyOwotICAgIHJldHVy
biBub3RpZmllcjsKLX0KLQotWERhbWFnZU5vdGlmaWVyOjpYRGFtYWdlTm90aWZpZXIoKQotewot
ICAgIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkpLnN1cHBvcnRzWERhbWFnZShzX2RhbWFnZUV2ZW50QmFzZSk7Ci19Ci0KLXZvaWQg
WERhbWFnZU5vdGlmaWVyOjphZGQoRGFtYWdlIGRhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
JiYgbm90aWZ5RnVuY3Rpb24pCi17Ci0gICAgaWYgKCFzX2RhbWFnZUV2ZW50QmFzZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAg
ICAgZ2RrX3dpbmRvd19hZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRmls
dGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOwotICAgIG1fbm90aWZ5RnVuY3Rp
b25zLmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsKLX0KLQotdm9pZCBYRGFt
YWdlTm90aWZpZXI6OnJlbW92ZShEYW1hZ2UgZGFtYWdlKQotewotICAgIGlmICghc19kYW1hZ2VF
dmVudEJhc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbm90aWZ5RnVuY3Rpb25zLnJlbW92
ZShkYW1hZ2UpOwotICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IGdka193aW5kb3dfcmVtb3ZlX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9jYXN0PEdka0Zp
bHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLX0KLQotR2RrRmlsdGVyUmV0
dXJuIFhEYW1hZ2VOb3RpZmllcjo6ZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCogZXZlbnQs
IEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKLXsKLSAgICBBU1NFUlQoc19k
YW1hZ2VFdmVudEJhc2UpOwotICAgIGF1dG8qIHhFdmVudCA9IHN0YXRpY19jYXN0PFhFdmVudCo+
KGV2ZW50KTsKLSAgICBpZiAoeEV2ZW50LT50eXBlICE9IHNfZGFtYWdlRXZlbnRCYXNlLnZhbHVl
KCkgKyBYRGFtYWdlTm90aWZ5KQotICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsK
LQotICAgIGF1dG8qIGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxYRGFtYWdlTm90aWZ5
RXZlbnQqPih4RXZlbnQpOwotICAgIGlmIChub3RpZmllci0+bm90aWZ5KGRhbWFnZUV2ZW50LT5k
YW1hZ2UpKSB7Ci0gICAgICAgIFhEYW1hZ2VTdWJ0cmFjdCh4RXZlbnQtPnhhbnkuZGlzcGxheSwg
ZGFtYWdlRXZlbnQtPmRhbWFnZSwgTm9uZSwgTm9uZSk7Ci0gICAgICAgIHJldHVybiBHREtfRklM
VEVSX1JFTU9WRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsKLX0K
LQotYm9vbCBYRGFtYWdlTm90aWZpZXI6Om5vdGlmeShEYW1hZ2UgZGFtYWdlKSBjb25zdAotewot
ICAgIGlmIChjb25zdCBhdXRvJiBub3RpZnlGdW5jdGlvbiA9IG1fbm90aWZ5RnVuY3Rpb25zLmdl
dChkYW1hZ2UpKSB7Ci0gICAgICAgIG5vdGlmeUZ1bmN0aW9uKCk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MzM0Y2MyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFn
ZU5vdGlmaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgUExBVEZPUk0oWDExKQotCi0jaW5jbHVk
ZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBYRGFtYWdlTm90aWZpZXIgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFhEYW1hZ2VOb3RpZmllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+OwotcHVibGlj
OgotICAgIHN0YXRpYyBYRGFtYWdlTm90aWZpZXImIHNpbmdsZXRvbigpOwotCi0gICAgdm9pZCBh
ZGQoRGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCByZW1vdmUoRGFt
YWdlKTsKLQotcHJpdmF0ZToKLSAgICBYRGFtYWdlTm90aWZpZXIoKTsKLQotICAgIHN0YXRpYyBH
ZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCosIEdka0V2ZW50Kiwg
WERhbWFnZU5vdGlmaWVyKik7Ci0gICAgYm9vbCBub3RpZnkoRGFtYWdlKSBjb25zdDsKLQotICAg
IEhhc2hNYXA8RGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fbm90aWZ5RnVuY3Rpb25z
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShYMTEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZGJkMDI4MC4uMzczNWEzNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTMwLDE0ICszMCwxMiBAQAogI2luY2x1ZGUgIlRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1NfVEhSRUFERUQpCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKLSNlbmRp
ZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NCwyNiArNTIsMTggQEAgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpCiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkK
ICAgICA6IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQogICAgICwgbV9jb21wb3Np
dG9yQ2xpZW50KCp0aGlzKQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQot
ICAgICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVh
dGUod2ViUGFnZSkpCi0gICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVh
dGUoJm1fY29tcG9zaXRvckNsaWVudCwgbV9yZWRpcmVjdGVkV2luZG93ID8gbV9yZWRpcmVjdGVk
V2luZG93LT53aW5kb3coKSA6IDApKQotI2Vsc2UKLSAgICAsIG1fY29tcG9zaXRvcihUaHJlYWRl
ZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50KSkKLSNlbmRpZgorICAgICwg
bV9zdXJmYWNlKEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKHdlYlBhZ2UpKQorICAgICwgbV9j
b21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2NvbXBvc2l0b3JDbGllbnQs
IG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+d2luZG93KCkgOiAwKSkKIHsKLSNpZiBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KQotICAg
ICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5w
aXhtYXAoKTsKLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIG1fbGF5ZXJUcmVl
Q29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogfQogCiB2b2lkIFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCkKIHsKICAgICBtX2Nv
bXBvc2l0b3ItPmludmFsaWRhdGUoKTsKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Omlu
dmFsaWRhdGUoKTsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBt
X3JlZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOwotI2VuZGlmCisgICAgbV9zdXJmYWNlID0gbnVs
bHB0cjsKIH0KIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VS
ZXBhaW50KCkKQEAgLTk1LDEyICs4NSw4IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAKIHZv
aWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0g
ICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ct
PnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgpKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNv
bnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQotI2VuZGlmCisg
ICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgpKSkK
KyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFj
ZUlEKCk7CiAKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fY29tcG9zaXRvci0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
bV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwpAQCAtMTE0LDEyICsxMDAsOSBAQCB2b2lk
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKQogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
aXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAg
ICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShzaXplKTsKLSAgICAgICAgbV9sYXllclRyZWVD
b250ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQot
I2VuZGlmCisgICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShzaXplKSkKKyAg
ICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlE
KCk7CisKICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2Uoc2l6ZSk7
CiAgICAgbV9jb21wb3NpdG9yLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoc2l6ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaAppbmRleCBhNDFhMTE2Li44OTBlN2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QgZmluYWwgOiBwdWJsaWMgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0IHsKQEAgLTEwNSw5ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUm
KSBvdmVycmlkZTsKIAogICAgIENvbXBvc2l0b3JDbGllbnQgbV9jb21wb3NpdG9yQ2xpZW50Owot
I2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2luZG93OwotI2VuZGlm
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwogICAg
IFJlZlB0cjxUaHJlYWRlZENvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKICAgICBmbG9hdCBtX2xh
c3RTY2FsZUZhY3RvciB7IDEgfTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3ByZXZTY3JvbGxQ
b3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43MWZkNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXkuaD4KKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRT
dXJmYWNlV2F5bGFuZC5oIgorI2VuZGlmCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRF
X1dJTkRPVykKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VYMTEuaCIKKyNlbmRpZgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0ZDo6dW5p
cXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKFdl
YlBhZ2UmIHdlYlBhZ2UpCit7CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6V2F5bGFuZCkKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OmNy
ZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0g
UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1
cmZhY2VYMTE6OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRyOwor
fQorCitBY2NlbGVyYXRlZFN1cmZhY2U6OkFjY2VsZXJhdGVkU3VyZmFjZShXZWJQYWdlJiB3ZWJQ
YWdlKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3NpemUod2ViUGFnZS5zaXpl
KCkpCit7CisgICAgbV9zaXplLnNjYWxlKG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
K30KKworQWNjZWxlcmF0ZWRTdXJmYWNlOjp+QWNjZWxlcmF0ZWRTdXJmYWNlKCkKK3sKK30KKwor
Ym9vbCBBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorewor
ICAgIEludFNpemUgc2NhbGVkU2l6ZShzaXplKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKG1fd2Vi
UGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBpZiAoc2NhbGVkU2l6ZSA9PSBtX3NpemUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc2l6ZSA9IHNjYWxlZFNpemU7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI4MmMyNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0
ZWRTdXJmYWNlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsK
KworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
Y2NlbGVyYXRlZFN1cmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gY3JlYXRlKFdlYlBh
Z2UmKTsKKyAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZFN1cmZhY2UoKTsKKworICAgIHZpcnR1YWwg
dWludDY0X3Qgd2luZG93KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiAwOyB9OworICAgIHZpcnR1YWwgYm9vbCByZXNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOworCitwcm90ZWN0ZWQ6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNlKFdl
YlBhZ2UmKTsKKworICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKKyAgICBXZWJDb3JlOjpJbnRTaXpl
IG1fc2l6ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRT
dXJmYWNlV2F5bGFuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZm
MGI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFj
Y2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaCIKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNp
bmNsdWRlICJXZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oPgorI2lu
Y2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgZmluYWwgOiBwdWJs
aWMgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHN0
cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5ID0gd2xfZGlzcGxheV9jb25uZWN0KFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgaWYgKCFkaXNwbGF5KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlBs
YXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25uZWN0IHRv
IHRoZSBXYXlsYW5kIGRpc3BsYXk6ICVzIiwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4obmV3IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheShk
aXNwbGF5KSk7CisgICAgfQorCisgICAgdm9pZCBiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qgd2xf
c3VyZmFjZSogc3VyZmFjZSwgV2ViUGFnZSYgcGFnZSkKKyAgICB7CisgICAgICAgIGlmICghbV93
ZWJraXRndGspCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgd2xfd2Via2l0Z3RrX2Jp
bmRfc3VyZmFjZV90b19wYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+
KG1fd2Via2l0Z3RrLmdldCgpKSwgc3VyZmFjZSwgcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIHds
X2Rpc3BsYXlfcm91bmR0cmlwKG1fZGlzcGxheSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdh
eWxhbmRDb21wb3NpdG9yRGlzcGxheShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKKyAgICB7
CisgICAgICAgIGluaXRpYWxpemUoZGlzcGxheSk7CisgICAgICAgIFBsYXRmb3JtRGlzcGxheTo6
c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCp0aGlzKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlZ2lzdHJ5R2xvYmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJlZ2lzdHJ5R2xv
YmFsKGludGVyZmFjZSwgbmFtZSk7CisgICAgICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNl
LCAid2xfd2Via2l0Z3RrIikpCisgICAgICAgICAgICBtX3dlYmtpdGd0ay5yZXNldChzdGF0aWNf
Y2FzdDxzdHJ1Y3Qgd2xfcHJveHkqPih3bF9yZWdpc3RyeV9iaW5kKG1fcmVnaXN0cnkuZ2V0KCks
IG5hbWUsICZ3bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxKSkpOworICAgIH0KKworICAgIFdsVW5p
cXVlUHRyPHN0cnVjdCB3bF9wcm94eT4gbV93ZWJraXRndGs7Cit9OworCitzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4mIHdheWxhbmRDb21wb3NpdG9yRGlz
cGxheSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXk+PiB3YXlsYW5kRGlzcGxheShXYXlsYW5kQ29tcG9zaXRvckRp
c3BsYXk6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gd2F5bGFuZERpc3BsYXk7Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kPiBBY2NlbGVyYXRlZFN1cmZhY2VX
YXlsYW5kOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKK3sKKyAgICByZXR1cm4gd2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5KCkgPyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZD4obmV3IEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQod2ViUGFnZSkpIDogbnVsbHB0cjsK
K30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFu
ZChXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UpCisg
ICAgLCBtX3N1cmZhY2Uod2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCktPmNyZWF0ZVN1cmZhY2Uo
KSkKKyAgICAsIG1fd2luZG93KHdsX2VnbF93aW5kb3dfY3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwg
c3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkp
KSkKK3sKKyAgICB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKS0+YmluZFN1cmZhY2VUb1BhZ2Uo
bV9zdXJmYWNlLmdldCgpLCBtX3dlYlBhZ2UpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXYXls
YW5kOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpCit7CisgICAgd2xfZWdsX3dpbmRvd19k
ZXN0cm95KG1fd2luZG93KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpy
ZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoIUFjY2VsZXJhdGVkU3VyZmFj
ZTo6cmVzaXplKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB3bF9lZ2xfd2lu
ZG93X3Jlc2l6ZShtX3dpbmRvdywgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwg
MCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjNTgxZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRT
dXJmYWNlV2F5bGFuZC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiQWNj
ZWxlcmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvV2xVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC1jb3JlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kIGZpbmFsIDog
cHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNj
ZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZD4g
Y3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpOworCisg
ICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdD4obV93aW5kb3cpOyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpOyB9CisgICAgYm9vbCByZXNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEFj
Y2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoV2ViUGFnZSYpOworCisgICAgV2ViQ29yZTo6V2xVbmlx
dWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBzdHJ1Y3Qgd2xfZWdsX3dp
bmRvdyogbV93aW5kb3cgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU1NTdkOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0
ZWRTdXJmYWNlWDExLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZh
Y2VYMTEuaCIKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorCisjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+
CisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9z
aXRlLmg+CisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0ZDo6
dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VYMTE+IEFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6
Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCit7CisgICAgaWYgKCFkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5zdXBwb3J0c1hDb21w
b3NpdGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VYMTE+KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VYMTEod2Vi
UGFnZSkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OkFjY2VsZXJhdGVkU3VyZmFjZVgx
MShXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UpCisg
ICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkpCit7CisgICAgU2NyZWVuKiBzY3JlZW4gPSBE
ZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7CisKKyAgICBBU1NFUlQoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCkgPT0gbV9kaXNwbGF5KTsKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19zY3JlZW5f
Z2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAgaWYgKCF2aXN1
YWwpCisgICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3Nj
cmVlbl9nZXRfZGVmYXVsdCgpKTsKKworICAgIFhVbmlxdWVDb2xvcm1hcCBjb2xvcm1hcChYQ3Jl
YXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RLX1ZJ
U1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9jTm9uZSkpOworCisgICAgWFNldFdpbmRvd0F0dHJp
YnV0ZXMgd2luZG93QXR0cmlidXRlczsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3Jl
ZGlyZWN0ID0gVHJ1ZTsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3JtYXAu
Z2V0KCk7CisKKyAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVuIHRoZSBk
ZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCisgICAgLy8gU2VlIGh0dHA6Ly9j
Z2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/aWQ9eG9y
Zy1zZXJ2ZXItMS4xNi4wI243MDMuCisgICAgd2luZG93QXR0cmlidXRlcy5ib3JkZXJfcGl4ZWwg
PSAwOworCisgICAgbV9wYXJlbnRXaW5kb3cgPSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwKKyAg
ICAgICAgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksCisgICAgICAgIC0xLCAtMSwgMSwgMSwK
KyAgICAgICAgMCwKKyAgICAgICAgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwKKyAgICAg
ICAgSW5wdXRPdXRwdXQsCisgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAorICAg
ICAgICBDV092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKKyAg
ICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3Bh
cmVudFdpbmRvdy5nZXQoKSk7CisKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBT
dHJ1Y3R1cmVOb3RpZnlNYXNrOworICAgIHdpbmRvd0F0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJl
Y3QgPSBGYWxzZTsKKworICAgIC8vIENyZWF0ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgxIHNp
bmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KKyAgICBtX3dpbmRv
dyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LAorICAgICAgICBtX3BhcmVudFdpbmRvdy5nZXQo
KSwKKyAgICAgICAgMCwgMCwKKyAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLAor
ICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpLAorICAgICAgICAwLAorICAgICAg
ICBDb3B5RnJvbVBhcmVudCwKKyAgICAgICAgSW5wdXRPdXRwdXQsCisgICAgICAgIENvcHlGcm9t
UGFyZW50LAorICAgICAgICBDV0V2ZW50TWFzaywKKyAgICAgICAgJndpbmRvd0F0dHJpYnV0ZXMp
OworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7CisKKyAgICB3aGls
ZSAoMSkgeworICAgICAgICBYRXZlbnQgZXZlbnQ7CisgICAgICAgIFhXaW5kb3dFdmVudChtX2Rp
c3BsYXksIG1fd2luZG93LmdldCgpLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmZXZlbnQpOworICAg
ICAgICBpZiAoZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQueG1hcC53aW5kb3cgPT0g
bV93aW5kb3cuZ2V0KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgWFNlbGVjdElu
cHV0KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNrKTsKKyAgICBYQ29tcG9z
aXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgQ29tcG9zaXRlUmVk
aXJlY3RNYW51YWwpOworICAgIG1fcGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAo
bV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVgxMTo6
fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSgpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheSk7CisgICAg
QVNTRVJUKG1fd2luZG93KTsKKyAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOworCisgICAgLy8g
RXhwbGljaXRseSByZXNldCB0aGVzZSBiZWNhdXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBl
bnMgaW4gdGhpcyBvcmRlci4KKyAgICBtX3dpbmRvdy5yZXNldCgpOworICAgIG1fcGFyZW50V2lu
ZG93LnJlc2V0KCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpyZXNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoIUFjY2VsZXJhdGVkU3VyZmFjZTo6cmVzaXpl
KHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBSZXNpemUgdGhlIHdpbmRv
dyB0byBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdp
bmRvd3MuCisgICAgWFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBzdGQ6
Om1heCgxLCBtX3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSkpOwor
ICAgIFhGbHVzaChtX2Rpc3BsYXkpOworCisgICAgLy8gUmVsZWFzZSB0aGUgcHJldmlvdXMgcGl4
bWFwIGxhdGVyIHRvIGdpdmUgc29tZSB0aW1lIHRvIHRoZSBVSSBwcm9jZXNzIHRvIHVwZGF0ZS4K
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6c2Vjb25kcyg1
KSwgW3BpeG1hcCA9IFdURk1vdmUobV9waXhtYXApXSB7IH0pOworICAgIG1fcGl4bWFwID0gWENv
bXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3MmQ1MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRT
dXJmYWNlWDExLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
CisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1hV
bmlxdWVSZXNvdXJjZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKK3R5
cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQWNjZWxl
cmF0ZWRTdXJmYWNlWDExIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlWDExKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVy
YXRlZFN1cmZhY2VYMTE+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFj
ZVgxMSgpOworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV93aW5kb3cuZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BpeG1hcC5nZXQoKTsgfQorICAgIGJvb2wgcmVzaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZh
Y2VYMTEoV2ViUGFnZSYpOworCisgICAgRGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9Owor
ICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CisgICAgV2ViQ29yZTo6WFVuaXF1
ZVdpbmRvdyBtX3BhcmVudFdpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4
bWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDlhMDkyZWQu
LjJmY2VjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdM
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNDYsMjAgKzQ3LDggQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQogI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KLSNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotI2RlZmlu
ZSBSZWdpb24gWFJlZ2lvbgotI2RlZmluZSBGb250IFhGb250Ci0jZGVmaW5lIEN1cnNvciBYQ3Vy
c29yCi0jZGVmaW5lIFNjcmVlbiBYU2NyZWVuCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNlbmRp
ZgotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0jaW5jbHVkZSAiUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTM3LDkgKzEyNiw3IEBA
IFJlZjxMYXllclRyZWVIb3N0R3RrPiBMYXllclRyZWVIb3N0R3RrOjpjcmVhdGUoV2ViUGFnZSYg
d2ViUGFnZSkKIAogTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlJiB3
ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQotI2lmIFVTRShSRURJUkVDVEVE
X1hDT01QT1NJVEVfV0lORE9XKQotICAgICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpjcmVhdGUod2ViUGFnZSkpCi0jZW5kaWYKKyAgICAsIG1fc3VyZmFj
ZShBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZSh3ZWJQYWdlKSkKICAgICAsIG1fcmVuZGVyRnJh
bWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSwgdGhp
cykpCiB7CiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NM
YXllckZhY3RvcnkoKSwgKnRoaXMpOwpAQCAtMTY3LDI5ICsxNTQsMjIgQEAgTGF5ZXJUcmVlSG9z
dEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlJiB3ZWJQYWdlKQogICAgIG1fcm9vdExheWVy
LT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSNpZiBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7
CisgICAgaWYgKG1fc3VyZmFjZSkgewogICAgICAgICBjcmVhdGVUZXh0dXJlTWFwcGVyKCk7Ci0g
ICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ct
PnBpeG1hcCgpOworICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJm
YWNlLT5zdXJmYWNlSUQoKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogYm9vbCBMYXllclRyZWVIb3N0
R3RrOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQotICAgIHVpbnQ2NF90IG5hdGl2ZUhhbmRsZSA9IG1fcmVkaXJlY3RlZFdpbmRv
dyA/IG1fcmVkaXJlY3RlZFdpbmRvdy0+d2luZG93KCkgOiBtX2xheWVyVHJlZUNvbnRleHQuY29u
dGV4dElEOwotI2Vsc2UKLSAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBtX2xheWVyVHJlZUNv
bnRleHQuY29udGV4dElEOwotI2VuZGlmCi0KKyAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBt
X3N1cmZhY2UgPyBtX3N1cmZhY2UtPndpbmRvdygpIDogbV9sYXllclRyZWVDb250ZXh0LmNvbnRl
eHRJRDsKICAgICBpZiAoIW5hdGl2ZUhhbmRsZSkgewogICAgICAgICBtX2NvbnRleHQgPSBudWxs
cHRyOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnRleHQp
IHsKLSAgICAgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93
KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5kb3dUeXBlPihuYXRpdmVIYW5kbGUpLCBHTENv
bnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6
OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5
cGU+KG5hdGl2ZUhhbmRsZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21w
b3NpdGluZygpKTsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtMjI5LDkgKzIwOSw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
aW52YWxpZGF0ZSgpCiAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICBMYXllclRyZWVIb3N0
OjppbnZhbGlkYXRlKCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
LSAgICBtX3JlZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOwotI2VuZGlmCisgICAgbV9zdXJmYWNl
ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROb25Db21wb3NpdGVk
Q29udGVudHNOZWVkRGlzcGxheSgpCkBAIC0yNzEsMjQgKzI0OSwxNiBAQCB2b2lkIExheWVyVHJl
ZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRS
ZWN0KDAsIG9sZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQo
KSAtIG9sZFNpemUuaGVpZ2h0KCkpKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PnNldE5lZWRzRGlzcGxheSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBtX3JlZGlyZWN0ZWRX
aW5kb3ctPnJlc2l6ZShuZXdTaXplKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRl
eHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQotI2VuZGlmCisgICAg
aWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShuZXdTaXplKSkKKyAgICAgICAgbV9s
YXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7CiAKICAg
ICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXplKTsKIH0KIAogdm9pZCBMYXllclRy
ZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotI2lmIFVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cp
IHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSk7
Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5k
b3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJm
YWNlLT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4
dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgLy8gT3RoZXIgbGF5
ZXJzIGxlYXJuIG9mIHRoZSBzY2FsZSBmYWN0b3IgY2hhbmdlIHZpYSBXZWJQYWdlOjpzZXREZXZp
Y2VTY2FsZUZhY3Rvci4KICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCBkNjlkZTk3Li40
NDc0NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c7CitjbGFzcyBBY2Nl
bGVyYXRlZFN1cmZhY2U7CiAKIGNsYXNzIExheWVyVHJlZUhvc3RHdGsgZmluYWwgOiBwdWJsaWMg
TGF5ZXJUcmVlSG9zdCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CkBA
IC0xMDksOSArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpHTENvbnRleHQ+IG1fY29udGV4dDsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtX3NjYWxlTWF0cml4OwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRp
cmVjdGVkV2luZG93OwotI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3Vy
ZmFjZT4gbV9zdXJmYWNlOwogICAgIFJlbmRlckZyYW1lU2NoZWR1bGVyIG1fcmVuZGVyRnJhbWVT
Y2hlZHVsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjMyYWUyLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3cuaCIKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5WDExLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9u
cy9YY29tcG9zaXRlLmg+Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQotewotICAgIGlmICgh
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkuc3VwcG9ydHNYQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+KG5ldyBS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyh3ZWJQYWdlKSk7Ci19Ci0KLVJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJiB3ZWJQYWdl
KQotICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCi0gICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZl
KCkpCi0gICAgLCBtX3NpemUod2ViUGFnZS5zaXplKCkpCi17Ci0gICAgbV9zaXplLnNjYWxlKG1f
d2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLQotICAgIFNjcmVlbiogc2NyZWVuID0gRGVm
YXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOwotCi0gICAgQVNTRVJUKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpID09IG1fZGlzcGxheSk7Ci0gICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dl
dF9yZ2JhX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIGlmICghdmlzdWFs
KQotICAgICAgICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3Jl
ZW5fZ2V0X2RlZmF1bHQoKSk7Ci0KLSAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0
ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNV
QUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpKTsKLQotICAgIFhTZXRXaW5kb3dBdHRyaWJ1
dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRp
cmVjdCA9IFRydWU7Ci0gICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwLmdl
dCgpOwotCi0gICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVw
dGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgotICAgIC8vIFNlZSBodHRwOi8vY2dp
dC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmct
c2VydmVyLTEuMTYuMCNuNzAzLgotICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0g
MDsKLQotICAgIG1fcGFyZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0gICAg
ICAgIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLAotICAgICAgICAtMSwgLTEsIDEsIDEsCi0g
ICAgICAgIDAsCi0gICAgICAgIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksCi0gICAgICAg
IElucHV0T3V0cHV0LAotICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKLSAgICAg
ICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCi0gICAg
ICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9wYXJl
bnRXaW5kb3cuZ2V0KCkpOwotCi0gICAgd2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0gU3Ry
dWN0dXJlTm90aWZ5TWFzazsKLSAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0
ID0gRmFsc2U7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5j
ZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAgbV93aW5kb3cg
PSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwKLSAgICAgICAgbV9wYXJlbnRXaW5kb3cuZ2V0KCks
Ci0gICAgICAgIDAsIDAsCi0gICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwKLSAg
ICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKLSAgICAgICAgMCwKLSAgICAgICAg
Q29weUZyb21QYXJlbnQsCi0gICAgICAgIElucHV0T3V0cHV0LAotICAgICAgICBDb3B5RnJvbVBh
cmVudCwKLSAgICAgICAgQ1dFdmVudE1hc2ssCi0gICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsK
LSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwotCi0gICAgd2hpbGUg
KDEpIHsKLSAgICAgICAgWEV2ZW50IGV2ZW50OwotICAgICAgICBYV2luZG93RXZlbnQobV9kaXNw
bGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKLSAgICAg
ICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1f
d2luZG93LmdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFhTZWxlY3RJbnB1
dChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBOb0V2ZW50TWFzayk7Ci0gICAgWENvbXBvc2l0
ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIENvbXBvc2l0ZVJlZGly
ZWN0TWFudWFsKTsKLSAgICBtX3BpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1f
ZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwotfQotCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKLXsKLSAgICBBU1NFUlQobV9kaXNwbGF5
KTsKLSAgICBBU1NFUlQobV93aW5kb3cpOwotICAgIEFTU0VSVChtX3BhcmVudFdpbmRvdyk7Ci0K
LSAgICAvLyBFeHBsaWNpdGx5IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0byBlbnN1cmUg
aXQgaGFwcGVucyBpbiB0aGlzIG9yZGVyLgotICAgIG1fd2luZG93LnJlc2V0KCk7Ci0gICAgbV9w
YXJlbnRXaW5kb3cucmVzZXQoKTsKLX0KLQotdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgSW50U2l6ZSBzY2FsZWRTaXpl
KHNpemUpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9y
KCkpOwotICAgIGlmIChzY2FsZWRTaXplID09IG1fc2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zaXplID0gc2NhbGVkU2l6ZTsKLQotICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0
IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4K
LSAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEs
IG1fc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSk7Ci0gICAgWEZs
dXNoKG1fZGlzcGxheSk7Ci0KLSAgICAvLyBSZWxlYXNlIHRoZSBwcmV2aW91cyBwaXhtYXAgbGF0
ZXIgdG8gZ2l2ZSBzb21lIHRpbWUgdG8gdGhlIFVJIHByb2Nlc3MgdG8gdXBkYXRlLgotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpLCBbcGl4
bWFwID0gV1RGTW92ZShtX3BpeG1hcCldIHsgfSk7Ci0gICAgbV9waXhtYXAgPSBYQ29tcG9zaXRl
TmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg0YTU0ZDkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNv
dXJjZS5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi10eXBlZGVmIHN0cnVjdCBf
WERpc3BsYXkgRGlzcGxheTsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7Ci10eXBlZGVm
IHVuc2lnbmVkIGxvbmcgV2luZG93OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
UGFnZTsKLQotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKFdlYlBhZ2UmKTsKLSAgICB+UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3coKTsKLQotICAgIFdpbmRvdyB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dp
bmRvdy5nZXQoKTsgfQotICAgIFBpeG1hcCBwaXhtYXAoKSBjb25zdCB7IHJldHVybiBtX3BpeG1h
cC5nZXQoKTsgfQotICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLQot
cHJpdmF0ZToKLSAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJik7Ci0KLSAg
ICBXZWJQYWdlJiBtX3dlYlBhZ2U7Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9
OwotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5k
b3cgbV93aW5kb3c7Ci0gICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3BhcmVudFdpbmRvdzsK
LSAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDE0YjNhMTQuLjZj
NDI1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzAw
LDYgKzMwMCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fYXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UtPnNldERlZmF1bHRPcmlnaW5RdW90YSgyNVVMTCAqIDEwMjQgKiAxMDI0KTsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBtX3dheWxhbmRDb21wb3NpdG9y
RGlzcGxheU5hbWUgPSBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFDYWNo
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMjI0YWVjZS4uMDMyYmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE5Nyw2ICsxOTcs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgU3RyaW5nIHdheWxhbmRDb21w
b3NpdG9yRGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3dheWxhbmRDb21wb3NpdG9yRGlz
cGxheU5hbWU7IH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0Kik7CiAgICAgc3RhdGljIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopOwogCkBAIC00MDQs
NiArNDA4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N1cHByZXNzTWVtb3J5UHJlc3N1cmVI
YW5kbGVyIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6VXNlckdlc3R1cmVUb2tl
biAqLCB1aW50NjRfdD4gbV91c2VyR2VzdHVyZVRva2VuczsKKworI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCisgICAgU3RyaW5nIG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGNkODI5
M2EuLjk4YmE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0zOTAsMTAgKzM5MCwxNCBAQCBp
ZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJS
ZWNvbXBpbGUgR1RLKyB3aXRoIFdheWxhbmQgYmFja2VuZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRf
VEFSR0VUIikKICAgICBlbmRpZiAoKQogCi0gICAgaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdFVCBB
TkQgR1RLM19WRVJTSU9OIFZFUlNJT05fTEVTUyAzLjEyKQorICAgIGlmIChHVEszX1ZFUlNJT04g
VkVSU0lPTl9MRVNTIDMuMTIpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdUSysgMy4x
MiBpcyByZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKICAgICBlbmRpZiAo
KQogCisgICAgaWYgKE5PVCBFR0xfRk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1Ig
IkVHTCBpcyByZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKKyAgICBlbmRp
ZiAoKQorCiAgICAgZmluZF9wYWNrYWdlKFdheWxhbmQgUkVRVUlSRUQpCiBlbmRpZiAoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286959</attachid>
            <date>2016-08-25 03:35:42 -0700</date>
            <delta_ts>2016-08-28 12:55:04 -0700</delta_ts>
            <desc>Fix poor performance when resizing the window</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>219838</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZTI1ZTlmLi4yMzkxODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTI0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQ2MjQgYW5kIHIyMDQ2NDgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDkzMzRjZmIuLmUzMjNkYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNDQsNiArMTQ0LDggQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNw
bGF5V2F5bGFuZC5jcHAKKwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3Bs
YXlYMTEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVSZXNvdXJjZS5jcHAK
IApAQCAtMzQ4LDI0ICszNTAsNiBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiBl
bmRpZiAoKQogCiBpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQotICAgICMgV2F5bGFuZCBwcm90
b2NvbCBleHRlbnNpb24uCi0gICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90
b2NvbC5jCi0gICAgICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sCi0gICAgICAgIENPTU1B
TkQgd2F5bGFuZC1zY2FubmVyIHNlcnZlci1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZFNlcnZlclByb3Rv
Y29sLmgKLSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY2xpZW50LWhlYWRlciA8ICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENs
aWVudFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5l
ciBjb2RlIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC5jCi0gICAgKQotCi0gICAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQv
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5
bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9X
ZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICkKLQogICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAgICAgJHtXQVlMQU5EX0lO
Q0xVREVfRElSU30KICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcAppbmRleCBkZTYxMjQ4Li5lNmE4MGM2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xOSwxMCArMTksNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0K
ICNpbmNsdWRlICJHTENvbnRleHQuaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogCiAjaWYgVVNFKEVHTCkKQEAgLTU3LDEy
ICs1NCw2IEBAIGlubGluZSBUaHJlYWRHbG9iYWxHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0KCkK
ICAgICByZXR1cm4gKlRocmVhZEdsb2JhbEdMQ29udGV4dDo6c3RhdGljR0xDb250ZXh0OwogfQog
Ci1HTENvbnRleHQqIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKQotewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0Piwgc2hhcmlu
ZywgKGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKSkpOwotICAgIHJldHVybiBzaGFyaW5nLmdldCgp
OwotfQotCiAjaWYgUExBVEZPUk0oWDExKQogLy8gQmVjYXVzZSBvZiBkcml2ZXIgYnVncywgZXhp
dGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJlIGFyZSBhY3RpdmUgcGJ1ZmZlcnMKIC8vIGNhbiBj
cmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFzIGJlZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNp
YWwgTnZpZGlhIGRyaXZlcnMpLgpAQCAtMTExLDEyICsxMDIsMzAgQEAgdm9pZCBHTENvbnRleHQ6
OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oWDEx
KQogCitzdGF0aWMgYm9vbCBpbml0aWFsaXplT3BlbkdMU2hpbXNJZk5lZWRlZCgpCit7CisjaWYg
VVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwor
ICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVu
R0xTaGltcygpOworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorICAgIHJldHVy
biBzdWNjZXNzOworI2VuZGlmCit9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29u
dGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFu
ZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSogcGxhdGZvcm1EaXNwbGF5KQogeworICAgIGlm
ICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkgPyAq
cGxhdGZvcm1EaXNwbGF5IDogUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CiAjaWYg
UExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkg
ewotICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250
ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgIGlmIChkaXNwbGF5LnR5cGUo
KSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIGRp
c3BsYXkpKQogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZWdsQ29udGV4dCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyOCwzNCArMTM3LDYzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2
ZVdpbmRvd1R5cGUKICNlbHNlCiAgICAgWElEIEdMWFdpbmRvd0hhbmRsZSA9IHN0YXRpY19jYXN0
PFhJRD4od2luZG93SGFuZGxlKTsKICNlbmRpZgotICAgIGlmIChhdXRvIGdseENvbnRleHQgPSBH
TENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoR0xYV2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4
dCkpCisgICAgaWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4
dChHTFhXaW5kb3dIYW5kbGUsIGRpc3BsYXkpKQogICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhD
b250ZXh0KTsKICNlbmRpZgogI2lmIFVTRShFR0wpCi0gICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9
IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0
KSkKKyAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0
KHdpbmRvd0hhbmRsZSwgZGlzcGxheSkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRl
eHQpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdMQ29udGV4dDo6R0xDb250
ZXh0KCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2Ny
ZWVuQ29udGV4dChQbGF0Zm9ybURpc3BsYXkqIHBsYXRmb3JtRGlzcGxheSkKIHsKLSNpZiBQTEFU
Rk9STShYMTEpCi0gICAgYWRkQWN0aXZlQ29udGV4dCh0aGlzKTsKKyAgICBpZiAoIWluaXRpYWxp
emVPcGVuR0xTaGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coMCwgcGxhdGZvcm1EaXNwbGF5ID8gcGxhdGZv
cm1EaXNwbGF5IDogJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKK30KKworc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dChQ
bGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkpCit7CisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hp
bXNJZk5lZWRlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgaWYgKGRpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V2F5bGFuZCkgeworICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpj
cmVhdGVTaGFyaW5nQ29udGV4dChkaXNwbGF5KSkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGVnbENvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKyNp
ZiBVU0UoR0xYKQorICAgIGlmIChhdXRvIGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0
ZVNoYXJpbmdDb250ZXh0KGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhDb250
ZXh0KTsKKyNlbmRpZgorI2lmIFVTRShFR0wpCisgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdM
Q29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlzcGxheSkpCisgICAgICAgIHJldHVy
biBXVEZNb3ZlKGVnbENvbnRleHQpOwogI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29u
dGV4dChHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorR0xDb250ZXh0OjpHTENvbnRleHQoUGxh
dGZvcm1EaXNwbGF5JiBkaXNwbGF5KQorICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coMCwgc2hhcmluZ0NvbnRleHQpOworI2lmIFBM
QVRGT1JNKFgxMSkKKyAgICBpZiAoZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpU
eXBlOjpYMTEpCisgICAgICAgIGFkZEFjdGl2ZUNvbnRleHQodGhpcyk7CisjZW5kaWYKIH0KIAog
R0xDb250ZXh0Ojp+R0xDb250ZXh0KCkKIHsKICAgICBpZiAodGhpcyA9PSBjdXJyZW50Q29udGV4
dCgpLT5jb250ZXh0KCkpCi0gICAgICAgIGN1cnJlbnRDb250ZXh0KCktPnNldENvbnRleHQoMCk7
CisgICAgICAgIGN1cnJlbnRDb250ZXh0KCktPnNldENvbnRleHQobnVsbHB0cik7CiAjaWYgUExB
VEZPUk0oWDExKQotICAgIHJlbW92ZUFjdGl2ZUNvbnRleHQodGhpcyk7CisgICAgaWYgKG1fZGlz
cGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJlbW92
ZUFjdGl2ZUNvbnRleHQodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTY1LDcgKzIwMyw3IEBAIGJv
b2wgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1HTENvbnRleHQqIEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpCitHTENvbnRleHQqIEdMQ29udGV4
dDo6Y3VycmVudCgpCiB7CiAgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0KCktPmNvbnRleHQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKaW5kZXgg
ZDQzOTQ1NC4uYzgyZjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgR0xDb250ZXh0X2gKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1EaXNwbGF5LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKICNp
ZiBVU0UoRUdMKSAmJiAhUExBVEZPUk0oR1RLKQpAQCAtMzksMjcgKzM5LDI1IEBAIHR5cGVkZWYg
dWludDY0X3QgR0xOYXRpdmVXaW5kb3dUeXBlOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX2Rldmlj
ZSBjYWlyb19kZXZpY2VfdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oWDExKQotdHlwZWRlZiBz
dHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHTENvbnRleHQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dCk7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNy
ZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nID0gMCk7Ci0g
ICAgc3RhdGljIEdMQ29udGV4dCogZ2V0Q3VycmVudCgpOwotICAgIHN0YXRpYyBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+
IGNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwg
UGxhdGZvcm1EaXNwbGF5KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0PiBjcmVhdGVPZmZzY3JlZW5Db250ZXh0KFBsYXRmb3JtRGlzcGxheSogPSBudWxs
cHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlU2hhcmlu
Z0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CisgICAgc3RhdGljIEdMQ29udGV4dCogY3VycmVu
dCgpOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5OyB9CiAKLSAgICBHTENvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHQoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IHN3YXBCdWZmZXJzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpID0gMDsKICAg
ICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3dhcEludGVydmFsKGludCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzRUdM
Q29udGV4dCgpIGNvbnN0ID0gMDsKIApAQCAtNjcsMjYgKzY1LDIxIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpID0gMDsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oWDExKQotICAgIHN0YXRpYyBEaXNwbGF5KiBzaGFyZWRYMTFEaXNwbGF5KCk7Ci0g
ICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZFgxMURpc3BsYXkoKTsKKyNpZiBFTkFCTEUoR1JB
UEhJQ1NfQ09OVEVYVF8zRCkKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qg
cGxhdGZvcm1Db250ZXh0KCkgPSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShYMTEpCitwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7CiAgICAg
c3RhdGljIHZvaWQgcmVtb3ZlQWN0aXZlQ29udGV4dChHTENvbnRleHQqKTsKICAgICBzdGF0aWMg
dm9pZCBjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4aXQoKTsKLQotI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUXzNEKQotICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0
Zm9ybUNvbnRleHQoKSA9IDA7CiAjZW5kaWYKIAotICAgIGNsYXNzIERhdGEgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgdmlydHVhbCB+RGF0YSgpID0gZGVmYXVsdDsKLSAgICB9OwotCiBwcm90ZWN0
ZWQ6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERhdGE+IG1fY29udGV4dERhdGE7CisgICAgR0xDb250
ZXh0KFBsYXRmb3JtRGlzcGxheSYpOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBtX2Rpc3BsYXk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApp
bmRleCAxNWNkNGRmLi42YTczMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEcKIHsKICAgICBzd2l0Y2ggKHJlbmRl
clN0eWxlKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgot
ICAgICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dChH
TENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgICAgICBtX2dsQ29udGV4dCA9IEdMQ29u
dGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dDoKICAgICAgICAgYnJlYWs7CkBAIC04
NSw3ICs4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1
cnJlbnQoKQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9nbENvbnRleHQgPyBtX2ds
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBHTENvbnRleHQ6OmdldEN1cnJlbnQoKS0+cGxh
dGZvcm1Db250ZXh0KCk7CisgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpIDogR0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgp
OwogfQogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpAQCAtMTIzLDcg
KzEyMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0
LT5tX3N0YXRlLmJvdW5kRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAg
ICAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3Vy
cmVudCgpOworICAgICAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29u
dGV4dDo6Y3VycmVudCgpOwogICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1f
Z2xDb250ZXh0LmdldCgpKQogICAgICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtRGlzcGxheS5jcHAKaW5kZXggMmU5MWFhMy4uMTg1MTdkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5
LmgiCiAKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1
ZGUgPG11dGV4PgogCkBAIC01OSw2ICs2MCw4IEBACiAKICNpZiBVU0UoRUdMKQogI2luY2x1ZGUg
PEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNwbGF5Ojpj
cmVhdGVQbGF0Zm9ybURpc3BsYXkoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAg
ICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSkKLSAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93
bF9kaXNwbGF5KGRpc3BsYXkpKTsKICNlbmRpZgogI2VuZGlmCiAjZWxpZiBQTEFURk9STShFRkwp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQpAQCAtMTAzLDYgKzEwNiwxOCBAQCBQbGF0Zm9ybURp
c3BsYXkmIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpCiAgICAgcmV0dXJuICpkaXNw
bGF5OwogfQogCitzdGF0aWMgUGxhdGZvcm1EaXNwbGF5KiBzX3NoYXJlZERpc3BsYXlGb3JDb21w
b3NpdGluZzsKKworUGxhdGZvcm1EaXNwbGF5JiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXlGb3JDb21wb3NpdGluZygpCit7CisgICAgcmV0dXJuIHNfc2hhcmVkRGlzcGxheUZvckNvbXBv
c2l0aW5nID8gKnNfc2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nIDogc2hhcmVkRGlzcGxheSgp
OworfQorCit2b2lkIFBsYXRmb3JtRGlzcGxheTo6c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0
aW5nKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSkKK3sKKyAgICBzX3NoYXJlZERpc3BsYXlGb3JD
b21wb3NpdGluZyA9ICZkaXNwbGF5OworfQorCiBQbGF0Zm9ybURpc3BsYXk6OlBsYXRmb3JtRGlz
cGxheSgpCiAjaWYgVVNFKEVHTCkKICAgICA6IG1fZWdsRGlzcGxheShFR0xfTk9fRElTUExBWSkK
QEAgLTExNyw3ICsxMzIsMjIgQEAgUGxhdGZvcm1EaXNwbGF5Ojp+UGxhdGZvcm1EaXNwbGF5KCkK
ICNlbmRpZgogfQogCisjaWYgIVBMQVRGT1JNKEVGTCkKK0dMQ29udGV4dCogUGxhdGZvcm1EaXNw
bGF5OjpzaGFyaW5nR0xDb250ZXh0KCkKK3sKKyAgICBpZiAoIW1fc2hhcmluZ0dMQ29udGV4dCkK
KyAgICAgICAgbV9zaGFyaW5nR0xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVTaGFyaW5nQ29u
dGV4dCgqdGhpcyk7CisgICAgcmV0dXJuIG1fc2hhcmluZ0dMQ29udGV4dC5nZXQoKTsKK30KKyNl
bmRpZgorCiAjaWYgVVNFKEVHTCkKK3N0YXRpYyBIYXNoU2V0PFBsYXRmb3JtRGlzcGxheSo+JiBl
Z2xEaXNwbGF5cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UGxhdGZv
cm1EaXNwbGF5Kj4+IGRpc3BsYXlzOworICAgIHJldHVybiBkaXNwbGF5czsKK30KKwogRUdMRGlz
cGxheSBQbGF0Zm9ybURpc3BsYXk6OmVnbERpc3BsYXkoKSBjb25zdAogewogICAgIGlmICghbV9l
Z2xEaXNwbGF5SW5pdGlhbGl6ZWQpCkBAIC0xMjUsMTIgKzE1NSwyMCBAQCBFR0xEaXNwbGF5IFBs
YXRmb3JtRGlzcGxheTo6ZWdsRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZWdsRGlzcGxh
eTsKIH0KIAorYm9vbCBQbGF0Zm9ybURpc3BsYXk6OmVnbENoZWNrVmVyc2lvbihpbnQgbWFqb3Is
IGludCBtaW5vcikgY29uc3QKK3sKKyAgICBpZiAoIW1fZWdsRGlzcGxheUluaXRpYWxpemVkKQor
ICAgICAgICBjb25zdF9jYXN0PFBsYXRmb3JtRGlzcGxheSo+KHRoaXMpLT5pbml0aWFsaXplRUdM
RGlzcGxheSgpOworCisgICAgcmV0dXJuIChtX2VnbE1ham9yVmVyc2lvbiA+IG1ham9yKSB8fCAo
KG1fZWdsTWFqb3JWZXJzaW9uID09IG1ham9yKSAmJiAobV9lZ2xNaW5vclZlcnNpb24gPj0gbWlu
b3IpKTsKK30KKwogdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkK
IHsKICAgICBtX2VnbERpc3BsYXlJbml0aWFsaXplZCA9IHRydWU7CiAKICAgICBpZiAobV9lZ2xE
aXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKSB7Ci0vLyBFR0wgaXMgb3B0aW9uYWxseSBzb2Z0IGxp
bmtlZCBvbiBXaW5kb3dzLgorICAgICAgICAvLyBFR0wgaXMgb3B0aW9uYWxseSBzb2Z0IGxpbmtl
ZCBvbiBXaW5kb3dzLgogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgYXV0byBlZ2xHZXREaXNw
bGF5ID0gZWdsR2V0RGlzcGxheVB0cigpOwogICAgICAgICBpZiAoIWVnbEdldERpc3BsYXkpCkBA
IC0xNDEsMzYgKzE3OSw0MSBAQCB2b2lkIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERp
c3BsYXkoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChlZ2xJbml0aWFs
aXplKG1fZWdsRGlzcGxheSwgMCwgMCkgPT0gRUdMX0ZBTFNFKSB7CisgICAgRUdMaW50IG1ham9y
VmVyc2lvbiwgbWlub3JWZXJzaW9uOworICAgIGlmIChlZ2xJbml0aWFsaXplKG1fZWdsRGlzcGxh
eSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7CiAgICAgICAg
IExPR19FUlJPUigiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CiAgICAgICAg
IHRlcm1pbmF0ZUVHTERpc3BsYXkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFVT
RShPUEVOR0xfRVNfMikKLSAgICBzdGF0aWMgY29uc3QgRUdMZW51bSBlZ2xBUElWZXJzaW9uID0g
RUdMX09QRU5HTF9FU19BUEk7Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBFR0xlbnVtIGVnbEFQ
SVZlcnNpb24gPSBFR0xfT1BFTkdMX0FQSTsKLSNlbmRpZgotICAgIGlmIChlZ2xCaW5kQVBJKGVn
bEFQSVZlcnNpb24pID09IEVHTF9GQUxTRSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBzZXQgRUdMIEFQSSglZCkuIiwgZWdsR2V0RXJyb3IoKSk7Ci0gICAgICAgIHRlcm1pbmF0ZUVH
TERpc3BsYXkoKTsKLSAgICAgICAgcmV0dXJuOworICAgIG1fZWdsTWFqb3JWZXJzaW9uID0gbWFq
b3JWZXJzaW9uOworICAgIG1fZWdsTWlub3JWZXJzaW9uID0gbWlub3JWZXJzaW9uOworCisgICAg
ZWdsRGlzcGxheXMoKS5hZGQodGhpcyk7CisKKyAgICBzdGF0aWMgYm9vbCBlZ2xBdGV4aXRIYW5k
bGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWVnbEF0ZXhpdEhhbmRsZXJJbml0aWFs
aXplZCkgeworICAgICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVh
bnVwIGl0cyBnbG9iYWwgZGlzcGxheSBsaXN0LgorICAgICAgICAvLyBTaW5jZSB0aGUgZ2xvYmFs
IFBsYXRmb3JtRGlzcGxheSBpbnN0YW5jZSBpcyBjcmVhdGVkIGJlZm9yZSwKKyAgICAgICAgLy8g
d2hlbiB0aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IgaXMgY2FsbGVkLCBFR0wgaGFzIGFs
cmVhZHkgcmVtb3ZlZCB0aGUKKyAgICAgICAgLy8gZGlzcGxheSBmcm9tIHRoZSBsaXN0LCBjYXVz
aW5nIGVnbFRlcm1pbmF0ZSgpIHRvIGNyYXNoLiBTbywgaGVyZSB3ZSByZWdpc3RlcgorICAgICAg
ICAvLyBvdXIgb3duIGF0ZXhpdCBoYW5kbGVyLCBhZnRlciBFR0wgaGFzIGJlZW4gaW5pdGlhbGl6
ZWQgYW5kIGFmdGVyIHRoZSBnbG9iYWwKKyAgICAgICAgLy8gaW5zdGFuY2UgaGFzIGJlZW4gY3Jl
YXRlZCB0byBlbnN1cmUgd2UgY2FsbCBlZ2xUZXJtaW5hdGUoKSBiZWZvcmUgdGhlIG90aGVyCisg
ICAgICAgIC8vIEVHTCBhdGV4aXQgaGFuZGxlcnMgYW5kIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVz
dHJ1Y3Rvci4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTc5NzMuCisgICAgICAgIGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCA9IHRy
dWU7CisgICAgICAgIHN0ZDo6YXRleGl0KFtdIHsKKyAgICAgICAgICAgIHdoaWxlICghZWdsRGlz
cGxheXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBkaXNwbGF5ID0gZWds
RGlzcGxheXMoKS50YWtlQW55KCk7CisgICAgICAgICAgICAgICAgZGlzcGxheS0+dGVybWluYXRl
RUdMRGlzcGxheSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKICAgICB9Ci0KLSAgICAv
LyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVhbnVwIGl0cyBnbG9iYWwgZGlz
cGxheSBsaXN0LgotICAgIC8vIFNpbmNlIHRoZSBnbG9iYWwgUGxhdGZvcm1EaXNwbGF5IGluc3Rh
bmNlIGlzIGNyZWF0ZWQgYmVmb3JlLAotICAgIC8vIHdoZW4gdGhlIFBsYXRmb3JtRGlzcGxheSBk
ZXN0cnVjdG9yIGlzIGNhbGxlZCwgRUdMIGhhcyBhbHJlYWR5IHJlbW92ZWQgdGhlCi0gICAgLy8g
ZGlzcGxheSBmcm9tIHRoZSBsaXN0LCBjYXVzaW5nIGVnbFRlcm1pbmF0ZSgpIHRvIGNyYXNoLiBT
bywgaGVyZSB3ZSByZWdpc3RlcgotICAgIC8vIG91ciBvd24gYXRleGl0IGhhbmRsZXIsIGFmdGVy
IEVHTCBoYXMgYmVlbiBpbml0aWFsaXplZCBhbmQgYWZ0ZXIgdGhlIGdsb2JhbAotICAgIC8vIGlu
c3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgdG8gZW5zdXJlIHdlIGNhbGwgZWdsVGVybWluYXRlKCkg
YmVmb3JlIHRoZSBvdGhlcgotICAgIC8vIEVHTCBhdGV4aXQgaGFuZGxlcnMgYW5kIHRoZSBQbGF0
Zm9ybURpc3BsYXkgZGVzdHJ1Y3Rvci4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1Nzk3My4KLSAgICBzdGQ6OmF0ZXhpdChbXSB7IFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnRlcm1pbmF0ZUVHTERpc3BsYXkoKTsgfSk7CiB9CiAK
IHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojp0ZXJtaW5hdGVFR0xEaXNwbGF5KCkKIHsKKyAgICBtX3No
YXJpbmdHTENvbnRleHQgPSBudWxscHRyOwogICAgIEFTU0VSVChtX2VnbERpc3BsYXlJbml0aWFs
aXplZCk7CiAgICAgaWYgKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1EaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bURpc3BsYXkuaAppbmRleCA5MjA5ZjQ1Li43MDA3NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaApAQCAtMzUsMTAgKzM1LDEz
IEBAIHR5cGVkZWYgdm9pZCAqRUdMRGlzcGxheTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBHTENvbnRleHQ7CisKIGNsYXNzIFBsYXRmb3JtRGlzcGxheSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGxhdGZvcm1EaXNwbGF5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBsYXRmb3JtRGlzcGxheSYgc2hhcmVkRGlzcGxheSgpOworICAg
IHN0YXRpYyBQbGF0Zm9ybURpc3BsYXkmIHNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpOwog
ICAgIHZpcnR1YWwgflBsYXRmb3JtRGlzcGxheSgpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsK
QEAgLTU1LDEzICs1OCwyMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0ID0gMDsKIAorI2lmICFQTEFURk9STShFRkwpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IG5vdCBoYXZlIGFueSBwbGF0Zm9ybSBpZmRlZiwgYnV0IEVGTCBoYXMgaXRzIG93biBFR0xDb250
ZXh0IGNsYXNzCisgICAgLy8gaW5zdGVhZCBvZiB1c2luZyB0aGUgR0xDb250ZXh0IGNvbW1vbiBB
UEkuCisgICAgR0xDb250ZXh0KiBzaGFyaW5nR0xDb250ZXh0KCk7CisjZW5kaWYKKwogI2lmIFVT
RShFR0wpCiAgICAgRUdMRGlzcGxheSBlZ2xEaXNwbGF5KCkgY29uc3Q7CisgICAgYm9vbCBlZ2xD
aGVja1ZlcnNpb24oaW50IG1ham9yLCBpbnQgbWlub3IpIGNvbnN0OwogI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKICAgICBQbGF0Zm9ybURpc3BsYXkoKTsKIAorICAgIHN0YXRpYyB2b2lkIHNldFNoYXJl
ZERpc3BsYXlGb3JDb21wb3NpdGluZyhQbGF0Zm9ybURpc3BsYXkmKTsKKwogI2lmIFVTRShFR0wp
CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVFR0xEaXNwbGF5KCk7CiAKQEAgLTc1LDcgKzg3
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB0ZXJtaW5hdGVFR0xEaXNwbGF5KCk7CiAKICAgICBi
b29sIG1fZWdsRGlzcGxheUluaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBpbnQgbV9lZ2xNYWpv
clZlcnNpb24geyAwIH07CisgICAgaW50IG1fZWdsTWlub3JWZXJzaW9uIHsgMCB9OwogI2VuZGlm
CisgICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gbV9zaGFyaW5nR0xDb250ZXh0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA4ZjQ4
YzIwLi4zY2QyYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtODgsOCArODgsOCBAQCBJ
bWFnZUJ1ZmZlckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQogICAgICAgICByZXR1cm47CiAKICNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIEdMQ29udGV4dCogcHJldmlvdXNB
Y3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7Ci0gICAgR0xDb250ZXh0Ojpz
aGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHBy
ZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgp
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGlmIChtX3RleHR1cmUpCiAgICAgICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CkBAIC0xMDgsNyArMTA4LDggQEAgSW1hZ2VC
dWZmZXJEYXRhOjp+SW1hZ2VCdWZmZXJEYXRhKCkKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfVEhSRUFERUQpCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZl
cigpCiB7Ci0gICAgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7CisgICAgY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAKICAgICBnbEdlblRleHR1cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0
dXJlKTsKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1
cmUpOwpAQCAtMTE5LDE1ICsxMjAsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNv
bXBvc2l0b3JCdWZmZXIoKQogICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwg
MSk7CiAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAgLCBHTF9SR0JBLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAw
KTsKIAotICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250
ZXh0KCktPmNhaXJvRGV2aWNlKCk7Ci0gICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVO
VF9DT0xPUl9BTFBIQSwgbV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1fc2l6
ZS5oZWlnaHQoKSkpOworICAgIG1fY29tcG9zaXRvclN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19n
bF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShjb250ZXh0LT5jYWlyb0RldmljZSgpLCBDQUlS
T19DT05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUud2lkdGgo
KSwgbV9zaXplLmhlaWdodCgpKSk7CiAgICAgbV9jb21wb3NpdG9yQ3IgPSBhZG9wdFJlZihjYWly
b19jcmVhdGUobV9jb21wb3NpdG9yU3VyZmFjZS5nZXQoKSkpOwogICAgIGNhaXJvX3NldF9hbnRp
YWxpYXMobV9jb21wb3NpdG9yQ3IuZ2V0KCksIENBSVJPX0FOVElBTElBU19OT05FKTsKIH0KIAog
dm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogewotICAgIEdMQ29u
dGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7Cisg
ICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQo
KTsKIAogICAgIGlmICghbV9jb21wb3NpdG9yVGV4dHVyZSkgewogICAgICAgICBjcmVhdGVDb21w
b3NpdG9yQnVmZmVyKCk7CkBAIC0xNTksNyArMTU5LDggQEAgdm9pZCBjbGVhclN1cmZhY2UoY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlKQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ2Fp
cm9HTFN1cmZhY2UoKQogewotICAgIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgYXV0byogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpOworICAgIGNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gV2UgbXVzdCBnZW5lcmF0ZSB0aGUg
dGV4dHVyZSBvdXJzZWx2ZXMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gQ2Fpcm8gQVBJIGZvciBleHRy
YWN0aW5nIGl0CiAgICAgLy8gZnJvbSBhIHByZS1leGlzdGluZyBzdXJmYWNlLgpAQCAtMTc0LDcg
KzE3NSw2IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiAK
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAvKiBsZXZlbCAqLywgR0xfUkdCQSwg
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCAvKiBib3JkZXIgKi8sIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwogCi0gICAgR0xDb250ZXh0KiBjb250ZXh0ID0gR0xDb250
ZXh0OjpzaGFyaW5nQ29udGV4dCgpOwogICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250
ZXh0LT5jYWlyb0RldmljZSgpOwogCiAgICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBpcyBhIGh1Z2Ug
cGVyZm9ybWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgpAQCAtNTYzLDcgKzU2Myw3IEBA
IHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGCiAgICAgQVNTRVJUKG1fdGV4dHVyZSk7CiAKICAgICAv
LyBDYWlybyBtYXkgY2hhbmdlIHRoZSBhY3RpdmUgY29udGV4dCwgc28gd2UgbWFrZSBzdXJlIHRv
IGNoYW5nZSBpdCBiYWNrIGFmdGVyIGZsdXNoaW5nLgotICAgIEdMQ29udGV4dCogcHJldmlvdXNB
Y3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7CisgICAgR0xDb250ZXh0KiBw
cmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKICAgICBjYWlyb19z
dXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIApAQCAtNjA5LDcgKzYwOSw3IEBAIGJvb2wgSW1hZ2VC
dWZmZXI6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCYsIEdDM0RlbnVt
IHRhcmdldCwgUGxhCiAKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29u
dGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdygwLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6
OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZv
ckNvbXBvc2l0aW5nKCkpOwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IHVpbnQzMl90IGZibzsKICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
aW5kZXggYTJiYzc1Yi4uY2E5MGUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNp
ZiBVU0UoRUdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybURpc3BsYXkuaCIKIAogI2lmIFVTRShDQUlSTykKICNpbmNsdWRlIDxjYWlyby5oPgpA
QCAtNDAsNiArMzksMTEgQEAKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVdheWxhbmQuaCIKKyNp
bmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQogLy8gY2Fpcm8tZ2wuaCBpbmNsdWRlcyBzb21lIGRlZmluaXRpb25zIGZyb20g
R0xYIHRoYXQgY29uZmxpY3Qgd2l0aAogLy8gdGhlIG9uZXMgcHJvdmlkZWQgYnkgdXMuIFNpbmNl
IEdMQ29udGV4dEVHTCBkb2Vzbid0IHVzZSBhbnkgR0xYCkBAIC01MCwxMSArNTQsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXko
KQotewotICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNw
bGF5KCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7
CiAjaWYgVVNFKE9QRU5HTF9FU18yKQogICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAy
LApAQCAtNjIsNyArNjEsMTMgQEAgc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0dHJpYnV0
ZXNbXSA9IHsKICAgICBFR0xfTk9ORQogfTsKIAotc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVH
TENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBl
KQorI2lmIFVTRShPUEVOR0xfRVNfMikKK3N0YXRpYyBjb25zdCBFR0xlbnVtIGdFR0xBUElWZXJz
aW9uID0gRUdMX09QRU5HTF9FU19BUEk7CisjZWxzZQorc3RhdGljIGNvbnN0IEVHTGVudW0gZ0VH
TEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0FQSTsKKyNlbmRpZgorCitib29sIEdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnKiBjb25maWcsIEVH
TFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKQogewogICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10g
PSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtODcsMjcgKzkyLDIzIEBAIHN0YXRpYyBib29s
IGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNl
VHlwZSBzdXJmYWNlCiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgor
ICAgIGNhc2UgR0xDb250ZXh0RUdMOjpTdXJmYWNlbGVzczoKICAgICAgICAgYXR0cmlidXRlTGlz
dFsxM10gPSBFR0xfV0lORE9XX0JJVDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgRUdM
aW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKLSAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNo
YXJlZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmln
c1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7CisgICAgcmV0dXJuIGVnbENob29z
ZUNvbmZpZyhkaXNwbGF5LCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdz
UmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0LCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0OjpEYXRhPiYmIGNvbnRleHREYXRhKQorc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0
ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29u
dGV4dCktPm1fY29udGV4dCA6IDA7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRF
R0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNw
bGF5LmVnbERpc3BsYXkoKTsKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdM
Q29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQorICAgIGlmICghZ2V0RUdMQ29uZmlnKGRp
c3BsYXksICZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29u
ZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBFR0xDb250
ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0Nv
bnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CiAgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NP
TlRFWFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMTcsMTkgKzExOCwxNCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQoRUdMTmF0aXZlV2luZG93VAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBhdXRvIGdsQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihjb250
ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKTsKLSAgICBnbENvbnRleHQtPm1fY29udGV4dERh
dGEgPSBXVEZNb3ZlKGNvbnRleHREYXRhKTsKLSAgICByZXR1cm4gZ2xDb250ZXh0OworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRm
b3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV2luZG93U3VyZmFjZSkpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250
ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYg
cGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVHTERp
c3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBF
R0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZpZyBj
b25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQor
ICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXksICZjb25maWcsIFBidWZmZXJTdXJmYWNlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xD
cmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0
cmlidXRlcyk7CkBAIC0xNDMsMTggKzEzOSwzNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcgog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKTsKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChw
bGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7CiB9CiAK
LSNpZiBQTEFURk9STShYMTEpCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlU3VyZmFjZWxl
c3NDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KQogewotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3Bs
YXkoKTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxh
eSgpOwogICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAorICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhk
aXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYgKCFzdHJzdHIoZXh0ZW5zaW9ucywgIkVH
TF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCIpICYmICFzdHJzdHIoZXh0ZW5zaW9ucywgIkVHTF9L
SFJfc3VyZmFjZWxlc3Nfb3BlbmdsIikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAg
RUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBT
dXJmYWNlKSkKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBTdXJmYWNl
bGVzcykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0
ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29u
dGV4dEF0dHJpYnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgRUdMX05P
X1NVUkZBQ0UsIFN1cmZhY2VsZXNzKSk7Cit9CisKKyNpZiBQTEFURk9STShYMTEpCitzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQo
UGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5LmVnbERpc3Bs
YXkoKTsKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3Bs
YXksICZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmln
LCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKQEAgLTE2Nyw3ICsxODEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1h
cENvbnRleHQoRUdMQ29udGV4dCBzaGFyaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDEx
PihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxh
eSogeDExRGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZvcm1EaXNw
bGF5KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAo
eDExRGlzcGxheSwgRGVmYXVsdFJvb3RXaW5kb3coeDExRGlzcGxheSksIDEsIDEsIGRlcHRoKTsK
ICAgICBpZiAoIXBpeG1hcCkgewogICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBj
b250ZXh0KTsKQEAgLTE4MCw0OSArMTk0LDEwNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdURk1vdmUocGl4bWFwKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wo
cGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHBpeG1hcCkpKTsKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShYMTEpCiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKKyNpZiBQTEFURk9STShXQVlMQU5EKQorc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4
dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29u
dGV4dCkKIHsKLSAgICBpZiAoIXNoYXJlZEVHTERpc3BsYXkoKSkKKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOworICAgIEVHTENvbmZpZyBjb25m
aWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgV2luZG93U3VyZmFj
ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAoIWlu
aXRpYWxpemVkKSB7Ci0jaWYgIVVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgc3VjY2VzcyA9IGlu
aXRpYWxpemVPcGVuR0xTaGltcygpOwotI2VuZGlmCi0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1
ZTsKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNv
bmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgaWYgKGNvbnRl
eHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IHdsU3VyZmFjZShkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kPihwbGF0Zm9ybURpc3BsYXkpLmNyZWF0ZVN1cmZhY2UoKSk7CisgICAgaWYg
KCF3bFN1cmZhY2UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4
dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBpZiAoIXN1Y2Nlc3MpCisK
KyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHds
U3VyZmFjZS5nZXQoKSwgMSwgMSk7CisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRl
V2luZG93U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7CisgICAgaWYgKHN1cmZh
Y2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxh
eSwgY29udGV4dCk7CisgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveSh3aW5kb3cpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQs
IHN1cmZhY2UsIFdURk1vdmUod2xTdXJmYWNlKSwgd2luZG93KSk7Cit9CisjZW5kaWYKKworc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxh
eSkKK3sKKyAgICBpZiAocGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKSA9PSBFR0xfTk9fRElT
UExBWSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJp
bmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihz
aGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0gICAgYXV0byBjb250ZXh0ID0gd2luZG93
ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7
CisgICAgaWYgKGVnbEJpbmRBUEkoZ0VHTEFQSVZlcnNpb24pID09IEVHTF9GQUxTRSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0g
cGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSA/IHN0YXRpY19jYXN0PEdMQ29udGV4
dEVHTCo+KHBsYXRmb3JtRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCkpLT5tX2NvbnRleHQgOiBF
R0xfTk9fQ09OVEVYVDsKKyAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dD
b250ZXh0KHdpbmRvdywgcGxhdGZvcm1EaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkgOiBudWxs
cHRyOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVN1cmZhY2Vs
ZXNzQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICBpZiAo
IWNvbnRleHQpIHsKICNpZiBQTEFURk9STShYMTEpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3Bs
YXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICAgICAgY29u
dGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBlZ2xTaGFyaW5nQ29u
dGV4dCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgICAgICBpZiAocGxhdGZv
cm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAg
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlV2F5bGFuZENvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBl
Z2xTaGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKyAgICB9CiAgICAgaWYgKCFjb250ZXh0KQotICAg
ICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Cisg
ICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVn
bFNoYXJpbmdDb250ZXh0KTsKKworICAgIHJldHVybiBjb250ZXh0OworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBs
YXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5KQoreworICAgIGlmIChwbGF0Zm9ybURpc3Bs
YXkuZWdsRGlzcGxheSgpID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmIChlZ2xCaW5kQVBJKGdFR0xBUElWZXJzaW9uKSA9PSBFR0xfRkFMU0UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlU3VyZmFj
ZWxlc3NDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIGlm
ICghY29udGV4dCkgeworICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0
Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXht
YXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5E
KQorICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OldheWxhbmQpCisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlV2F5bGFuZENvbnRl
eHQocGxhdGZvcm1EaXNwbGF5KTsKICNlbmRpZgorICAgIH0KICAgICBpZiAoIWNvbnRleHQpCi0g
ICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7
CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXkp
OwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdM
KEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0
eXBlKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVH
TChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFj
ZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkp
CisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogICAg
ICwgbV90eXBlKHR5cGUpCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gUGl4bWFwU3VyZmFjZSk7Cisg
ICAgQVNTRVJUKHR5cGUgPT0gU3VyZmFjZWxlc3MgfHwgc3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFD
RSk7CiB9CiAKICNpZiBQTEFURk9STShYMTEpCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChF
R0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBp
eG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRF
R0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZh
Y2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKKyAgICA6IEdMQ29udGV4dChkaXNw
bGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkK
ICAgICAsIG1fdHlwZShQaXhtYXBTdXJmYWNlKQogICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXht
YXApKQpAQCAtMjMwLDYgKzMwMiwxOCBAQCBHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xD
b250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcAogfQogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0wo
UGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYgd2xTdXJmYWNlLCBFR0xO
YXRpdmVXaW5kb3dUeXBlIHdsV2luZG93KQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQorICAgICwgbV90
eXBlKFdpbmRvd1N1cmZhY2UpCisgICAgLCBtX3dsU3VyZmFjZShXVEZNb3ZlKHdsU3VyZmFjZSkp
CisgICAgLCBtX3dsV2luZG93KHdsV2luZG93KQoreworfQorI2VuZGlmCisKIEdMQ29udGV4dEVH
TDo6fkdMQ29udGV4dEVHTCgpCiB7CiAjaWYgVVNFKENBSVJPKQpAQCAtMjM3LDcgKzMyMSw3IEBA
IEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0
cm95KG1fY2Fpcm9EZXZpY2UpOwogI2VuZGlmCiAKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBz
aGFyZWRFR0xEaXNwbGF5KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gbV9kaXNwbGF5LmVn
bERpc3BsYXkoKTsKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKICAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwg
RUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CkBAIC0yNDYs
NiArMzMwLDExIEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAKICAgICBpZiAobV9z
dXJmYWNlKQogICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCBtX3N1cmZhY2UpOwor
CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAobV93bFdpbmRvdykKKyAgICAgICAgd2xf
ZWdsX3dpbmRvd19kZXN0cm95KG1fd2xXaW5kb3cpOworI2VuZGlmCiB9CiAKIGJvb2wgR0xDb250
ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpCkBAIC0yNTgsOSArMzQ3LDEw
IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKICAgICBp
ZiAoIWNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBJbnRT
aXplKCk7CiAKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBtX2Rpc3BsYXkuZWdsRGlzcGxheSgp
OwogICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0OwotICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKHNo
YXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKLSAgICAgICAg
fHwgIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hF
SUdIVCwgJmhlaWdodCkpCisgICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgbV9zdXJm
YWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShkaXNw
bGF5LCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQogICAgICAgICByZXR1cm4gSW50
U2l6ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC0yNjgsMTkg
KzM1OCwxOSBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgp
CiAKIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIEFTU0VS
VChtX2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKIAogICAg
IEdMQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGVnbEdldEN1cnJlbnRD
b250ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVy
biBlZ2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNl
LCBtX2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXkuZWdsRGlz
cGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKIH0KIAogdm9pZCBHTENv
bnRleHRFR0w6OnN3YXBCdWZmZXJzKCkKIHsKICAgICBBU1NFUlQobV9zdXJmYWNlKTsKLSAgICBl
Z2xTd2FwQnVmZmVycyhzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSk7CisgICAgZWdsU3dh
cEJ1ZmZlcnMobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKIH0KIAogdm9pZCBH
TENvbnRleHRFR0w6OndhaXROYXRpdmUoKQpAQCAtMjg4LDYgKzM3OCwxMiBAQCB2b2lkIEdMQ29u
dGV4dEVHTDo6d2FpdE5hdGl2ZSgpCiAgICAgZWdsV2FpdE5hdGl2ZShFR0xfQ09SRV9OQVRJVkVf
RU5HSU5FKTsKIH0KIAordm9pZCBHTENvbnRleHRFR0w6OnN3YXBJbnRlcnZhbChpbnQgaW50ZXJ2
YWwpCit7CisgICAgQVNTRVJUKG1fc3VyZmFjZSk7CisgICAgZWdsU3dhcEludGVydmFsKG1fZGlz
cGxheS5lZ2xEaXNwbGF5KCksIGludGVydmFsKTsKK30KKwogI2lmIFVTRShDQUlSTykKIGNhaXJv
X2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKIHsKQEAgLTI5NSw3ICszOTEs
NyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAgICAg
IHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdM
RGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2
aWNlX2NyZWF0ZShtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX2NvbnRleHQpOwogI2VuZGlmCiAK
ICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA4NjU3NWE5Li43MDI1MzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5oCkBAIC0yOSw0OSArMjksNjggQEAKICNpbmNsdWRlICJYVW5pcXVlUmVzb3VyY2UuaCIK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJXbFVuaXF1ZVB0ci5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xDb250ZXh0RUdMIDog
cHVibGljIEdMQ29udGV4dCB7CitjbGFzcyBHTENvbnRleHRFR0wgZmluYWwgOiBwdWJsaWMgR0xD
b250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOwogcHVibGlj
OgotICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFj
ZSwgUGl4bWFwU3VyZmFjZSB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmlu
Z0NvbnRleHQgPSAwKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJp
bmdDb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0OjpEYXRhPiYmID0gbnVsbHB0cik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSwgUGxhdGZvcm1EaXNwbGF5Jik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlz
cGxheSYpOwogCi0gICAgR0xDb250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1
cmZhY2VUeXBlKTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgR0xDb250ZXh0RUdMKEVHTENvbnRl
eHQsIEVHTFN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJik7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIH5H
TENvbnRleHRFR0woKTsKLSAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdhaXROYXRp
dmUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKTsK
LSAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOworCisgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB3YWl0TmF0aXZlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5S
ZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpIG92ZXJyaWRlOworICAgIEludFNpemUgZGVmYXVs
dEZyYW1lQnVmZmVyU2l6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEludGVydmFsKGludCkg
b3ZlcnJpZGU7CiAjaWYgVVNFKENBSVJPKQotICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNh
aXJvRGV2aWNlKCk7CisgICAgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0gICAgdmlydHVhbCBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOworICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgZW51bSBFR0xT
dXJmYWNlVHlwZSB7IFBidWZmZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNl
LCBTdXJmYWNlbGVzcyB9OworCisgICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVH
TENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKICNpZiBQTEFURk9STShYMTEp
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENv
bnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgR0xDb250ZXh0RUdMKFBsYXRm
b3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJik7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURp
c3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3Vy
ZmFjZT4mJiwgRUdMTmF0aXZlV2luZG93VHlwZSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdp
bmRvd1R5cGUsIFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBF
R0xfTk9fQ09OVEVYVCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IGNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBF
R0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOworI2lmIFBMQVRGT1JN
KFgxMSkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4
bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0g
RUdMX05PX0NPTlRFWFQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2F5bGFuZENvbnRleHQoUGxh
dGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhU
KTsKICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRF
R0wqKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lkKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMRGlzcGxheSwgRUdMQ29uZmlnKiwgRUdMU3Vy
ZmFjZVR5cGUpOwogCi0gICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7Ci0gICAgRUdMU3VyZmFjZSBt
X3N1cmZhY2U7CisgICAgRUdMQ29udGV4dCBtX2NvbnRleHQgeyBFR0xfTk9fQ09OVEVYVCB9Owor
ICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgRUdMX05PX1NVUkZBQ0UgfTsKICAgICBFR0xTdXJm
YWNlVHlwZSBtX3R5cGU7CiAjaWYgUExBVEZPUk0oWDExKQogICAgIFhVbmlxdWVQaXhtYXAgbV9w
aXhtYXA7CiAjZW5kaWYKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIFdsVW5pcXVlUHRyPHN0
cnVjdCB3bF9zdXJmYWNlPiBtX3dsU3VyZmFjZTsKKyAgICBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyog
bV93bFdpbmRvdyB7IG51bGxwdHIgfTsKKyNlbmRpZgogI2lmIFVTRShDQUlSTykKICAgICBjYWly
b19kZXZpY2VfdCogbV9jYWlyb0RldmljZSB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApp
bmRleCAxNGJiNTM5Li5kZmJiOTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAtMzIsOSArMzIsMzAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENv
bnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFy
aW5nQ29udGV4dCkKKyNpZiAhZGVmaW5lZChQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DKQordHlw
ZWRlZiBpbnQgKCpQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DKSAoaW50KTsKKyNlbmRpZgorCitz
dGF0aWMgUEZOR0xYU1dBUElOVEVSVkFMU0dJUFJPQyBnbFhTd2FwSW50ZXJ2YWxTR0k7CisKK3N0
YXRpYyBib29sIGhhc1NHSVN3YXBDb250cm9sRXh0ZW5zaW9uKERpc3BsYXkqIGRpc3BsYXkpCit7
CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaW5pdGlhbGl6
ZWQpCisgICAgICAgIHJldHVybiAhIWdsWFN3YXBJbnRlcnZhbFNHSTsKKworICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZ2xYUXVlcnlFeHRlbnNp
b25zU3RyaW5nKGRpc3BsYXksIDApOworICAgIGlmICghc3Ryc3RyKGV4dGVuc2lvbnMsICJHTFhf
U0dJX3N3YXBfY29udHJvbCIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBnbFhTd2Fw
SW50ZXJ2YWxTR0kgPSByZWludGVycHJldF9jYXN0PFBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0M+
KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KCJnbFhTd2FwSW50ZXJ2YWxTR0kiKSkpOworICAgIHJldHVybiAhIWdsWFN3YXBJbnRlcnZhbFNH
STsKK30KKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVh
dGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNw
bGF5LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIERpc3BsYXkqIGRpc3BsYXkg
PSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhXaW5kb3dBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhkaXNwbGF5
LCB3aW5kb3csICZhdHRyaWJ1dGVzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSwx
NSArNjYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpj
cmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ28KICAgICBpbnQgbnVtUmV0dXJuZWQg
PSAwOwogICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1
YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkp
OwogCi0gICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8g
c3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0
KCkgOiBudWxscHRyOwotICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29u
dGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5nZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRy
dWUpKTsKKyAgICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQoZGlz
cGxheSwgdmlzdWFsSW5mb0xpc3QuZ2V0KCksIHNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGTW92ZShjb250ZXh0KSwgd2luZG93KTsKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4dEdMWChw
bGF0Zm9ybURpc3BsYXksIFdURk1vdmUoY29udGV4dCksIHdpbmRvdykpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xY
PiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxh
dGZvcm1EaXNwbGF5LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewogICAgIHN0YXRpYyBj
b25zdCBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEdMWF9EUkFXQUJMRV9U
WVBFLCBHTFhfUEJVRkZFUl9CSVQsCkBAIC02Nyw3ICs4Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4
dCBzaGFyCiAgICAgfTsKIAogICAgIGludCByZXR1cm5lZEVsZW1lbnRzOwotICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhV
bmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3MoZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwg
MCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJuZWRFbGVtZW50cykpOwogICAgIGlmICghcmV0
dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04MiwxMCArMTAyLDEw
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1
ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdM
WD4oV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShwYnVmZmVyKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5
LCBXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBidWZmZXIpKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhD
b250ZXh0IHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xD
b250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1E
aXNwbGF5LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewogICAgIHN0YXRpYyBpbnQgdmlz
dWFsQXR0cmlidXRlc1tdID0gewogICAgICAgICBHTFhfUkdCQSwKQEAgLTk2LDcgKzExNiw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFw
Q29udGV4dChHTFhDb250ZXh0IHNoYXJpCiAgICAgICAgIDAKICAgICB9OwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAg
WFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxh
eSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlzdWFsQXR0cmlidXRlcykpOwogICAgIGlmICgh
dmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTMsNDYgKzEzMyw0NiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1h
cENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIGlmICghZ2x4UGl4bWFwKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdM
WD4oV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShwaXhtYXApLCBXVEZNb3ZlKGdseFBpeG1hcCkp
OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPihuZXcgR0xDb250ZXh0
R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwgV1RGTW92ZShwaXhtYXApLCBX
VEZNb3ZlKGdseFBpeG1hcCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4g
R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmlu
Z0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNy
ZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkp
CiB7Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9v
bCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIHN1Y2Nl
c3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OwotICAgIH0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGlj
X2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBu
dWxscHRyOwotICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQo
d2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0KTsK
KyAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gcGxhdGZvcm1EaXNwbGF5LnNoYXJp
bmdHTENvbnRleHQoKSA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHBsYXRmb3JtRGlzcGxh
eS5zaGFyaW5nR0xDb250ZXh0KCkpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIGF1
dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBwbGF0Zm9y
bURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CiAgICAgaWYgKCFjb250ZXh0
KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChnbHhTaGFyaW5nQ29udGV4
dCk7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3Bs
YXksIGdseFNoYXJpbmdDb250ZXh0KTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9y
bURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0KTsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQog
Ci1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQs
IFhJRCB3aW5kb3cpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQo
UGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7CisgICAgYXV0byBjb250ZXh0ID0g
Y3JlYXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7
CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK0dMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBs
YXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYSUQg
d2luZG93KQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KHdpbmRvdykKIHsKIH0KIAotR0xDb250ZXh0R0xY
OjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlR0xYUGJ1
ZmZlciYmIHBidWZmZXIpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKK0dMQ29u
dGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1ZUdM
WENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlR0xYUGJ1ZmZlciYmIHBidWZmZXIpCisgICAgOiBH
TENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAg
ICwgbV9wYnVmZmVyKFdURk1vdmUocGJ1ZmZlcikpCiB7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xD
b250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZVBpeG1hcCYmIHBp
eG1hcCwgWFVuaXF1ZUdMWFBpeG1hcCYmIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5
JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVQaXhtYXAmJiBw
aXhtYXAsIFhVbmlxdWVHTFhQaXhtYXAmJiBnbHhQaXhtYXApCisgICAgOiBHTENvbnRleHQoZGlz
cGxheSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9waXhtYXAo
V1RGTW92ZShwaXhtYXApKQogICAgICwgbV9nbHhQaXhtYXAoV1RGTW92ZShnbHhQaXhtYXApKQog
ewpAQCAtMTY2LDkgKzE4Niw4IEBAIEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAg
aWYgKG1fY29udGV4dCkgewogICAgICAgICAvLyBUaGlzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJl
dmVudCBjcmFzaGVzIHdpdGggTlZpZGlhJ3MgY2xvc2VkIHNvdXJjZSBkcml2ZXJzLiBPcmlnaW5h
bGx5CiAgICAgICAgIC8vIGZyb20gTW96aWxsYSdzIDNEIGNhbnZhcyBpbXBsZW1lbnRhdGlvbiBh
dDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaWxtYXJpL2NhbnZhczNkLwotICAgICAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgMCk7Ci0gICAgICAgIGdsWE1ha2VDdXJyZW50KGRpc3BsYXks
IE5vbmUsIE5vbmUpOworICAgICAgICBnbFhNYWtlQ3VycmVudChkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCksIE5vbmUsIE5vbmUpOwogICAgIH0KIH0KIApA
QCAtMTg1LDggKzIwNCw3IEBAIEludFNpemUgR0xDb250ZXh0R0xYOjpkZWZhdWx0RnJhbWVCdWZm
ZXJTaXplKCkKICAgICBpbnQgeCwgeTsKICAgICBXaW5kb3cgcm9vdFdpbmRvdzsKICAgICB1bnNp
Z25lZCBpbnQgd2lkdGgsIGhlaWdodCwgYm9yZGVyV2lkdGgsIGRlcHRoOwotICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLSAgICBpZiAoIVhHZXRHZW9tZXRyeShkaXNwbGF5
LCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVy
V2lkdGgsICZkZXB0aCkpCisgICAgaWYgKCFYR2V0R2VvbWV0cnkoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpLCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4
LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCkpCiAgICAgICAgIHJl
dHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAg
LTIwMCw3ICsyMTgsNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkK
ICAgICBpZiAoZ2xYR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQuZ2V0KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1f
ZGlzcGxheSkubmF0aXZlKCk7CiAgICAgaWYgKG1fd2luZG93KQogICAgICAgICByZXR1cm4gZ2xY
TWFrZUN1cnJlbnQoZGlzcGxheSwgbV93aW5kb3csIG1fY29udGV4dC5nZXQoKSk7CiAKQEAgLTIx
Myw3ICsyMzEsNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHZv
aWQgR0xDb250ZXh0R0xYOjpzd2FwQnVmZmVycygpCiB7CiAgICAgaWYgKG1fd2luZG93KQotICAg
ICAgICBnbFhTd2FwQnVmZmVycyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgbV93aW5kb3cpOworICAgICAgICBn
bFhTd2FwQnVmZmVycyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0
aXZlKCksIG1fd2luZG93KTsKIH0KIAogdm9pZCBHTENvbnRleHRHTFg6OndhaXROYXRpdmUoKQpA
QCAtMjIxLDEzICsyMzksMjAgQEAgdm9pZCBHTENvbnRleHRHTFg6OndhaXROYXRpdmUoKQogICAg
IGdsWFdhaXRYKCk7CiB9CiAKK3ZvaWQgR0xDb250ZXh0R0xYOjpzd2FwSW50ZXJ2YWwoaW50IGlu
dGVydmFsKQoreworICAgIGlmICghaGFzU0dJU3dhcENvbnRyb2xFeHRlbnNpb24oZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGdsWFN3YXBJbnRlcnZhbFNHSShpbnRlcnZhbCk7Cit9CisKIGNhaXJvX2RldmljZV90
KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNlKCkKIHsKICAgICBpZiAobV9jYWlyb0RldmljZSkK
ICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAmJiBDQUlST19IQVNfR0xYX0ZVTkNUSU9OUwotICAgIG1fY2Fpcm9EZXZpY2Ug
PSBjYWlyb19nbHhfZGV2aWNlX2NyZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgbV9jb250ZXh0LmdldCgp
KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAppbmRleCA2NDdmOTk4
Li4xOWZjMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5oCkBAIC0zMiwzMSArMzIsMzUgQEAgdHlwZWRlZiB2b2lkKiBDb250
ZXh0S2V5VHlwZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRleHRHTFgg
OiBwdWJsaWMgR0xDb250ZXh0IHsKK2NsYXNzIEdMQ29udGV4dEdMWCBmaW5hbCA6IHB1YmxpYyBH
TENvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEdMWCk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZUNvbnRl
eHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IGNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5
Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVNoYXJp
bmdDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYpOwogCi0gICAgR0xDb250ZXh0R0xYKFhVbmlxdWVH
TFhDb250ZXh0JiYsIFhJRCk7Ci0gICAgR0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYs
IFhVbmlxdWVHTFhQYnVmZmVyJiYpOwotICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4
dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7CiAgICAgdmlydHVhbCB+
R0xDb250ZXh0R0xYKCk7Ci0gICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwotICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0
aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCk7
Ci0gICAgdmlydHVhbCBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKLSAgICB2aXJ0
dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VH
TENvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBtYWtlQ29udGV4
dEN1cnJlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB3YWl0TmF0aXZlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZW5kZXJUb0RlZmF1
bHRGcmFtZWJ1ZmZlcigpIG92ZXJyaWRlOworICAgIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVy
U2l6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEludGVydmFsKGludCkgb3ZlcnJpZGU7Cisg
ICAgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VH
TENvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxF
KEdSQVBISUNTX0NPTlRFWFRfM0QpCi0gICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEIHBsYXRmb3JtQ29udGV4dCgpOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxh
dGZvcm1Db250ZXh0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRHTFg+IGNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Cisg
ICAgR0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJ
RCk7CisgICAgR0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0
JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3Bs
YXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXht
YXAmJik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRl
V2luZG93Q29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmLCBHTFhDb250ZXh0IHNo
YXJpbmdDb250ZXh0ID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEdMWENvbnRl
eHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBHTFhD
b250ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0cik7CiAKICAgICBYVW5pcXVlR0xYQ29udGV4
dCBtX2NvbnRleHQ7CiAgICAgWElEIG1fd2luZG93IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGIyOTIzOWUuLmZj
ZmY0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKQEAgLTIzNSw4ICsyMzUsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmVuc3VyZUdzdEdMQ29udGV4dCgpCiAgICAgaWYgKG1fZ2xDb250ZXh0KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGNvbnN0IGF1dG8mIHNoYXJlZERpc3BsYXkgPSBQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpOwogICAgIGlmICgh
bV9nbERpc3BsYXkpIHsKLSAgICAgICAgY29uc3QgYXV0byYgc2hhcmVkRGlzcGxheSA9IFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICAgICAg
bV9nbERpc3BsYXkgPSBHU1RfR0xfRElTUExBWShnc3RfZ2xfZGlzcGxheV94MTFfbmV3X3dpdGhf
ZGlzcGxheShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5hdGl2
ZSgpKSk7CiAjZWxpZiBQTEFURk9STShXQVlMQU5EKQpAQCAtMjQ0LDcgKzI0NCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KCkKICNl
bmRpZgogICAgIH0KIAotICAgIEdMQ29udGV4dCogd2Via2l0Q29udGV4dCA9IEdMQ29udGV4dDo6
c2hhcmluZ0NvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIHdlYmtpdENvbnRleHQgPSBzaGFyZWRE
aXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKTsKICAgICAvLyBFR0wgYW5kIEdMWCBhcmUgbXV0dWFs
bHkgZXhjbHVzaXZlLCBubyBuZWVkIGZvciBpZmRlZnMgaGVyZS4KICAgICBHc3RHTFBsYXRmb3Jt
IGdsUGxhdGZvcm0gPSB3ZWJraXRDb250ZXh0LT5pc0VHTENvbnRleHQoKSA/IEdTVF9HTF9QTEFU
Rk9STV9FR0wgOiBHU1RfR0xfUExBVEZPUk1fR0xYOwogCkBAIC03MDIsNyArNzAyLDcgQEAgTmF0
aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1l
LCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JF
QUQgfCBHU1RfTUFQX0dMKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgR0xDb250
ZXh0KiBjb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIEdMQ29udGV4
dCogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5n
KCkuc2hhcmluZ0dMQ29udGV4dCgpOwogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250ZXh0LT5jYWlyb0RldmljZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1Bs
YXRmb3JtRGlzcGxheVdheWxhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAppbmRleCBkMzMwNWUxLi40Nzky
NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKQEAgLTI5LDEyNiAr
MjksNTUgQEAKICNpZiBQTEFURk9STShXQVlMQU5EKQogCiAjaW5jbHVkZSAiR0xDb250ZXh0RUdM
LmgiCi0jaW5jbHVkZSAiV2F5bGFuZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxjc3RyaW5nPgotI2lu
Y2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3Qgc3RydWN0IHdsX3Jl
Z2lzdHJ5X2xpc3RlbmVyIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Om1fcmVnaXN0cnlMaXN0ZW5l
ciA9IHsKLSAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxDYWxsYmFjaywKLSAgICBQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxSZW1vdmVDYWxsYmFjaworY29uc3Qgc3RydWN0
IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnNfcmVnaXN0cnlM
aXN0ZW5lciA9IHsKKyAgICAvLyBnbG9iYWxDYWxsYmFjaworICAgIFtdKHZvaWQqIGRhdGEsIHN0
cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90IG5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZSwg
dWludDMyX3QpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCo+
KGRhdGEpLT5yZWdpc3RyeUdsb2JhbChpbnRlcmZhY2UsIG5hbWUpOworICAgIH0sCisgICAgLy8g
Z2xvYmFsUmVtb3ZlQ2FsbGJhY2sKKyAgICBbXSh2b2lkKiwgc3RydWN0IHdsX3JlZ2lzdHJ5Kiwg
dWludDMyX3QpCisgICAgeworICAgIH0KIH07CiAKLXZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZDo6Z2xvYmFsQ2FsbGJhY2sodm9pZCogZGF0YSwgc3RydWN0IHdsX3JlZ2lzdHJ5KiByZWdpc3Ry
eSwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCkKK1BsYXRm
b3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rpc3Bs
YXkqIGRpc3BsYXkpCiB7Ci0gICAgYXV0byBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1E
aXNwbGF5V2F5bGFuZCo+KGRhdGEpOwotICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAi
d2xfY29tcG9zaXRvciIpKQotICAgICAgICBkaXNwbGF5LT5tX2NvbXBvc2l0b3IgPSBzdGF0aWNf
Y2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0cnksIG5h
bWUsICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSkpOwotICAgIGVsc2UgaWYgKCFzdGQ6OnN0
cmNtcChpbnRlcmZhY2UsICJ3bF93ZWJraXRndGsiKSkKLSAgICAgICAgZGlzcGxheS0+bV93ZWJr
aXRndGsgPSBzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfd2Via2l0Z3RrKj4od2xfcmVnaXN0cnlfYmlu
ZChyZWdpc3RyeSwgbmFtZSwgJndsX3dlYmtpdGd0a19pbnRlcmZhY2UsIDEpKTsKKyAgICBpbml0
aWFsaXplKGRpc3BsYXkpOwogfQogCi12b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2Jh
bFJlbW92ZUNhbGxiYWNrKHZvaWQqLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCkKLXsK
LSAgICAvLyBGSVhNRTogaWYgdGhpcyBjYW4gaGFwcGVuIHdpdGhvdXQgdGhlIFVJIFByb2Nlc3Mg
Z2V0dGluZyBzaHV0IGRvd24KLSAgICAvLyB3ZSBzaG91bGQgcHJvYmFibHkgZGVzdHJveSBvdXIg
Y2FjaGVkIGRpc3BsYXkgaW5zdGFuY2UuCi19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGUoKQorUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZDo6flBsYXRmb3JtRGlzcGxheVdheWxhbmQoKQogewotICAgIHN0cnVjdCB3
bF9kaXNwbGF5KiB3bERpc3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QobnVsbHB0cik7Ci0gICAg
aWYgKCF3bERpc3BsYXkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgV2F5bGFuZCBz
ZXJ2ZXIgc29ja2V0LiBDaGVjayB5b3VyIFdBWUxBTkRfRElTUExBWSBvciBXQVlMQU5EX1NPQ0tF
VCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIGF1dG8gZGlzcGxheSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kPihuZXcgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCh3bERpc3BsYXkpKTsKLSAgICBpZiAo
IWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlBsYXRm
b3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb21wbGV0ZSB0aGUg
aW5pdGlhbGl6YXRpb24gb2YgdGhlIGRpc3BsYXkuIik7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIHJldHVybiBkaXNwbGF5OwogfQogCi1QbGF0Zm9ybURpc3BsYXlXYXls
YW5kOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiB3bERpc3BsYXkp
Ci0gICAgOiBtX2Rpc3BsYXkod2xEaXNwbGF5KQotICAgICwgbV9yZWdpc3RyeSh3bF9kaXNwbGF5
X2dldF9yZWdpc3RyeShtX2Rpc3BsYXkpKQotICAgICwgbV9lZ2xDb25maWdDaG9zZW4oZmFsc2Up
Cit2b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUod2xfZGlzcGxheSogZGlz
cGxheSkKIHsKLSAgICB3bF9yZWdpc3RyeV9hZGRfbGlzdGVuZXIobV9yZWdpc3RyeSwgJm1fcmVn
aXN0cnlMaXN0ZW5lciwgdGhpcyk7CisgICAgbV9kaXNwbGF5ID0gZGlzcGxheTsKKyAgICBtX3Jl
Z2lzdHJ5LnJlc2V0KHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KG1fZGlzcGxheSkpOworICAgIHds
X3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihtX3JlZ2lzdHJ5LmdldCgpLCAmc19yZWdpc3RyeUxpc3Rl
bmVyLCB0aGlzKTsKICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtX2Rpc3BsYXkpOwogCi0gICAg
c3RhdGljIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9T
VVJGQUNFX1RZUEUsIEVHTF9XSU5ET1dfQklULAotICAgICAgICBFR0xfUkVEX1NJWkUsIDEsCi0g
ICAgICAgIEVHTF9HUkVFTl9TSVpFLCAxLAotICAgICAgICBFR0xfQkxVRV9TSVpFLCAxLAotICAg
ICAgICBFR0xfQUxQSEFfU0laRSwgMSwKLSAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdM
X09QRU5HTF9FUzJfQklULAotICAgICAgICBFR0xfTk9ORQotICAgIH07Ci0KICAgICBtX2VnbERp
c3BsYXkgPSBlZ2xHZXREaXNwbGF5KG1fZGlzcGxheSk7CiAgICAgUGxhdGZvcm1EaXNwbGF5Ojpp
bml0aWFsaXplRUdMRGlzcGxheSgpOwotICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJ
U1BMQVkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVHTGludCBudW1iZXJPZkNvbmZpZ3M7Ci0g
ICAgaWYgKCFlZ2xDaG9vc2VDb25maWcobV9lZ2xEaXNwbGF5LCBjb25maWdBdHRyaWJ1dGVzLCAm
bV9lZ2xDb25maWcsIDEsICZudW1iZXJPZkNvbmZpZ3MpIHx8IG51bWJlck9mQ29uZmlncyAhPSAx
KSB7Ci0gICAgICAgIGdfd2FybmluZygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXph
dGlvbjogZmFpbGVkIHRvIGZpbmQgdGhlIGRlc2lyZWQgRUdMIGNvbmZpZ3VyYXRpb24uIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2VnbENvbmZpZ0Nob3NlbiA9IHRydWU7CiB9
CiAKLVBsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCkKK3Zv
aWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwoY29uc3QgY2hhciogaW50
ZXJmYWNlLCB1aW50MzJfdCBuYW1lKQogewotICAgIGlmIChtX3dlYmtpdGd0aykKLSAgICAgICAg
d2xfd2Via2l0Z3RrX2Rlc3Ryb3kobV93ZWJraXRndGspOwotICAgIGlmIChtX2NvbXBvc2l0b3Ip
Ci0gICAgICAgIHdsX2NvbXBvc2l0b3JfZGVzdHJveShtX2NvbXBvc2l0b3IpOwotICAgIGlmICht
X3JlZ2lzdHJ5KQotICAgICAgICB3bF9yZWdpc3RyeV9kZXN0cm95KG1fcmVnaXN0cnkpOwotICAg
IGlmIChtX2Rpc3BsYXkpCi0gICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtX2Rpc3BsYXkp
OwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZFN1cmZhY2U+IFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OmNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgaW50IHdpZGdldElkKQot
ewotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UgPSB3bF9jb21wb3NpdG9yX2NyZWF0
ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7Ci0gICAgLy8gV2Uga2VlcCB0aGUgbWluaW11bSBzaXpl
IGF0IDF4MXB4IHNpbmNlIE1lc2EgcmV0dXJucyBudWxsIHZhbHVlcyBpbiB3bF9lZ2xfd2luZG93
X2NyZWF0ZSgpIGZvciB6ZXJvIHdpZHRoIG9yIGhlaWdodC4KLSAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIG5hdGl2ZVdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSwgc3RkOjpt
YXgoMSwgc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkpOwotCi0gICAg
d2xfd2Via2l0Z3RrX3NldF9zdXJmYWNlX2Zvcl93aWRnZXQobV93ZWJraXRndGssIHdsU3VyZmFj
ZSwgd2lkZ2V0SWQpOwotICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1fZGlzcGxheSk7Ci0KLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXlsYW5kU3VyZmFjZT4od2xTdXJmYWNlLCBuYXRp
dmVXaW5kb3cpOworICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAid2xfY29tcG9zaXRv
ciIpKQorICAgICAgICBtX2NvbXBvc2l0b3IucmVzZXQoc3RhdGljX2Nhc3Q8c3RydWN0IHdsX2Nv
bXBvc2l0b3IqPih3bF9yZWdpc3RyeV9iaW5kKG1fcmVnaXN0cnkuZ2V0KCksIG5hbWUsICZ3bF9j
b21wb3NpdG9yX2ludGVyZmFjZSwgMSkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpCitX
bFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3Jl
YXRlU3VyZmFjZSgpIGNvbnN0CiB7Ci0gICAgY2xhc3MgT2Zmc2NyZWVuQ29udGV4dERhdGEgOiBw
dWJsaWMgR0xDb250ZXh0OjpEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9m
ZnNjcmVlbkNvbnRleHREYXRhKCkKLSAgICAgICAgewotICAgICAgICAgICAgd2xfZWdsX3dpbmRv
d19kZXN0cm95KG5hdGl2ZVdpbmRvdyk7Ci0gICAgICAgICAgICB3bF9zdXJmYWNlX2Rlc3Ryb3ko
c3VyZmFjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFj
ZTsKLSAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3c7Ci0gICAgfTsKLQot
ICAgIGF1dG8gY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9mZnNjcmVlbkNvbnRleHRE
YXRhPigpOwotICAgIGNvbnRleHREYXRhLT5zdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVf
c3VyZmFjZShtX2NvbXBvc2l0b3IpOwotICAgIGNvbnRleHREYXRhLT5uYXRpdmVXaW5kb3cgPSB3
bF9lZ2xfd2luZG93X2NyZWF0ZShjb250ZXh0RGF0YS0+c3VyZmFjZSwgMSwgMSk7CisgICAgaWYg
KCFtX2NvbXBvc2l0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBuYXRp
dmVXaW5kb3cgPSBjb250ZXh0RGF0YS0+bmF0aXZlV2luZG93OwotICAgIHJldHVybiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQobmF0aXZlV2luZG93LCBudWxscHRyLCBXVEZNb3Zl
KGNvbnRleHREYXRhKSk7CisgICAgcmV0dXJuIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNl
Pih3bF9jb21wb3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvci5nZXQoKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5o
CmluZGV4IDRjYzkwNDQuLmMxNjU4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZC5oCkBAIC0yOSw0OCArMjksMzQgQEAKICNpZiBQTEFURk9STShXQVlMQU5EKQogCiAjaW5jbHVk
ZSAiUGxhdGZvcm1EaXNwbGF5LmgiCi0jaW5jbHVkZSAiV2ViS2l0R3RrV2F5bGFuZENsaWVudFBy
b3RvY29sLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgIldsVW5pcXVlUHRyLmgiCiAj
aW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLSNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgotI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRl
eHRFR0w7Ci1jbGFzcyBJbnRTaXplOwotY2xhc3MgV2F5bGFuZFN1cmZhY2U7Ci0KLWNsYXNzIFBs
YXRmb3JtRGlzcGxheVdheWxhbmQgZmluYWw6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgeworY2xh
c3MgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4g
Y3JlYXRlKCk7CisgICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSop
OwogICAgIHZpcnR1YWwgflBsYXRmb3JtRGlzcGxheVdheWxhbmQoKTsKIAogICAgIHN0cnVjdCB3
bF9kaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXYXlsYW5kU3VyZmFjZT4gY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXpl
JiwgaW50IHdpZGdldElEKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNy
ZWF0ZVNoYXJpbmdHTENvbnRleHQoKTsKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFj
ZT4gY3JlYXRlU3VyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBz
dHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgbV9yZWdpc3RyeUxpc3RlbmVyOwotICAgIHN0YXRp
YyB2b2lkIGdsb2JhbENhbGxiYWNrKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVp
bnQzMl90IG5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgdmVyc2lvbik7Ci0g
ICAgc3RhdGljIHZvaWQgZ2xvYmFsUmVtb3ZlQ2FsbGJhY2sodm9pZCogZGF0YSwgc3RydWN0IHds
X3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSk7CisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9y
ZWdpc3RyeV9saXN0ZW5lciBzX3JlZ2lzdHJ5TGlzdGVuZXI7CiAKLSAgICBQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kOyB9CiAKLSAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgY2hlY2sgYWxzbyBmb3IgbV93ZWJraXRndGsgb25jZSB0aGUg
VUlQcm9jZXNzIGVtYmVkZGVkIFdheWxhbmQgc3ViY29tcG9zaXRlciBpcyBpbXBsZW1lbnRlZC4K
LSAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX2NvbXBvc2l0b3IgJiYgbV9lZ2xE
aXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmIG1fZWdsQ29uZmlnQ2hvc2VuOyB9Citwcm90ZWN0
ZWQ6CisgICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIGlu
aXRpYWxpemUoc3RydWN0IHdsX2Rpc3BsYXkqKTsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZDsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RyeUdsb2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90
IG5hbWUpOwogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG1fZGlzcGxheTsKLSAgICBzdHJ1Y3Qg
d2xfcmVnaXN0cnkqIG1fcmVnaXN0cnk7Ci0gICAgc3RydWN0IHdsX2NvbXBvc2l0b3IqIG1fY29t
cG9zaXRvcjsKLSAgICBzdHJ1Y3Qgd2xfd2Via2l0Z3RrKiBtX3dlYmtpdGd0azsKLQotICAgIEVH
TENvbmZpZyBtX2VnbENvbmZpZzsKLSAgICBib29sIG1fZWdsQ29uZmlnQ2hvc2VuOworICAgIFds
VW5pcXVlUHRyPHN0cnVjdCB3bF9yZWdpc3RyeT4gbV9yZWdpc3RyeTsKKyAgICBXbFVuaXF1ZVB0
cjxzdHJ1Y3Qgd2xfY29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2YjJhZDJmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldheWxhbmRFdmVudFNvdXJj
ZS5oIgotCi0jaWYgUExBVEZPUk0oV0FZTEFORCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHTGliU291cmNlIHsKLXB1YmxpYzoKLSAgICB2b2lkIGluaXRpYWxpemUoc3RydWN0IHds
X2Rpc3BsYXkqKTsKLQotICAgIGdib29sZWFuIGNoZWNrKCk7Ci0gICAgZ2Jvb2xlYW4gZGlzcGF0
Y2goKTsKLQotcHJpdmF0ZToKLSAgICBHU291cmNlIG1fc291cmNlOwotICAgIEdQb2xsRkQgbV9w
b2xsRmlsZURlc2NyaXB0b3I7Ci0gICAgc3RydWN0IHdsX2Rpc3BsYXkqIG1fZGlzcGxheTsKLX07
Ci0KLXZvaWQgR0xpYlNvdXJjZTo6aW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxh
eSkKLXsKLSAgICBtX2Rpc3BsYXkgPSBkaXNwbGF5OwotICAgIHN0cnVjdCB3bF9ldmVudF9sb29w
KiBsb29wID0gd2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChkaXNwbGF5KTsKLSAgICBtX3BvbGxG
aWxlRGVzY3JpcHRvci5mZCA9IHdsX2V2ZW50X2xvb3BfZ2V0X2ZkKGxvb3ApOwotICAgIG1fcG9s
bEZpbGVEZXNjcmlwdG9yLmV2ZW50cyA9IEdfSU9fSU4gfCBHX0lPX0VSUiB8IEdfSU9fSFVQOwot
ICAgIGdfc291cmNlX2FkZF9wb2xsKCZtX3NvdXJjZSwgJm1fcG9sbEZpbGVEZXNjcmlwdG9yKTsK
LQotICAgIGdfc291cmNlX3NldF9uYW1lKCZtX3NvdXJjZSwgIk5lc3RlZCBXYXlsYW5kIGNvbXBv
c2l0b3IgZGlzcGxheSBldmVudCBzb3VyY2UiKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHko
Jm1fc291cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX3NldF9jYW5fcmVj
dXJzZSgmbV9zb3VyY2UsIFRSVUUpOwotICAgIGdfc291cmNlX2F0dGFjaCgmbV9zb3VyY2UsIG51
bGxwdHIpOwotfQotCi1nYm9vbGVhbiBHTGliU291cmNlOjpjaGVjaygpCi17Ci0gICAgcmV0dXJu
IG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHM7Ci19Ci0KLWdib29sZWFuIEdMaWJTb3VyY2U6
OmRpc3BhdGNoKCkKLXsKLSAgICBpZiAobV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50cyAmIEdf
SU9fSU4pIHsKLSAgICAgICAgc3RydWN0IHdsX2V2ZW50X2xvb3AqIGxvb3AgPSB3bF9kaXNwbGF5
X2dldF9ldmVudF9sb29wKG1fZGlzcGxheSk7Ci0gICAgICAgIHdsX2V2ZW50X2xvb3BfZGlzcGF0
Y2gobG9vcCwgLTEpOwotICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoX2NsaWVudHMobV9kaXNwbGF5
KTsKLSAgICAgICAgbV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50cyA9IDA7Ci0gICAgfQotCi0g
ICAgaWYgKG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHMgJiAoR19JT19FUlIgfCBHX0lPX0hV
UCkpCi0gICAgICAgIGdfd2FybmluZygiV2F5bGFuZCBEaXNwbGF5IEV2ZW50IFNvdXJjZTogbG9z
dCBjb25uZWN0aW9uIHRvIG5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IiKTsKLQotICAgIHJldHVy
biBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gcHJlcGFyZUNhbGxiYWNrKEdTb3VyY2UqLCBn
aW50KiB0aW1lb3V0KQotewotICAgICp0aW1lb3V0ID0gLTE7Ci0gICAgcmV0dXJuIEZBTFNFOwot
fQotCi1zdGF0aWMgZ2Jvb2xlYW4gY2hlY2tDYWxsYmFjayhHU291cmNlKiBiYXNlKQotewotICAg
IGF1dG8gc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxHTGliU291cmNlKj4oYmFzZSk7Ci0gICAg
cmV0dXJuIHNvdXJjZS0+Y2hlY2soKTsKLX0KLQotc3RhdGljIGdib29sZWFuIGRpc3BhdGNoQ2Fs
bGJhY2soR1NvdXJjZSogYmFzZSwgR1NvdXJjZUZ1bmMsIGdwb2ludGVyKQotewotICAgIGF1dG8g
c291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxHTGliU291cmNlKj4oYmFzZSk7Ci0gICAgcmV0dXJu
IHNvdXJjZS0+ZGlzcGF0Y2goKTsKLX0KLQotc3RhdGljIEdTb3VyY2VGdW5jcyB3YXlsYW5kR0xp
YlNvdXJjZUZ1bmNzID0gewotICAgIHByZXBhcmVDYWxsYmFjaywKLSAgICBjaGVja0NhbGxiYWNr
LAotICAgIGRpc3BhdGNoQ2FsbGJhY2ssCi0gICAgbnVsbHB0ciwgLy8gZmluYWxpemUKLSAgICBu
dWxscHRyLCAvLyBjbG9zdXJlX2NhbGxiYWNrCi0gICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9tYXJz
aGFsbAotfTsKLQotR1NvdXJjZSogV2F5bGFuZEV2ZW50U291cmNlOjpjcmVhdGVEaXNwbGF5RXZl
bnRTb3VyY2Uoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCi17Ci0gICAgR1NvdXJjZSogYmFz
ZSA9IGdfc291cmNlX25ldygmd2F5bGFuZEdMaWJTb3VyY2VGdW5jcywgc2l6ZW9mKEdMaWJTb3Vy
Y2UpKTsKLQotICAgIGF1dG8gc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxHTGliU291cmNlKj4o
YmFzZSk7Ci0gICAgc291cmNlLT5pbml0aWFsaXplKGRpc3BsYXkpOwotCi0gICAgcmV0dXJuIGJh
c2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdB
WUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dheWxhbmRFdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmVkMTY2Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV2F5bGFuZEV2ZW50U291cmNlX2gKLSNkZWZpbmUgV2F5bGFuZEV2ZW50U291cmNlX2gK
LQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8
d2F5bGFuZC1zZXJ2ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXYXlsYW5k
RXZlbnRTb3VyY2UgewotcHVibGljOgotICAgIHN0YXRpYyBHU291cmNlKiBjcmVhdGVEaXNwbGF5
RXZlbnRTb3VyY2Uoc3RydWN0IHdsX2Rpc3BsYXkqKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNlbmRpZiAvLyBXYXlsYW5k
RXZlbnRTb3VyY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTcxYWIxOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2F5bGFuZFN1cmZhY2UuaCIKLQotI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKLSNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oIgotI2luY2x1ZGUg
PEVHTC9lZ2wuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIGZyYW1lQ2FsbGJhY2so
dm9pZCosIHN0cnVjdCB3bF9jYWxsYmFjayogY2FsbGJhY2ssIHVpbnQzMl90KQotewotICAgIGlm
IChjYWxsYmFjaykKLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7Ci19Ci0K
LXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgZnJhbWVMaXN0ZW5lciA9
IHsKLSAgICBmcmFtZUNhbGxiYWNrCi19OwotCi1XYXlsYW5kU3VyZmFjZTo6V2F5bGFuZFN1cmZh
Y2Uoc3RydWN0IHdsX3N1cmZhY2UqIHdsU3VyZmFjZSwgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRp
dmVXaW5kb3cpCi0gICAgOiBtX3dsU3VyZmFjZSh3bFN1cmZhY2UpCi0gICAgLCBtX25hdGl2ZVdp
bmRvdyhuYXRpdmVXaW5kb3cpCi17Ci19Ci0KLVdheWxhbmRTdXJmYWNlOjp+V2F5bGFuZFN1cmZh
Y2UoKQotewotICAgIC8vIFRoZSBzdXJmYWNlIGNvdWxkbid0IGhhdmUgYmVlbiBjcmVhdGVkIGlu
IHRoZSBmaXJzdCBwbGFjZSBpZiBXYXlsYW5kRGlzcGxheSB3YXNuJ3QgcHJvcGVybHkgaW5pdGlh
bGl6ZWQuCi0gICAgY29uc3QgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCYgd2F5bGFuZERpc3BsYXkg
PSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSk7Ci0gICAgQVNTRVJUKHdheWxhbmREaXNwbGF5Lm5hdGl2ZSgpKTsKLSAgICBl
Z2xNYWtlQ3VycmVudCh3YXlsYW5kRGlzcGxheS5uYXRpdmUoKSwgRUdMX05PX1NVUkZBQ0UsIEVH
TF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICB3bF9lZ2xfd2luZG93X2Rlc3Ry
b3kobV9uYXRpdmVXaW5kb3cpOwotICAgIHdsX3N1cmZhY2VfZGVzdHJveShtX3dsU3VyZmFjZSk7
Ci19Ci0KLXZvaWQgV2F5bGFuZFN1cmZhY2U6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQot
ewotICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fbmF0aXZlV2luZG93LCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCksIDAsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlR0xDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gR0xDb250
ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG1fbmF0aXZlV2luZG93LCBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCkpOwotfQotCi12b2lkIFdheWxhbmRTdXJmYWNlOjpyZXF1ZXN0RnJhbWUo
KQotewotICAgIHN0cnVjdCB3bF9jYWxsYmFjayogZnJhbWVDYWxsYmFjayA9IHdsX3N1cmZhY2Vf
ZnJhbWUobV93bFN1cmZhY2UpOwotICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihmcmFtZUNh
bGxiYWNrLCAmZnJhbWVMaXN0ZW5lciwgdGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5ZjIyYjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgIFdheWxhbmRTdXJmYWNlX2gKLSNkZWZpbmUgIFdheWxhbmRT
dXJmYWNlX2gKLQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRlIDx3YXlsYW5kLWNs
aWVudC5oPgotCi0jaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdscGxh
dGZvcm0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHTENvbnRleHRFR0w7Ci1j
bGFzcyBJbnRTaXplOwotCi1jbGFzcyBXYXlsYW5kU3VyZmFjZSB7Ci1wdWJsaWM6Ci0gICAgV2F5
bGFuZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqLCBFR0xOYXRpdmVXaW5kb3dUeXBlKTsKLSAg
ICB+V2F5bGFuZFN1cmZhY2UoKTsKLQotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlKCkg
eyByZXR1cm4gbV93bFN1cmZhY2U7IH0KLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdp
bmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93OyB9Ci0KLSAgICB2b2lkIHJlc2l6
ZShjb25zdCBJbnRTaXplJik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBj
cmVhdGVHTENvbnRleHQoKTsKLQotICAgIHZvaWQgcmVxdWVzdEZyYW1lKCk7Ci0KLXByaXZhdGU6
Ci0gICAgc3RydWN0IHdsX3N1cmZhY2UqIG1fd2xTdXJmYWNlOwotICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgbV9uYXRpdmVXaW5kb3c7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQotCi0jZW5kaWYgLy8gV2F5bGFuZFN1cmZhY2VfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJL
aXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFhOTNjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFBy
b3RvY29sLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvdG9jb2wgbmFtZT0id2xfd2Via2l0Z3RrIj4K
LQotICA8Y29weXJpZ2h0PgotICAgIENvcHlyaWdodCDCqSAyMDE0IElnYWxpYSBTLkwuCi0KLSAg
ICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0
aGlzCi0gICAgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBp
cyBoZXJlYnkgZ3JhbnRlZAotICAgIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgotICAgIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90
aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgotICAgIG5vdGljZSBh
cHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgot
ICAgIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBw
dWJsaWNpdHkKLSAgICBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYywKLSAgICB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29w
eXJpZ2h0IGhvbGRlcnMgbWFrZSBubwotICAgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3Vp
dGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0gICAgcHVycG9zZS4gIEl0IGlzIHBy
b3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKLSAgICB3YXJyYW50eS4K
LQotICAgIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRI
IFJFR0FSRCBUTyBUSElTCi0gICAgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKLSAgICBGSVRORVNTLCBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAgICBTUEVDSUFM
LCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSAgICBX
SEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdI
RVRIRVIgSU4KLSAgICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIg
VE9SVElPVVMgQUNUSU9OLAotICAgIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCi0gICAgVEhJUyBTT0ZUV0FSRS4KLSAgPC9jb3B5
cmlnaHQ+Ci0KLSAgPGludGVyZmFjZSBuYW1lPSJ3bF93ZWJraXRndGsiIHZlcnNpb249IjEiPgot
ICAgIDxyZXF1ZXN0IG5hbWU9InNldF9zdXJmYWNlX2Zvcl93aWRnZXQiPgotICAgICAgPGFyZyBu
YW1lPSJzdXJmYWNlIiB0eXBlPSJvYmplY3QiIGludGVyZmFjZT0id2xfc3VyZmFjZSIvPgotICAg
ICAgPGFyZyBuYW1lPSJpZCIgdHlwZT0idWludCIvPgotICAgIDwvcmVxdWVzdD4KLQotICA8L2lu
dGVyZmFjZT4KLQotPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2xVbmlxdWVQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2xVbmlxdWVQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42ZWMzMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQtcHJv
dG9jb2wuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci1jb3JlLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBXbFB0ckRlbGV0ZXIgewor
ICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwdHIpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBXbFVuaXF1ZVB0ciA9IHN0ZDo6
dW5pcXVlX3B0cjxULCBXbFB0ckRlbGV0ZXI8VD4+OworCisjZGVmaW5lIEZPUl9FQUNIX1dBWUxB
TkRfREVMRVRFUihtYWNybykgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9kaXNwbGF5LCB3bF9kaXNw
bGF5X2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfZ2xvYmFsLCB3bF9nbG9iYWxfZGVz
dHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9zdXJmYWNlLCB3bF9zdXJmYWNlX2Rlc3Ryb3kp
IFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfY29tcG9zaXRvciwgd2xfY29tcG9zaXRvcl9kZXN0cm95
KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX3JlZ2lzdHJ5LCB3bF9yZWdpc3RyeV9kZXN0cm95KSBc
CisgICAgbWFjcm8oc3RydWN0IHdsX3Byb3h5LCB3bF9wcm94eV9kZXN0cm95KQorCisjZGVmaW5l
IERFRklORV9XQVlMQU5EX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgV2xQdHJEZWxldGVyPHR5cGVOYW1lPiBcCisgICAgeyBcCisgICAgICAg
IHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAorICAgICAgICB7IFwKKyAg
ICAgICAgICAgIGlmIChwdHIpIFwKKyAgICAgICAgICAgICAgICBkZWxldGVyRnVuYyhwdHIpOyBc
CisgICAgICAgIH0gXAorICAgIH07CisKK0ZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUihERUZJTkVf
V0FZTEFORF9ERUxFVEVSKQorI3VuZGVmIEZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUgorI3VuZGVm
IERFRklORV9XQVlMQU5EX0RFTEVURVIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0YjFjZjZiLi5kYzIw
ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDgtMTYgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFj
Y2VsZXJhdGVkIGNvbXBvc2l0aW5nIGRvZXMgbm90IHdvcmsgaW4gV2F5bGFuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRvIHRoZSBuZXcg
R0xDb250ZXh0IEFQSS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKToKKwogMjAxNi0wOC0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBEb2N1
bWVudCYgaW5zdGVhZCBvZiBEb2N1bWVudCogd2hlbiBnZXR0aW5nIGNvb2tpZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCA5YTI2ZDkyLi4xNzgxN2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSgpCiAKICAgICAvLyBUaGUg
Y3JlYXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5HTCBjb250
ZXh0LgogICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6
OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRl
eHQoKSk7CisgICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldp
bmRvdyhtX3dpbmRvdyk7CiAKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjgyLDcgKzI4Miw3IEBAIGJvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDcmVhdGUgR0wgY29udGV4dC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHRl
c3RXaW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyh0ZXN0V2luZG93KTsKIAogICAgIGlmICghY29udGV4dCkgewogICAgICAgICA6
OkRlc3Ryb3lXaW5kb3codGVzdFdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTdmMmJlZi4uMjBkZjhm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NSBAQAorMjAxNi0wOC0xNiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWNjZWxlcmF0
ZWQgY29tcG9zaXRpbmcgZG9lcyBub3Qgd29yayBpbiBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBpbml0aWFsIGltcGxl
bWVudGF0aW9uIG9mIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHN1cHBvcnQgaW4gV2F5bGFuZCBm
b3IgdGhlIEdUSysgcG9ydC4gSXQncyBiYXNlZAorICAgICAgICBvbiBwcmV2aW91cyBwYXRjaGVz
IHdyaXR0ZW4gYnkgSWFnbyBUb3JhbCwgxb1hbiBEb2JlcsWhZWssIEVtYW51ZWxlIEFpbmEgYW5k
IEVtaWxpbyBQb3p1ZWxvIE1vbmZvcnQuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIFdlYktpdEdU
SysgV2F5bGFuZCBpbnRlcmZhY2UgcHJldmlvdXNseSBhZGRlZCBmb3IgdGhpcyB0byBXZWJDb3Jl
IGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBXZWJLaXQyCisgICAgICAgIGxheWVyLCBzaW5jZSBpdCdz
IGFjdHVhbGx5IHNwZWNpZmljIHRvIFdlYktpdDIsIGFuZCBpdCdzIG5vdyBhY3R1YWxseSB1c2Vk
LiBUaGUgVUkgcHJvY2VzcyBydW5zIGEgbmVzdGVkIFdheWxhbmQKKyAgICAgICAgY29tcG9zaXRv
ciB0aGF0IHdlYiBwcm9jZXNzZXMgY29ubmVjdCB0by4gV2ViIHByb2Nlc3NlcyBjcmVhdGUgYSBX
YXlsYW5kIHN1cmZhY2UgaW4gdGhlIG5lc3RlZCBjb21wb3NpdG9yIGZvcgorICAgICAgICB0aGUg
d2ViIHBhZ2UsIGFuZCB1c2luZyB0aGUgV2ViS2l0R1RLKyBXYXlsYW5kIHByb3RvY29sIGludGVy
ZmFjZSB0aGV5IHRlbGwgdGhlIG5lc3RlZCBjb21wb3NpdG9yIHRoZSB3ZWIgcGFnZQorICAgICAg
ICBhc3NvY2lhdGVkIHRvIHRoZSBzdXJmYWNlLiBBIFdheWxhbmQgd2luZG93IGlzIGNyZWF0ZWQg
Zm9yIHRoYXQgc3VyZmFjZSB0aGF0IGlzIHRoZW4gdXNlZCBhcyB0aGUgbmF0aXZlIHdpbmRvdwor
ICAgICAgICBoYW5kbGUgZm9yIGNvbXBvc2l0aW5nLiBUbyBjb21tdW5pY2F0ZSB3aXRoIHRoZSBu
ZXN0ZWQgY29tcG9zaXRvciBhbmQgdG8gZW5zdXJlIGFsbCBHTCBvcGVyYXRpb25zIGhhcHBlbiBp
biB0aGUKKyAgICAgICAgbmVzdGVkIGNvbXBvc2l0b3IgZGlzcGxheSwgdGhlIHdlYiBwcm9jZXNz
IGNyZWF0ZXMgYSBXYXlsYW5kIGRpc3BsYXkgdGhhdCBjb25uZWN0cyB0byB0aGUgbmVzdGVkIGNv
bXBvc2l0b3IsCisgICAgICAgIHVzZXMgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBpbnRlcmZhY2Ug
YW5kIGl0J3Mgc2V0IGFzIHRoZSBnbG9iYWwgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5n
LgorCisgICAgICAgIFRoZSBuZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNyZWF0ZXMgYSBuZXcg
ZGlzcGxheSB3aXRoIGEgdW5pcXVlIG5hbWUgdGhhdCBpcyBzZW50IHRvIHRoZSB3ZWIgcHJvY2Vz
c2VzIGF0CisgICAgICAgIHN0YXJ0IHVwLiBJdCBpbXBsZW1lbnRzIHRoZSBXYXlsYW5kIHN1cmZh
Y2UgaW50ZXJmYWNlIHRvIGhhbmRsZSB0aGUgV2F5bGFuZCBidWZmZXJzIGNyZWF0ZWQgZm9yIGV2
ZXJ5IHN1cmZhY2UKKyAgICAgICAgYW5kIHNjaGVkdWxpbmcgcmVkcmF3cyBvbiB0aGUgd2ViIHBh
Z2VzIHdoZW4gdXBkYXRlcyBhcmUgYXZhaWxhYmxlLiBJdCB1c2VzIHRoZSBXZWJLaXRHVEsrIFdh
eWxhbmQgaW50ZXJmYWNlIHRvCisgICAgICAgIGFzc29jaWF0ZSB0aGUgc3VyZmFjZXMgdG8gYSBw
YXJ0aWN1bGFyIHdlYiBwYWdlLiBBIHRleHR1cmUgaXMgY3JlYXRlZCBmb3IgZXZlcnkgc3VyZmFj
ZSBhbmQgdXBkYXRlZCB3aXRoIHRoZQorICAgICAgICBXYXlsYW5kIGJ1ZmZlciBjb250ZW50cyB1
c2luZyBhbiBFR0xJbWFnZUtIUiBhbmQgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMmQgQVBJLgorCisg
ICAgICAgIFRvIGFic3RyYWN0IHRoZSBwbGF0Zm9ybSBkaWZmZXJlbmNlcyBhbmQgYXZvaWQgaWZk
ZWZzIGFzIG11Y2ggYXMgcG9zc2libGUsIG5ldyBhYnN0cmFjdCBjbGFzc2VzIGhhdmUgYmVlbiBh
ZGRlZAorICAgICAgICB0byByZXByZXNlbnQgdGhlIHN1cmZhY2VzIHVzZWQgaW4gYWNjZWxlcmF0
ZWQgY29tcG9zaXRpbmcuIEFjY2VsZXJhdGVkU3VyZmFjZSBpcyB1c2VkIGJ5IHRoZSB3ZWIgcHJv
Y2VzcyBhbmQKKyAgICAgICAgcmVwcmVzZW50cyB0aGUgc3VyZmFjZSB3aGVyZSBjb250ZW50cyBh
cmUgcmVuZGVyZWQgaW50by4gVGhlIFgxMSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgcmVkaXJlY3Rl
ZCBYQ29tcG9zaXRlCisgICAgICAgIHdpbmRvdywgYW5kIHRoZSBXYXlsYW5kIGltcGxlbWVudGF0
aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIFdheWxhbmQgc3VyZmFjZSBhZGRlZCB0
byBXZWJDb3JlIGJ1dCBuZXZlcgorICAgICAgICB1c2VkLiBJbiB0aGUgVUkgcHJvY2VzcyB0aGUg
d2ViIHZpZXcgY3JlYXRlcyBhbiBhYnN0cmFjdCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSB0aGF0
IGlzIHVzZWQgdG8gcmVuZGVyIHRoZQorICAgICAgICBBY2NlbGVyYXRlZFN1cmZhY2UgaW50byB0
aGUgd2ViIHZpZXcgdXNpbmcgY2Fpcm8uIFRoZSBYMTEgaW1wbGVtZW50YXRpb24gY3JlYXRlcyB0
aGUgY2Fpcm8gc3VyZmFjZSBmb3IgdGhlCisgICAgICAgIHJlZGlyZWN0ZWQgWENvbXBvc2l0ZSB3
aW5kb3cgcGl4bWFwIGFuZCB1c2VzIFhEYW1hZ2UgZXh0ZW5zaW9uIHRvIHNjaGVkdWxlIHJlZHJh
d3MuIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uCisgICAgICAgIGFza3MgdGhlIG5lc3RlZCBX
YXlsYW5kIGNvbXBvc2l0b3IgZm9yIHRoZSB0ZXh0dXJlIGFzc29jaWF0ZWQgdG8gdGhlIHdlYiB2
aWV3IHBhZ2UuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm93IGFsd2F5
cyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gYm90aCBYMTEgYW5kIFdheWxhbmQsIHVubGVzcyBpdCdz
IGV4cGxpY2l0bHkKKyAgICAgICAgZGlzYWJsZWQgYnkgdGhlIHVzZXIgdXNpbmcgdGhlIFdFQktJ
VF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIGlmIGFu
eSBleHRlbnNpb24gb3IKKyAgICAgICAgZmVhdHVyZSByZXF1aXJ0ZWQgYnkgWDExIG9yIFdheWxh
bmQgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgYXZhaWxhYmxlLgorCisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkQ29tcG9zaXRvcjo6Z2xDb250ZXh0KTogUGFzcyB0aGUgc2hhcmVkIGRpc3BsYXkgZm9y
IGNvbXBvc2l0aW5nIHRvIEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdygpCisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOiBFbmNvZGUgd2F5
bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKTogRGVjb2RlIHdheWxhbmQgY29tcG9zaXRvciBk
aXNwbGF5IG5hbWUuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDogQWRkIHdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IG5hbWUgaW5pdGlhbCBwYXJhbWV0
ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlRHJhdyk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFeGl0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgdGhlIHdheWxhbmQg
Y29tcG9zaXRvciBkaXNwbGF5IG5hbWUgaW5pdGlhbCBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6On5BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWlu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZDo6cGFpbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlm
aWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OmFkZCk6
CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YktpdDo6WERhbWFnZU5vdGlmaWVyOjpmaWx0ZXJYRGFtYWdlRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpYRGFtYWdlTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEpOgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnVw
ZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWlu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24pOgor
ICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpnZXRPckNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OkJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6On5CdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpkZXN0cm95TGlzdGVuZXJD
YWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVz
ZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVudXNlKToK
KyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRlSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpzaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OlN1cmZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6flN1cmZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6bWFrZVBlbmRpbmdCdWZm
ZXJDdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6
OmF0dGFjaEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJm
YWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
U3VyZmFjZTo6cHJlcGFyZVRleHR1cmVGb3JQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6Oldh
eWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpjb21taXQpOgorICAgICAgICAoV2ViS2l0OjpXYXls
YW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVdh
eWxhbmRMb29wU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6Oldh
eWxhbmRDb21wb3NpdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6Omdl
dFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6YmluZFN1cmZh
Y2VUb1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6cmVnaXN0
ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OnVucmVnaXN0
ZXJXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpjcmVh
dGVXZWFrUHRyKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6
OnNldFdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6aXNSdW5u
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmRpc3BsYXlOYW1lKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpk
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJh
dGVkU3VyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZh
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6QWNjZWxl
cmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjp+QWNj
ZWxlcmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpy
ZXNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJm
YWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OndpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6c3VyZmFjZUlEKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6QWNjZWxlcmF0ZWRTdXJm
YWNlV2F5bGFuZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6
On5BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRTdXJmYWNlV2F5bGFuZDo6cmVzaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5jcHAuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpBY2NlbGVyYXRl
ZFN1cmZhY2VYMTEpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6On5B
Y2NlbGVyYXRlZFN1cmZhY2VYMTEpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZh
Y2VYMTE6OnJlc2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVy
YXRlZFN1cmZhY2VYMTEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3RrKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
R3RrOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6UmVuZGVyRnJhbWVTY2hlZHVs
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB0
aGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6d2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5TmFtZSk6IFJldHVybiB0aGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkg
bmFtZS4KKwogMjAxNi0wOC0yNCAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gRml4IHRlc3RfZXdrMl92aWV3CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IDM0M2U5NmIuLjA5ODBmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0yOTUsMTMgKzI5NSwxNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIu
Y3BwCiAKKyAgICBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcAorICAg
IFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorICAgIFVJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCiAgICAgVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9FeHBlcmltZW50
YWxGZWF0dXJlcy5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0dlc3R1cmVDb250cm9sbGVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCiAgICAgVUlQcm9jZXNzL2d0
ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2Vy
R3RrLmNwcAotICAgIFVJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmNwcAorICAgIFVJUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9XZWJDb2xv
clBpY2tlckd0ay5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
Y3BwCiAgICAgVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuQ2xpZW50R3RrLmNwcApAQCAtMzUw
LDggKzM1MywxMCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9nc3RyZWFtZXIvV2ViUGFnZUdTdHJlYW1lci5jcHAKIAorICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAorICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAKKyAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5j
cHAKQEAgLTM2OCw2ICszNzMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0RFUklWRURfU09VUkNF
UwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9JbnNwZWN0b3JHUmVzb3Vy
Y2VCdW5kbGUuYwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQy
SW5zcGVjdG9yR1Jlc291cmNlQnVuZGxlLmMKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQy
R1RLX0RJUn0vV2ViS2l0MlJlc291cmNlc0dSZXNvdXJjZUJ1bmRsZS5jCisgICAgJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwog
CiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRFbnVtVHlw
ZXMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRN
YXJzaGFsLmNwcApAQCAtNjg0LDYgKzY5MCwxNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
VkVSQkFUSU0KICkKIAoraWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdFVCkKKyAgICAjIFdheWxhbmQg
cHJvdG9jb2wgZXh0ZW5zaW9uLgorICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VU
UFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVu
dFByb3RvY29sLmMKKyAgICAgICAgREVQRU5EUyAke1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dl
YktpdDJXYXlsYW5kUHJvdG9jb2wueG1sCisgICAgICAgIENPTU1BTkQgd2F5bGFuZC1zY2FubmVy
IHNlcnZlci1oZWFkZXIgPCAke1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5k
UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJX
YXlsYW5kU2VydmVyUHJvdG9jb2wuaAorICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBj
bGllbnQtaGVhZGVyIDwgJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFBy
b3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5
bGFuZENsaWVudFByb3RvY29sLmgKKyAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29k
ZSA8ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwg
PiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MldheWxhbmRDbGllbnRQ
cm90b2NvbC5jCisgICAgKQorZW5kaWYgKCkKKwogaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19H
VEsyKQogICAgIHNldChQbHVnaW5Qcm9jZXNzR1RLMl9FWEVDVVRBQkxFX05BTUUgV2ViS2l0UGx1
Z2luUHJvY2VzczIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggMzQ1MjQyOC4uNTNmNjA1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9z
aXRvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCiAKICNpbmNsdWRlICJDb21wb3NpdGluZ1J1bkxvb3AuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KIAogI2lmIFVTRShPUEVOR0xfRVNfMikKQEAgLTQxLDE0ICs0MiwxNSBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZjxUaHJl
YWRlZENvbXBvc2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKENsaWVudCogY2xpZW50
LCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlKQorUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4g
VGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50KiBjbGllbnQsIHVpbnQ2NF90IG5hdGl2
ZVN1cmZhY2VIYW5kbGUsIFNob3VsZERvRnJhbWVTeW5jIGRvRnJhbWVTeW5jKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRocmVhZGVkQ29tcG9zaXRvcihjbGllbnQsIG5hdGl2ZVN1cmZh
Y2VIYW5kbGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRlZENvbXBvc2l0b3Io
Y2xpZW50LCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBkb0ZyYW1lU3luYykpOwogfQogCi1UaHJlYWRl
ZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQqIGNsaWVudCwgdWludDY0X3Qg
bmF0aXZlU3VyZmFjZUhhbmRsZSkKK1RocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3Np
dG9yKENsaWVudCogY2xpZW50LCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGRE
b0ZyYW1lU3luYyBkb0ZyYW1lU3luYykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
bmF0aXZlU3VyZmFjZUhhbmRsZShuYXRpdmVTdXJmYWNlSGFuZGxlKQorICAgICwgbV9kb0ZyYW1l
U3luYyhkb0ZyYW1lU3luYykKICAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91
bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkp
CiB7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CkBAIC0xNjQsMzQgKzE2NiwyNSBAQCB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6c2NoZWR1bGVEaXNwbGF5SW1tZWRpYXRlbHkoKQogICAgIG1f
Y29tcG9zaXRpbmdSdW5Mb29wLT5zdGFydFVwZGF0ZVRpbWVyKENvbXBvc2l0aW5nUnVuTG9vcDo6
SW1tZWRpYXRlKTsKIH0KIAotYm9vbCBUaHJlYWRlZENvbXBvc2l0b3I6OnRyeUVuc3VyZUdMQ29u
dGV4dCgpCitib29sIFRocmVhZGVkQ29tcG9zaXRvcjo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsK
LSAgICBpZiAoIWdsQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKLSAgICBnbENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gVGhlIHdp
bmRvdyBzaXplIG1heSBiZSBvdXQgb2Ygc3luYyB3aXRoIHRoZSBwYWdlIHNpemUgYXQgdGhpcyBw
b2ludCwgYW5kIGdldHRpbmcKLSAgICAvLyB0aGUgdmlld3BvcnQgcGFyYW1ldGVycyBpbmNvcnJl
Y3QsIG1lYW5zIHRoYXQgdGhlIGNvbnRlbnQgd2lsbCBiZSBtaXNwbGFjZWQuIFRodXMKLSAgICAv
LyB3ZSBzZXQgdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgZGlyZWN0bHkgZnJvbSB0aGUgd2luZG93
IHNpemUuCi0gICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9IGdsQ29udGV4dCgpLT5kZWZhdWx0RnJh
bWVCdWZmZXJTaXplKCk7Ci0gICAgaWYgKG1fdmlld3BvcnRTaXplICE9IGNvbnRleHRTaXplKSB7
Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwgY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNp
emUuaGVpZ2h0KCkpOwotICAgICAgICBtX3ZpZXdwb3J0U2l6ZSA9IGNvbnRleHRTaXplOwotICAg
IH0KKyAgICBpZiAoIW1fbmF0aXZlU3VyZmFjZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVh
dGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5kb3dUeXBlPiht
X25hdGl2ZVN1cmZhY2VIYW5kbGUpLCAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotR0xDb250ZXh0KiBUaHJlYWRlZENvbXBvc2l0b3I6OmdsQ29udGV4dCgpCi17Ci0gICAg
aWYgKG1fY29udGV4dCkKLSAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghbV9uYXRpdmVTdXJmYWNlSGFuZGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBpZiAobV9kb0ZyYW1lU3luYyA9PSBTaG91bGREb0ZyYW1lU3luYzo6Tm8pCisgICAg
ICAgIG1fY29udGV4dC0+c3dhcEludGVydmFsKDApOwogCi0gICAgbV9jb250ZXh0ID0gR0xDb250
ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5k
b3dUeXBlPihtX25hdGl2ZVN1cmZhY2VIYW5kbGUpLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCkpOwotICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpmb3JjZVJlcGFpbnQoKQpAQCAtMjE2LDkgKzIwOSwx
OCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBpZiAo
IW1fc2NlbmUgfHwgIW1fc2NlbmUtPmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghdHJ5RW5zdXJlR0xDb250ZXh0KCkpCisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gVGhlIHdpbmRvdyBzaXplIG1heSBiZSBvdXQg
b2Ygc3luYyB3aXRoIHRoZSBwYWdlIHNpemUgYXQgdGhpcyBwb2ludCwgYW5kIGdldHRpbmcKKyAg
ICAvLyB0aGUgdmlld3BvcnQgcGFyYW1ldGVycyBpbmNvcnJlY3QsIG1lYW5zIHRoYXQgdGhlIGNv
bnRlbnQgd2lsbCBiZSBtaXNwbGFjZWQuIFRodXMKKyAgICAvLyB3ZSBzZXQgdGhlIHZpZXdwb3J0
IHBhcmFtZXRlcnMgZGlyZWN0bHkgZnJvbSB0aGUgd2luZG93IHNpemUuCisgICAgSW50U2l6ZSBj
b250ZXh0U2l6ZSA9IG1fY29udGV4dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOworICAgIGlm
IChtX3ZpZXdwb3J0U2l6ZSAhPSBjb250ZXh0U2l6ZSkgeworICAgICAgICBnbFZpZXdwb3J0KDAs
IDAsIGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
bV92aWV3cG9ydFNpemUgPSBjb250ZXh0U2l6ZTsKKyAgICB9CisKICAgICBGbG9hdFJlY3QgY2xp
cFJlY3QoMCwgMCwgbV92aWV3cG9ydFNpemUud2lkdGgoKSwgbV92aWV3cG9ydFNpemUuaGVpZ2h0
KCkpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdmlld3BvcnRUcmFuc2Zvcm07CkBAIC0y
MzIsNyArMjM0LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgp
CiAgICAgfQogICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdwb3J0VHJh
bnNmb3JtLCAxLCBjbGlwUmVjdCwgQ29sb3I6OnRyYW5zcGFyZW50LCAhbV9kcmF3c0JhY2tncm91
bmQsIHNjcm9sbFBvc3Rpb24pOwogCi0gICAgZ2xDb250ZXh0KCktPnN3YXBCdWZmZXJzKCk7Cisg
ICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRv
cjo6dXBkYXRlU2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5oCmluZGV4IDA0MmM2OWYuLjYzNjg0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTU3LDcgKzU3
LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVp
bnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogICAg
IH07CiAKLSAgICBzdGF0aWMgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gY3JlYXRlKENsaWVudCos
IHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUgPSAwKTsKKyAgICBlbnVtIGNsYXNzIFNob3Vs
ZERvRnJhbWVTeW5jIHsgTm8sIFllcyB9OworCisgICAgc3RhdGljIFJlZjxUaHJlYWRlZENvbXBv
c2l0b3I+IGNyZWF0ZShDbGllbnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlID0gMCwg
U2hvdWxkRG9GcmFtZVN5bmMgPSBTaG91bGREb0ZyYW1lU3luYzo6WWVzKTsKICAgICB2aXJ0dWFs
IH5UaHJlYWRlZENvbXBvc2l0b3IoKTsKIAogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRs
ZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KTsKQEAgLTc3LDcgKzc5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZm9yY2VSZXBhaW50KCk7CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkZWRDb21wb3NpdG9y
KENsaWVudCosIHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUpOworICAgIFRocmVhZGVkQ29t
cG9zaXRvcihDbGllbnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0Zy
YW1lU3luYyk7CiAKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQKICAgICB2
b2lkIHJlbmRlck5leHRGcmFtZSgpIG92ZXJyaWRlOwpAQCAtOTAsOCArOTIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVuZGVyTGF5ZXJUcmVlKCk7CiAgICAgdm9pZCBzY2hlZHVsZURpc3BsYXlJ
bW1lZGlhdGVseSgpOwogCi0gICAgYm9vbCB0cnlFbnN1cmVHTENvbnRleHQoKTsKLSAgICBXZWJD
b3JlOjpHTENvbnRleHQqIGdsQ29udGV4dCgpOworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAKICAgICBDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU+IG1fc2NlbmU7CkBAIC0xMDIsNiArMTAzLDcgQEAgcHJpdmF0
ZToKICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yIHsgMSB9OwogICAgIGJvb2wgbV9kcmF3
c0JhY2tncm91bmQgeyB0cnVlIH07CiAgICAgdWludDY0X3QgbV9uYXRpdmVTdXJmYWNlSGFuZGxl
OworICAgIFNob3VsZERvRnJhbWVTeW5jIG1fZG9GcmFtZVN5bmM7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX2NvbXBvc2l0aW5nUnVuTG9vcDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggOWViYjQzZC4uMjE5OGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTQ1LDYgKzE0
NSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgT1MoTElOVVgpCiAgICAgZW5jb2RlciA8PCBtZW1v
cnlQcmVzc3VyZU1vbml0b3JIYW5kbGU7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisgICAgZW5jb2RlciA8PCB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2VuZGlmCiB9
CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAg
LTMwNSw2ICszMDksMTEgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
aW5kZXggZmYyMDA1Yy4uYzI2YzRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNzAsNiArMTcwLDEwIEBAIHN0
cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBPUyhMSU5VWCkKICAgICBJ
UEM6OkF0dGFjaG1lbnQgbWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlOwogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShXQVlMQU5EKQorICAgIFN0cmluZyB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlO
YW1lOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDYxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sCkBAIC0w
LDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJv
dG9jb2wgbmFtZT0id2xfd2Via2l0Z3RrIj4KKworICA8Y29weXJpZ2h0PgorICAgIENvcHlyaWdo
dCDCqSAyMDE0IElnYWxpYSBTLkwuCisKKyAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9k
aWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzCisgICAgc29mdHdhcmUgYW5kIGl0cyBkb2N1
bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZAorICAgIHdpdGhvdXQg
ZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgor
ICAgIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbgorICAgIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0
aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgorICAgIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3Qg
YmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKKyAgICBwZXJ0YWluaW5nIHRvIGRp
c3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywKKyAgICB3cml0dGVu
IHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMgbWFrZSBubworICAgIHJl
cHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3Ig
YW55CisgICAgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNz
IG9yIGltcGxpZWQKKyAgICB3YXJyYW50eS4KKworICAgIFRIRSBDT1BZUklHSFQgSE9MREVSUyBE
SVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTCisgICAgU09GVFdBUkUs
IElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQK
KyAgICBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAgICBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgT1IgQU5ZIERBTUFHRVMKKyAgICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1Mg
T0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KKyAgICBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLAorICAgIEFSSVNJTkcg
T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCisg
ICAgVEhJUyBTT0ZUV0FSRS4KKyAgPC9jb3B5cmlnaHQ+CisKKyAgPGludGVyZmFjZSBuYW1lPSJ3
bF93ZWJraXRndGsiIHZlcnNpb249IjEiPgorICAgIDxyZXF1ZXN0IG5hbWU9ImJpbmRfc3VyZmFj
ZV90b19wYWdlIj4KKyAgICAgIDxhcmcgbmFtZT0ic3VyZmFjZSIgdHlwZT0ib2JqZWN0IiBpbnRl
cmZhY2U9IndsX3N1cmZhY2UiLz4KKyAgICAgIDxhcmcgbmFtZT0icGFnZV9pZCIgdHlwZT0idWlu
dCIvPgorICAgIDwvcmVxdWVzdD4KKworICA8L2ludGVyZmFjZT4KKworPC9wcm90b2NvbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCBhZDM4MTQwLi4wNmFmMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2UuaCIKIAogI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCIK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9k
RmlsdGVyLmgiCiAjaW5jbHVkZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTcyLDIzICs3
MywxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNlbmRpZgog
Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0jaW5jbHVkZSAiWERhbWFn
ZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+
Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgotI2luY2x1ZGUgPGNhaXJvLXhs
aWIuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oWDExKQogI2luY2x1ZGUgPGdkay9nZGt4Lmg+
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0jaW5jbHVkZSA8Z2RrL2dka3dheWxh
bmQuaD4KLSNlbmRpZgotCiAvLyBndGtfd2lkZ2V0X2dldF9zY2FsZV9mYWN0b3IoKSBhcHBlYXJl
ZCBpbiBHVEsgMy4xMCwgYnV0IHdlIGFsc28gbmVlZAogLy8gdG8gbWFrZSBzdXJlIHdlIGhhdmUg
Y2Fpcm8gbmV3IGVub3VnaCB0byBzdXBwb3J0IGNhaXJvX3N1cmZhY2Vfc2V0X2RldmljZV9zY2Fs
ZQogI2RlZmluZSBIQVZFX0dUS19TQ0FMRV9GQUNUT1IgSEFWRV9DQUlST19TVVJGQUNFX1NFVF9E
RVZJQ0VfU0NBTEUgJiYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTAsIDApCkBAIC0yMTEsMTAgKzE5
OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICB1bnNpZ25lZCBz
Y3JlZW5TYXZlckNvb2tpZTsKICNlbmRpZgogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1N1cmZhY2U7Ci0gICAgWFVuaXF1ZURhbWFnZSBhY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZURhbWFnZTsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZT4gYWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmFnQW5kRHJvcEhhbmRsZXI+IGRyYWdBbmREcm9w
SGFuZGxlcjsKQEAgLTM1MSw1MCArMzM2LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWUKICAg
ICAgICAgcHJpdi0+dG9wbGV2ZWxXaW5kb3dSZWFsaXplZElEID0gZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKHdpbmRvdywgInJlYWxpemUiLCBHX0NBTExCQUNLKHRvcGxldmVsV2luZG93UmVhbGl6
ZWQpLCB3ZWJWaWV3QmFzZSk7CiB9CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJ
TkRPVykKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BpeG1hcChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldywgUGl4bWFwIHBpeG1hcCkKLXsK
LSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpICE9IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6WDExKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGlmIChwcml2LT5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZQotICAgICAgICAmJiBjYWlyb194bGliX3N1cmZhY2Vf
Z2V0X2RyYXdhYmxlKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlLmdldCgpKSA9
PSBwaXhtYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZENv
bXBvc2l0aW5nU3VyZmFjZSkgewotICAgICAgICBpZiAocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1N1cmZhY2VEYW1hZ2UpIHsKLSAgICAgICAgICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xl
dG9uKCkucmVtb3ZlKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlLmdl
dCgpKTsKLSAgICAgICAgICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFt
YWdlLnJlc2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1N1cmZhY2UgPSBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghcGl4bWFwKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0
aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0Fy
ZWEoKSk7Ci0gICAgaWYgKCFkcmF3aW5nQXJlYSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50
U2l6ZSBzaXplID0gZHJhd2luZ0FyZWEtPnNpemUoKTsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IHByaXYtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBzaXplLnNj
YWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5u
YXRpdmUoKTsKLSAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gR0RLX0RJU1BMQVlfWERJU1BM
QVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSkpOwotICAgIEdka1Zpc3VhbCogdmlzdWFsID0g
Z2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAg
ICBpZiAoIXZpc3VhbCkKLSAgICAgICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zp
c3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIHByaXYtPmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShkaXNw
bGF5LCBwaXhtYXAsIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpKTsKLSAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShwcml2LT5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURh
bWFnZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBYRGFtYWdlUmVwb3J0Tm9uRW1w
dHkpOwotICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkKHByaXYtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlLmdldCgpLCBbd2ViVmlld10gewotICAgICAgICBn
dGtfd2lkZ2V0X3F1ZXVlX2RyYXcoR1RLX1dJREdFVCh3ZWJWaWV3KSk7Ci0gICAgfSk7Ci19Ci0j
ZW5kaWYKLQogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCog
d2lkZ2V0KQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2lkZ2V0KTsKQEAgLTU2NCw5ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZURpc3Bvc2UoR09iamVjdCogZ29iamVjdCkKICAgICBnX2NhbmNlbGxhYmxlX2Nh
bmNlbCh3ZWJWaWV3LT5wcml2LT5zY3JlZW5TYXZlckluaGliaXRDYW5jZWxsYWJsZS5nZXQoKSk7
CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KHdlYlZpZXcs
IG51bGxwdHIpOwogICAgIHdlYlZpZXctPnByaXYtPnBhZ2VQcm94eS0+Y2xvc2UoKTsKLSNpZiBV
U0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2ViVmlldywgMCk7Ci0jZW5kaWYKKyAgICB3
ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShn
b2JqZWN0KTsKIH0KIApAQCAtNTg1LDU1ICs1MjQsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBwcml2LT5hdXRoZW50aWNh
dGlvbkRpYWxvZyA9IDA7CiB9CiAKLXN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdSZW5kZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Us
IERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSwgY2Fpcm9fdCogY3IsIEdka1JlY3Rh
bmdsZSogY2xpcFJlY3QpCi17Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
Ci0gICAgQVNTRVJUKGRyYXdpbmdBcmVhKTsKLQotICAgIGlmICghZHJhd2luZ0FyZWEtPmlzSW5B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3
ZWJWaWV3QmFzZSktPnByaXY7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gcHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7
Ci0KLSAgICBpZiAoIXN1cmZhY2UgfHwgIXByaXYtPnBhZ2VQcm94eS0+ZHJhd3NCYWNrZ3JvdW5k
KCkpIHsKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yID0gcHJpdi0+cGFnZVBy
b3h5LT5iYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAgICAgaWYgKGNvbG9yLmhhc0FscGhhKCkpIHsK
LSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNsaXBSZWN0LT55
LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICAgICAgY2Fpcm9f
c2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgICAgICAgICBjYWly
b19maWxsKGNyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkg
ewotICAgICAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3IpOwotICAgICAg
ICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAg
ICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNs
aXBSZWN0LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7Ci0gICAgICAgICAgICBjYWlyb19maWxs
KGNyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChzdXJmYWNlKSB7Ci0gICAgICAgIC8v
IFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nlc3MgYXQgYW55IHRp
bWUsIHNvIHdlIG1hcmsgaXQKLSAgICAgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdlIGFsd2F5
cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KHN1cmZhY2UpOwotICAgICAgICBjYWlyb19yZWN0
YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlw
UmVjdC0+aGVpZ2h0KTsKLSAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJm
YWNlLCAwLCAwKTsKLSAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRP
Ul9PVkVSKTsKLSAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgfQotCi0gICAgY2Fpcm9fcmVz
dG9yZShjcik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdl
YlZpZXdCYXNlKTsKLSAgICBVTlVTRURfUEFSQU0oY3IpOwotICAgIFVOVVNFRF9QQVJBTShjbGlw
UmVjdCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogewog
ICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNF
KHdpZGdldCk7CkBAIC02NDUsNyArNTM1LDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAgICAgaWYgKCFnZGtf
Y2Fpcm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4g
RkFMU0U7CiAKLSAgICBpZiAoIXdlYmtpdFdlYlZpZXdSZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUmVzdWx0cyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0FyZWEsIGNyLCAmY2xpcFJlY3QpKSB7Cisg
ICAgaWYgKHdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSAmJiBkcmF3
aW5nQXJlYS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkpCisgICAgICAgIHdlYlZp
ZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+cGFpbnQoY3IsIGNsaXBSZWN0
KTsKKyAgICBlbHNlIHsKICAgICAgICAgV2ViQ29yZTo6UmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsg
Ly8gVGhpcyBpcyBzaW1wbHkgdW51c2VkLgogICAgICAgICBkcmF3aW5nQXJlYS0+cGFpbnQoY3Is
IGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogICAgIH0KQEAgLTEyODYsNiArMTE3OCw4IEBA
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZSwgUmVmPEFQCiAgICAgcHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+
Y3JlYXRlV2ViUGFnZSgqcHJpdi0+cGFnZUNsaWVudCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CiAgICAgcHJpdi0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCisgICAgcHJpdi0+
YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgPSBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRl
KCpwcml2LT5wYWdlUHJveHkpOworCiAgICAgcHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIuc2V0UGFn
ZShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOwogCiAjaWYgSEFWRShHVEtfU0NBTEVfRkFDVE9SKQpA
QCAtMTU2NiwyOSArMTQ2MCwyMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVzZXRDbGlja0Nv
dW50ZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogCiB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJl
ZUNvbnRleHQpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAg
d2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdl
YlZpZXdCYXNlLCBsYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFzZSk7Ci0jZW5kaWYKKyAgICBpZiAod2Via2l0V2ViVmll
d0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJW
aWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShsYXllclRyZWVD
b250ZXh0KTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdQaXhtYXAod2Via2l0V2ViVmlld0Jhc2UsIGxheWVyVHJlZUNvbnRleHQuY29u
dGV4dElEKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKLSNl
bmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZS0+dXBkYXRlKGxheWVyVHJlZUNvbnRleHQpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAo
d2Via2l0V2ViVmlld0Jhc2UsIDApOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0od2Via2l0V2Vi
Vmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYgKHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUoTGF5ZXJUcmVlQ29udGV4dCgpKTsKIH0KIAog
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCkBAIC0xNjE2LDkgKzE1MDEsOSBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZChXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKLSNlbGlmIFBMQVRGT1JNKFgxMSkg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+
YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2
LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKExheWVyVHJlZUNvbnRleHQoKSk7Cisj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkudHlwZSgpICE9IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggZDJiNjI1Yi4uMTgwNzgxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94
eS5jcHAKQEAgLTQxLDYgKzQxLDExIEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJX
YXlsYW5kQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMjE2LDYgKzIyMSwxMyBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6
d2FpdEZvckFuZERpc3BhdGNoRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKQogICAgIGlmICht
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRl
OjpMYXVuY2hpbmcpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisg
ICAgLy8gTmV2ZXIgYmxvY2sgdGhlIFVJIHByb2Nlc3MgaW4gV2F5bGFuZCB3aGVuIHdhaXRpbmcg
Zm9yIERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlIGFmdGVyIGEgcmVzaXplLAorICAgIC8vIGJl
Y2F1c2UgdGhlIG5lc3RlZCBjb21wb3NpdG9yIG5lZWRzIHRvIGhhbmRsZSB0aGUgd2ViIHByb2Nl
c3MgcmVxdWVzdHMgdGhhdCBoYXBwZW5zIHdoaWxlIHJlc2l6aW5nLgorICAgIGlmIChQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBl
OjpXYXlsYW5kICYmIFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmcoKSkK
KyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICAvLyBGSVhNRTogd2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHkgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBvbGRlc3QgRGlkVXBkYXRlQmFj
a2luZ1N0b3JlU3RhdGUgbWVzc2FnZSB0aGF0CiAgICAgLy8gaGFzbid0IHlldCBiZWVuIHByb2Nl
c3NlZC4gQnV0IGl0IG1pZ2h0IGJlIGJldHRlciB0byBza2lwIGFoZWFkIHRvIHNvbWUgb3RoZXIg
RGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUKICAgICAvLyBtZXNzYWdlLCBpZiBtdWx0aXBsZSBE
aWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBtZXNzYWdlcyBhcmUgd2FpdGluZyB0byBiZSBwcm9j
ZXNzZWQuIEZvciBpbnN0YW5jZSwgd2UgY291bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGYxNGM4YjIuLjM3NjZiMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTAxLDYgKzEwMSwxMSBAQAog
I2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlTW9uaXRvci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpAQCAtNjQwLDYgKzY0NSwx
MSBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNz
KCkKICAgICAgICAgcGFyYW1ldGVycy5tZW1vcnlQcmVzc3VyZU1vbml0b3JIYW5kbGUgPSBNZW1v
cnlQcmVzc3VyZU1vbml0b3I6OnNpbmdsZXRvbigpLmNyZWF0ZUhhbmRsZSgpOwogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAg
ICBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9z
aXRvcjo6c2luZ2xldG9uKCkuZGlzcGxheU5hbWUoKTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCk7CiAKICAgICAvLyBBZGQgYW55IHBsYXRmb3JtIHNwZWNpZmljIHBhcmFtZXRlcnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFjYWZl
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCIKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRGlzcGxheS5oPgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaCIKKyNlbmRpZgorCisjaWYgVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTEuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZT4gQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7Cisj
aWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAg
cmV0dXJuIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y3JlYXRlKHdlYlBhZ2UpOwor
I2VuZGlmCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6
OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpj
cmVhdGUod2ViUGFnZSk7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBhZ2VQcm94eSYg
d2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQoreworfQorCitBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkKK3sKK30KKworYm9vbCBBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQoreworICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yID0gbV93ZWJQ
YWdlLmJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKSB7CisgICAg
ICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBS
ZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY2Fpcm9fc2V0X29wZXJh
dG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7CisgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwor
ICAgIH0KKworICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkgeworICAgICAgICBzZXRTb3VyY2VS
R0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7CisgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwg
Q0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlw
UmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0
KCkpOworICAgICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDc2YmIyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwordHlwZWRlZiBzdHJ1Y3Qg
X2NhaXJvIGNhaXJvX3Q7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFJlY3Q7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMYXllclRyZWVDb250ZXh0OworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVhbCB+QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUoKTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludChjYWlyb190Kiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworCitwcm90ZWN0ZWQ6CisgICAgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUoV2ViUGFnZVByb3h5Jik7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFn
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNmJhNjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZC5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5E
KQorCisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWZQdHJDYWlyby5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdM
RVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL09wZW5HTFNoaW1zLmg+CisjZW5k
aWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPiBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7Cisg
ICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kPihuZXcgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
KHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFnZSkKK3sKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6
c2luZ2xldG9uKCkucmVnaXN0ZXJXZWJQYWdlKG1fd2ViUGFnZSk7Cit9CisKK0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZDo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCgpCit7
CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJXZWJQYWdlKG1f
d2ViUGFnZSk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWlu
dChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgR0x1aW50IHRl
eHR1cmU7CisgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsKKyAgICBpZiAoIVdheWxhbmRDb21wb3Np
dG9yOjpzaW5nbGV0b24oKS5nZXRUZXh0dXJlKG1fd2ViUGFnZSwgdGV4dHVyZSwgdGV4dHVyZVNp
emUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBSZWN0KTsKKworI2lmIDAKKyAg
ICAvLyBGSVhNRTogVXNlIHRoaXMgd2hlbiBHVEsrID49IDMuMTYuIEdUSysgZXhwZWN0cyB0aGUg
WSBheGlzIHRvIGJlIGludmVydGVkIHRvIHdoYXQgd2UgZ2V0LCBzbyB3ZSBuZWVkIHRvIGZsaXAg
aXQgc29tZWhvdy4KKyAgICBnZGtfY2Fpcm9fZHJhd19mcm9tX2dsKGNyLCBndGtfd2lkZ2V0X2dl
dF93aW5kb3cobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksIHRleHR1cmUsIEdMX1RFWFRVUkUsIDEs
IGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5o
ZWlnaHQoKSk7CisjZWxzZQorICAgIEludFNpemUgc2l6ZSA9IHRleHR1cmVTaXplOworICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCk7Cisg
ICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBpZiAoIW1fc3VyZmFjZSB8
fCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX3N1cmZhY2UuZ2V0KCkpICE9IHNpemUu
d2lkdGgoKSB8fCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgp
KSAhPSBzaXplLmhlaWdodCgpKQorICAgICAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19p
bWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpKTsKKyAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShtX3N1cmZhY2Uu
Z2V0KCksIGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBHTHVp
bnQgZmI7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZiKTsKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJl
LCAwKTsKKworICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAgIGds
UGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9z
dHJpZGUobV9zdXJmYWNlLmdldCgpKSAvIDQpOworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICBn
bFJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVNpemUud2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0
KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Rh
dGEobV9zdXJmYWNlLmdldCgpKSk7CisjZWxzZQorICAgIGdsUmVhZFBpeGVscygwLCAwLCB0ZXh0
dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgR0xfQkdSQSwgR0xfVU5TSUdO
RURfSU5UXzhfOF84XzhfUkVWLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFj
ZS5nZXQoKSkpOworI2VuZGlmCisgICAgZ2xQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgs
IDApOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgIGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYik7CisKKyAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUg
bW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0Cisg
ICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdlIGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29u
dGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHko
bV9zdXJmYWNlLmdldCgpKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwg
Y2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAg
Y2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAg
IGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9f
ZmlsbChjcik7CisjZW5kaWYKKworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0o
V0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRjNDIyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCisKKyNpZiBQ
TEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQgZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPiBjcmVhdGUoV2Vi
UGFnZVByb3h5Jik7CisgICAgfkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCgpOworCitw
cml2YXRlOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZChXZWJQYWdlUHJveHkm
KTsKKworICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBv
dmVycmlkZTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMy
ODMwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgiCisKKyNpZiBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBs
LmgiCisjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVk
ZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KKyNp
bmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7
CisKK2NsYXNzIFhEYW1hZ2VOb3RpZmllciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWERh
bWFnZU5vdGlmaWVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5v
dGlmaWVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgWERhbWFnZU5vdGlmaWVyJiBzaW5nbGV0b24o
KQorICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4g
bm90aWZpZXI7CisgICAgICAgIHJldHVybiBub3RpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZChEYW1hZ2UgZGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikK
KyAgICB7CisgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBnZGtfd2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtG
aWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAgICAgIG1fbm90aWZ5
RnVuY3Rpb25zLmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsKKyAgICB9CisK
KyAgICB2b2lkIHJlbW92ZShEYW1hZ2UgZGFtYWdlKQorICAgIHsKKyAgICAgICAgbV9ub3RpZnlG
dW5jdGlvbnMucmVtb3ZlKGRhbWFnZSk7CisgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5p
c0VtcHR5KCkpCisgICAgICAgICAgICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwg
cmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhp
cyk7CisgICAgfQorCitwcml2YXRlOgorICAgIFhEYW1hZ2VOb3RpZmllcigpID0gZGVmYXVsdDsK
KworICAgIHN0YXRpYyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVu
dCogZXZlbnQsIEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKKyAgICB7Cisg
ICAgICAgIGF1dG8qIHhFdmVudCA9IHN0YXRpY19jYXN0PFhFdmVudCo+KGV2ZW50KTsKKyAgICAg
ICAgaWYgKHhFdmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52YWx1ZSgpICsgWERhbWFn
ZU5vdGlmeSkKKyAgICAgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJTlVFOworCisgICAg
ICAgIGF1dG8qIGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxYRGFtYWdlTm90aWZ5RXZl
bnQqPih4RXZlbnQpOworICAgICAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVudC0+
ZGFtYWdlKSkgeworICAgICAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVudC0+eGFueS5kaXNw
bGF5LCBkYW1hZ2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKKyAgICAgICAgICAgIHJldHVy
biBHREtfRklMVEVSX1JFTU9WRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBHREtfRklM
VEVSX0NPTlRJTlVFOworICAgIH0KKworICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25v
dGlmeUZ1bmN0aW9ucy5nZXQoZGFtYWdlKSkgeworICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24o
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBIYXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
PiBtX25vdGlmeUZ1bmN0aW9uczsKK307CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMT4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZShXZWJQYWdl
UHJveHkmIHdlYlBhZ2UpCit7CisgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworICAgIGlmICgh
ZGlzcGxheS5zdXBwb3J0c1hDb21wb3NpdGUoKSB8fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2Uo
c19kYW1hZ2VFdmVudEJhc2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExPihuZXcgQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEod2ViUGFnZSkpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQor
ICAgIDogQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFnZSkKK3sKK30KKworQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTE6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSgpCit7CisgICAg
aWYgKG1fZGFtYWdlKSB7CisgICAgICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkucmVt
b3ZlKG1fZGFtYWdlLmdldCgpKTsKKyAgICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICB9Cit9
CisKK3ZvaWQgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnVwZGF0ZShjb25zdCBMYXllclRy
ZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIFBpeG1hcCBwaXhtYXAgPSBsYXll
clRyZWVDb250ZXh0LmNvbnRleHRJRDsKKyAgICBpZiAobV9zdXJmYWNlICYmIGNhaXJvX3hsaWJf
c3VyZmFjZV9nZXRfZHJhd2FibGUobV9zdXJmYWNlLmdldCgpKSA9PSBwaXhtYXApCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAgICAgaWYgKG1fZGFtYWdlKSB7
CisgICAgICAgICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShtX2RhbWFn
ZS5nZXQoKSk7CisgICAgICAgICAgICBtX2RhbWFnZS5yZXNldCgpOworICAgICAgICB9CisgICAg
ICAgIG1fc3VyZmFjZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFwaXhtYXApCisgICAg
ICAgIHJldHVybjsKKworICAgIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0
YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4obV93ZWJQYWdlLmRyYXdpbmdBcmVhKCkp
OworICAgIGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUg
c2l6ZSA9IGRyYXdpbmdBcmVhLT5zaXplKCk7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBzaXplLnNjYWxlKGRldmljZVNj
YWxlRmFjdG9yKTsKKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAg
ICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3Bs
YXlfZ2V0X2RlZmF1bHQoKSkpOworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3NjcmVlbl9n
ZXRfcmdiYV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyAgICBpZiAoIXZpc3Vh
bCkKKyAgICAgICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2Ny
ZWVuX2dldF9kZWZhdWx0KCkpOworICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJf
c3VyZmFjZV9jcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFs
KSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2
aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVG
YWN0b3IpOworICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIFhE
YW1hZ2VSZXBvcnROb25FbXB0eSk7CisgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5h
ZGQobV9kYW1hZ2UuZ2V0KCksIFt0aGlzXSB7CisgICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJh
dyhtX3dlYlBhZ2Uudmlld1dpZGdldCgpKTsKKyAgICB9KTsKK30KKworYm9vbCBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQoreworICAgIGlmICghbV9zdXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBjYWlyb19zYXZlKGNyKTsKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3Is
IGNsaXBSZWN0KTsKKworICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUg
d2ViIHByb2Nlc3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKKyAgICAvLyBhcyBkaXJ0eSB0
byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFz
IHBvc3NpYmxlLgorICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkp
OworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNs
aXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19zZXRfc291cmNl
X3N1cmZhY2UoY3IsIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJh
dG9yKGNyLCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlh
N2MyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEgZmlu
YWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIH5BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMSgpOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDEx
KFdlYlBhZ2VQcm94eSYpOworCisgICAgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFj
ZTsKKyAgICBXZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1fZGFtYWdlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYxZTljYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwCkBAIC0wLDAgKzEsNTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldheWxhbmRDb21w
b3NpdG9yLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2ViS2l0Mldh
eWxhbmRTZXJ2ZXJQcm90b2NvbC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxF
R0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgorI2luY2x1ZGUgPHdheWxhbmQtc2VydmVy
LXByb3RvY29sLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wy
Lmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUv
T3BlbkdMU2hpbXMuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKyNpZiAhZGVmaW5lZChQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlX
TCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKSAoRUdM
RGlzcGxheSwgc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZO
RUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFVO
QklORFdBWUxBTkRESVNQTEFZV0wpIChFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfZGlzcGxheSopOwor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCkKK3R5cGVk
ZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFFVRVJZV0FZTEFOREJVRkZFUldMKSAoRUdMRGlzcGxheSwg
c3RydWN0IHdsX3Jlc291cmNlKiwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50KiB2YWx1ZSk7Cisj
ZW5kaWYKKworI2lmICFkZWZpbmVkKFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykKK3R5cGVkZWYg
RUdMSW1hZ2VLSFIgKCpQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0MpIChFR0xEaXNwbGF5LCBFR0xD
b250ZXh0LCBFR0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xpbnQqIGF0
dHJpYkxpc3QpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xERVNUUk9ZSU1BR0VLSFJQ
Uk9DKQordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykgKEVH
TERpc3BsYXksIEVHTEltYWdlS0hSKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZOR0xFR0xJ
TUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MpCit0eXBlZGVmIHZvaWQgKCpQRk5HTEVHTElNQUdF
VEFSR0VUVEVYVFVSRTJET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMpOwor
I2VuZGlmCisKK3N0YXRpYyBQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCBlZ2xCaW5kV2F5bGFu
ZERpc3BsYXk7CitzdGF0aWMgUEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCBlZ2xVbmJpbmRX
YXlsYW5kRGlzcGxheTsKK3N0YXRpYyBQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCBlZ2xRdWVy
eVdheWxhbmRCdWZmZXI7CitzdGF0aWMgUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DIGVnbENyZWF0
ZUltYWdlOworc3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgZWdsRGVzdHJveUltYWdl
Oworc3RhdGljIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DIGVnbEltYWdlVGFy
Z2V0VGV4dHVyZTJEOworCitXYXlsYW5kQ29tcG9zaXRvciYgV2F5bGFuZENvbXBvc2l0b3I6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9y
PiB3YXlsYW5kQ29tcG9zaXRvcjsKKyAgICByZXR1cm4gd2F5bGFuZENvbXBvc2l0b3I7Cit9CisK
K1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIqIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6Omdl
dE9yQ3JlYXRlKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKHN0cnVj
dCB3bF9saXN0ZW5lciogbGlzdGVuZXIgPSB3bF9yZXNvdXJjZV9nZXRfZGVzdHJveV9saXN0ZW5l
cihyZXNvdXJjZSwgZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2spKSB7CisgICAgICAgIFdheWxhbmRD
b21wb3NpdG9yOjpCdWZmZXIqIGJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIHdsX2NvbnRhaW5lcl9v
ZihsaXN0ZW5lciwgYnVmZmVyLCBtX2Rlc3Ryb3lMaXN0ZW5lcik7CisgICAgfQorCisgICAgcmV0
dXJuIG5ldyBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKHJlc291cmNlKTsKK30KKworV2F5bGFu
ZENvbXBvc2l0b3I6OkJ1ZmZlcjo6QnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2Up
CisgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQorICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlz
KQoreworICAgIHdsX2xpc3RfaW5pdCgmbV9kZXN0cm95TGlzdGVuZXIubGluayk7CisgICAgbV9k
ZXN0cm95TGlzdGVuZXIubm90aWZ5ID0gZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2s7CisgICAgd2xf
cmVzb3VyY2VfYWRkX2Rlc3Ryb3lfbGlzdGVuZXIobV9yZXNvdXJjZSwgJm1fZGVzdHJveUxpc3Rl
bmVyKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZlcigpCit7CisgICAg
d2xfbGlzdF9yZW1vdmUoJm1fZGVzdHJveUxpc3RlbmVyLmxpbmspOworfQorCit2b2lkIFdheWxh
bmRDb21wb3NpdG9yOjpCdWZmZXI6OmRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKHN0cnVjdCB3bF9s
aXN0ZW5lciogbGlzdGVuZXIsIHZvaWQqKQoreworICAgIFdheWxhbmRDb21wb3NpdG9yOjpCdWZm
ZXIqIGJ1ZmZlcjsKKyAgICBidWZmZXIgPSB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZl
ciwgbV9kZXN0cm95TGlzdGVuZXIpOworICAgIGRlbGV0ZSBidWZmZXI7Cit9CisKK3ZvaWQgV2F5
bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudCsrOworfQor
Cit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVudXNlKCkKK3sKKyAgICBtX2J1c3lD
b3VudC0tOworICAgIGlmICghbV9idXN5Q291bnQpCisgICAgICAgIHdsX3Jlc291cmNlX3F1ZXVl
X2V2ZW50KG1fcmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNFKTsKK30KKworRUdMSW1hZ2VLSFIg
V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRlSW1hZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUltYWdlKFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgRUdMX05PX0NPTlRFWFQsIEVHTF9X
QVlMQU5EX0JVRkZFUl9XTCwgbV9yZXNvdXJjZSwgbnVsbHB0cikpOworfQorCitJbnRTaXplIFdh
eWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIEVHTERpc3BsYXkg
ZWdsRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXko
KTsKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIoZWds
RGlzcGxheSwgbV9yZXNvdXJjZSwgRUdMX1dJRFRILCAmd2lkdGgpOworICAgIGVnbFF1ZXJ5V2F5
bGFuZEJ1ZmZlcihlZ2xEaXNwbGF5LCBtX3Jlc291cmNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsK
KworICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6
OlN1cmZhY2U6OlN1cmZhY2UoKQorICAgIDogbV9pbWFnZShFR0xfTk9fSU1BR0VfS0hSKQorewor
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtX3RleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1
cmZhY2U6On5TdXJmYWNlKCkKK3sKKyAgICAvLyBEZXN0cm95IHBlbmRpbmcgZnJhbWUgY2FsbGJh
Y2tzLgorICAgIGF1dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAg
Zm9yIChhdXRvKiByZXNvdXJjZSA6IGxpc3QpCisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3ko
cmVzb3VyY2UpOworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlci0+dW51c2Uo
KTsKKworICAgIGlmIChtX2ltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpCisgICAgICAgIGVnbERl
c3Ryb3lJbWFnZShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCks
IG1faW1hZ2UpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKK30KKwor
dm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6bWFrZVBlbmRpbmdCdWZmZXJDdXJyZW50
KCkKK3sKKyAgICBpZiAobV9wZW5kaW5nQnVmZmVyID09IG1fYnVmZmVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyLT51bnVzZSgpOworCisg
ICAgaWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyLT51c2UoKTsK
KworICAgIG1fYnVmZmVyID0gbV9wZW5kaW5nQnVmZmVyOworfQorCit2b2lkIFdheWxhbmRDb21w
b3NpdG9yOjpTdXJmYWNlOjphdHRhY2hCdWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXIp
Cit7CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyID0g
bnVsbHB0cjsKKworICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgYXV0byogY29tcG9zaXRvckJ1
ZmZlciA9IFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKGJ1ZmZlcik7Cisg
ICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IGNvbXBvc2l0b3JCdWZmZXItPmNyZWF0ZVdlYWtQdHIo
KTsKKyAgICB9Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVlc3RG
cmFtZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIHdsX3Jlc291cmNlX3Nl
dF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwgbnVsbHB0ciwgdGhpcywgW10oc3RydWN0IHdsX3Jl
c291cmNlKiByZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8
V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJl
c291cmNlKSk7CisgICAgICAgIGlmIChzaXplX3QgaXRlbSA9IHN1cmZhY2UtPm1fZnJhbWVDYWxs
YmFja0xpc3QuZmluZChyZXNvdXJjZSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBzdXJmYWNl
LT5tX2ZyYW1lQ2FsbGJhY2tMaXN0LnJlbW92ZShpdGVtKTsKKyAgICB9KTsKKyAgICBtX2ZyYW1l
Q2FsbGJhY2tMaXN0LmFwcGVuZChyZXNvdXJjZSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0
b3I6OlN1cmZhY2U6OnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQmIHRleHR1cmUs
IEludFNpemUmIHRleHR1cmVTaXplKQoreworICAgIGlmIChtX2ltYWdlID09IEVHTF9OT19JTUFH
RV9LSFIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBlZ2xJbWFnZVRhcmdldFRleHR1cmUyRChHTF9URVhU
VVJFXzJELCBtX2ltYWdlKTsKKworICAgIHRleHR1cmUgPSBtX3RleHR1cmU7CisgICAgdGV4dHVy
ZVNpemUgPSBtX2J1ZmZlci0+c2l6ZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdh
eWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpjb21taXQoKQoreworICAgIEVHTERpc3BsYXkgZWds
RGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsK
KyAgICBpZiAobV9pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICBlZ2xEZXN0cm95
SW1hZ2UoZWdsRGlzcGxheSwgbV9pbWFnZSk7CisgICAgbV9pbWFnZSA9IG1fcGVuZGluZ0J1ZmZl
ci0+Y3JlYXRlSW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQoKTsK
KyAgICBpZiAobV93ZWJQYWdlKQorICAgICAgICBtX3dlYlBhZ2UtPnNldFZpZXdOZWVkc0Rpc3Bs
YXkoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX3dlYlBhZ2UtPnZpZXdTaXplKCkpKTsKKwor
ICAgIGF1dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChh
dXRvKiByZXNvdXJjZSA6IGxpc3QpIHsKKyAgICAgICAgd2xfY2FsbGJhY2tfc2VuZF9kb25lKHJl
c291cmNlLCAwKTsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNvdXJjZSk7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc3VyZmFj
ZV9pbnRlcmZhY2Ugc3VyZmFjZUludGVyZmFjZSA9IHsKKyAgICAvLyBkZXN0cm95Q2FsbGJhY2sK
KyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkg
eworICAgICAgICB3bF9yZXNvdXJjZV9kZXN0cm95KHJlc291cmNlKTsKKyAgICB9LAorICAgIC8v
IGF0dGFjaENhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIGJ1ZmZlciwgaW50MzJf
dCBzeCwgaW50MzJfdCBzeSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8
V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJl
c291cmNlKSk7CisgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBFR0xpbnQgZm9ybWF0OworICAgICAgICBpZiAoIWVnbFF1ZXJ5V2F5bGFuZEJ1ZmZl
cihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIGJ1ZmZlciwg
RUdMX1RFWFRVUkVfRk9STUFULCAmZm9ybWF0KQorICAgICAgICAgICAgfHwgKGZvcm1hdCAhPSBF
R0xfVEVYVFVSRV9SR0IgJiYgZm9ybWF0ICE9IEVHTF9URVhUVVJFX1JHQkEpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHN1cmZhY2UtPmF0dGFjaEJ1ZmZlcihidWZmZXIpOworICAg
IH0sCisgICAgLy8gZGFtYWdlQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3Ry
dWN0IHdsX3Jlc291cmNlKiwgaW50MzJfdCwgaW50MzJfdCwgaW50MzJfdCwgaW50MzJfdCkgewor
ICAgIH0sCisgICAgLy8gZnJhbWVDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNs
aWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMyX3QgaWQpIHsKKyAgICAg
ICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNl
Kj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1
cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0cnVjdCB3bF9yZXNv
dXJjZSogY2FsbGJhY2tSZXNvdXJjZSA9IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9j
YWxsYmFja19pbnRlcmZhY2UsIDEsIGlkKSkKKyAgICAgICAgICAgIHN1cmZhY2UtPnJlcXVlc3RG
cmFtZShjYWxsYmFja1Jlc291cmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2xfY2xp
ZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgfSwKKyAgICAvLyBzZXRPcGFxdWVSZWdp
b25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2Uq
LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqKSB7CisgICAgfSwKKyAgICAvLyBzZXRJbnB1dFJlZ2lvbkNh
bGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHN0
cnVjdCB3bF9yZXNvdXJjZSopIHsKKyAgICB9LAorICAgIC8vIGNvbW1pdENhbGxiYWNrCisgICAg
W10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNl
KSB7CisgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRv
cjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAg
ICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdXJm
YWNlLT5jb21taXQoKSkKKyAgICAgICAgICAgIHdsX2Rpc3BsYXlfZmx1c2hfY2xpZW50cyh3bF9j
bGllbnRfZ2V0X2Rpc3BsYXkoY2xpZW50KSk7CisgICAgfSwKKyAgICAvLyBzZXRCdWZmZXJUcmFu
c2Zvcm1DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqLCBpbnQzMl90KSB7CisgICAgfSwKKyAgICAvLyBzZXRCdWZmZXJTY2FsZUNhbGxiYWNrCisg
ICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QpIHsK
KyAgICB9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNl
IGNvbXBvc2l0b3JJbnRlcmZhY2UgPSB7CisgICAgLy8gY3JlYXRlU3VyZmFjZUNhbGxiYWNrCisg
ICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291
cmNlLCB1aW50MzJfdCBpZCkgeworICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiBzdXJm
YWNlUmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfc3VyZmFjZV9pbnRl
cmZhY2UsIDEsIGlkKSkgeworICAgICAgICAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0
aW9uKHN1cmZhY2VSZXNvdXJjZSwgJnN1cmZhY2VJbnRlcmZhY2UsIG5ldyBXYXlsYW5kQ29tcG9z
aXRvcjo6U3VyZmFjZSgpLAorICAgICAgICAgICAgICAgIFtdKHN0cnVjdCB3bF9yZXNvdXJjZSog
cmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19j
YXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0
YShyZXNvdXJjZSkpOworICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3VyZmFjZTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB3bF9jbGllbnRfcG9z
dF9ub19tZW1vcnkoY2xpZW50KTsKKyAgICB9LAorICAgIC8vIGNyZWF0ZVJlZ2lvbkNhbGxiYWNr
CisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHVpbnQzMl90
KQorICAgIHsKKyAgICB9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3dlYmtpdGd0a19p
bnRlcmZhY2Ugd2Via2l0Z3RrSW50ZXJmYWNlID0geworICAgIC8vIGJpbmRTdXJmYWNlVG9QYWdl
Q2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiBy
ZXNvdXJjZSwgc3RydWN0IHdsX3Jlc291cmNlKiBzdXJmYWNlUmVzb3VyY2UsIHVpbnQzMl90IHBh
Z2VJRCkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBv
c2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHN1cmZhY2VSZXNvdXJj
ZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgYXV0byogY29tcG9zaXRvciA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4od2xf
cmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBjb21wb3NpdG9yLT5i
aW5kU3VyZmFjZVRvV2ViUGFnZShzdXJmYWNlLCBwYWdlSUQpOworICAgIH0KK307CisKK2Jvb2wg
V2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0woKQoreworICAgIGlmIChQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xDaGVja1ZlcnNpb24oMSwgNSkpIHsKKyAgICAgICAg
ZWdsQ3JlYXRlSW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdFS0hSUFJP
Qz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlIikpOworICAgICAgICBlZ2xEZXN0
cm95SW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0M+KGVn
bEdldFByb2NBZGRyZXNzKCJlZ2xEZXN0cm95SW1hZ2UiKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgY29uc3QgY2hhciogZXh0ZW5zaW9ucyA9IGVnbFF1ZXJ5U3RyaW5nKFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgRUdMX0VYVEVOU0lPTlMpOworICAgICAg
ICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnMsICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSkgeworICAgICAg
ICAgICAgZWdsQ3JlYXRlSW1hZ2UgPSByZWludGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdF
S0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlS0hSIikpOworICAgICAg
ICAgICAgZWdsRGVzdHJveUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1B
R0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hSIikpOworICAg
ICAgICB9CisgICAgfQorICAgIGlmICghZWdsQ3JlYXRlSW1hZ2UgfHwgIWVnbERlc3Ryb3lJbWFn
ZSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRDb21wb3NpdG9yIHJlcXVpcmVzIGVn
bENyZWF0ZUltYWdlIGFuZCBlZ2xEZXN0cm95SW1hZ2UuIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBlZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNz
KCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOworICAgIGlmICghZWdsSW1hZ2VUYXJn
ZXRUZXh0dXJlMkQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciBy
ZXF1aXJlcyBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZORUdMUVVFUllXQVlMQU5EQlVGRkVSV0w+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeVdh
eWxhbmRCdWZmZXJXTCIpKTsKKyAgICBpZiAoIWVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcikgeworICAg
ICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRDb21wb3NpdG9yIHJlcXVpcmVzIGVnbFF1ZXJ5V2F5
bGFuZEJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGVnbEJp
bmRXYXlsYW5kRGlzcGxheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMQklORFdBWUxBTkRESVNQ
TEFZV0w+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCIpKTsKKyAg
ICBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMVU5CSU5E
V0FZTEFORERJU1BMQVlXTD4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbFVuYmluZFdheWxhbmREaXNw
bGF5V0wiKSk7CisgICAgaWYgKCFlZ2xCaW5kV2F5bGFuZERpc3BsYXkgfHwgIWVnbFVuYmluZFdh
eWxhbmREaXNwbGF5KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3Ig
cmVxdWlyZXMgZWdsQmluZFdheWxhbmREaXNwbGF5V0wgYW5kIGVnbFVuYmluZFdheWxhbmREaXNw
bGF5V0wuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2VnbENvbnRl
eHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKTsKKyAgICBpZiAoIW1fZWds
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2VnbENvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdTb3VyY2Ugc291cmNlOworICAg
IGdwb2ludGVyIGZkVGFnOworICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5OworfSBXYXls
YW5kTG9vcFNvdXJjZTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdheWxhbmRMb29wU291cmNl
Q29uZGl0aW9uID0gR19JT19JTiB8IEdfSU9fSFVQIHwgR19JT19FUlI7CisKK3N0YXRpYyBHU291
cmNlRnVuY3Mgd2F5bGFuZExvb3BTb3VyY2VGdW5jdGlvbnMgPSB7CisgICAgLy8gcHJlcGFyZQor
ICAgIFtdKEdTb3VyY2UgKnNvdXJjZSwgaW50ICp0aW1lb3V0KSAtPiBnYm9vbGVhbiB7CisgICAg
ICAgICp0aW1lb3V0ID0gLTE7CisgICAgICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3VyY2UqPihzb3VyY2UpOworICAgICAgICB3bF9kaXNwbGF5
X2ZsdXNoX2NsaWVudHMod2xMb29wU291cmNlLT5kaXNwbGF5KTsKKyAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgIH0sCisgICAgbnVsbHB0ciwgLy8gY2hlY2sKKyAgICAvLyBkaXNwYXRjaAorICAg
IFtdKEdTb3VyY2UqIHNvdXJjZSwgR1NvdXJjZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJE
YXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3VyY2UqPihzb3VyY2UpOworICAgICAgICB1bnNpZ25lZCBl
dmVudHMgPSBnX3NvdXJjZV9xdWVyeV91bml4X2ZkKHNvdXJjZSwgd2xMb29wU291cmNlLT5mZFRh
ZykgJiB3YXlsYW5kTG9vcFNvdXJjZUNvbmRpdGlvbjsKKyAgICAgICAgaWYgKGV2ZW50cyAmIEdf
SU9fSFVQIHx8IGV2ZW50cyAmIEdfSU9fRVJSKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMo
IldheWxhbmQgRGlzcGxheSBFdmVudCBTb3VyY2U6IGxvc3QgY29ubmVjdGlvbiB0byBuZXN0ZWQg
V2F5bGFuZCBjb21wb3NpdG9yIik7CisgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZF
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV2ZW50cyAmIEdfSU9fSU4pCisgICAgICAgICAg
ICB3bF9ldmVudF9sb29wX2Rpc3BhdGNoKHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3Aod2xMb29w
U291cmNlLT5kaXNwbGF5KSwgMCk7CisgICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsK
KyAgICB9LAorICAgIG51bGxwdHIsIC8vIGZpbmFsaXplCisgICAgbnVsbHB0ciwgLy8gY2xvc3Vy
ZV9jYWxsYmFjaworICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hhbGwKK307CisKK3N0YXRp
YyBHUmVmUHRyPEdTb3VyY2U+IGNyZWF0ZVdheWxhbmRMb29wU291cmNlKHN0cnVjdCB3bF9kaXNw
bGF5KiBkaXNwbGF5KQoreworICAgIEdSZWZQdHI8R1NvdXJjZT4gc291cmNlID0gYWRvcHRHUmVm
KGdfc291cmNlX25ldygmd2F5bGFuZExvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihXYXlsYW5k
TG9vcFNvdXJjZSkpKTsKKyAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJOZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgZXZlbnQgc291cmNlIik7CisgICAgZ19zb3Vy
Y2Vfc2V0X3ByaW9yaXR5KHNvdXJjZS5nZXQoKSwgR19QUklPUklUWV9ERUZBVUxUICsgMSk7CisK
KyAgICBhdXRvKiB3bExvb3BTb3VyY2UgPSByZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291
cmNlKj4oc291cmNlLmdldCgpKTsKKyAgICB3bExvb3BTb3VyY2UtPmRpc3BsYXkgPSBkaXNwbGF5
OworICAgIHdsTG9vcFNvdXJjZS0+ZmRUYWcgPSBnX3NvdXJjZV9hZGRfdW5peF9mZChzb3VyY2Uu
Z2V0KCksIHdsX2V2ZW50X2xvb3BfZ2V0X2ZkKHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AoZGlz
cGxheSkpLCBzdGF0aWNfY2FzdDxHSU9Db25kaXRpb24+KHdheWxhbmRMb29wU291cmNlQ29uZGl0
aW9uKSk7CisgICAgZ19zb3VyY2VfYXR0YWNoKHNvdXJjZS5nZXQoKSwgbnVsbHB0cik7CisKKyAg
ICByZXR1cm4gc291cmNlOworfQorCitXYXlsYW5kQ29tcG9zaXRvcjo6V2F5bGFuZENvbXBvc2l0
b3IoKQoreworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9kaXNwbGF5PiBkaXNwbGF5KHdsX2Rp
c3BsYXlfY3JlYXRlKCkpOworICAgIGlmICghZGlzcGxheSkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IGNyZWF0ZSBkaXNwbGF5IG9i
amVjdCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRpc3BsYXlOYW1l
ID0gIndlYmtpdGd0ay13YXlsYW5kLWNvbXBvc2l0b3ItIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKTsKKyAgICBpZiAod2xfZGlzcGxheV9hZGRfc29ja2V0KGRpc3BsYXkuZ2V0KCksIGRp
c3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkpID09IC0xKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
TmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgc29ja2V0
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xf
Z2xvYmFsPiBjb21wb3NpdG9yR2xvYmFsKHdsX2dsb2JhbF9jcmVhdGUoZGlzcGxheS5nZXQoKSwg
JndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCB3bF9jb21wb3NpdG9yX2ludGVyZmFjZS52ZXJzaW9u
LCB0aGlzLAorICAgICAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHZvaWQqIGRhdGEs
IHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90IGlkKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0
IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9j
b21wb3NpdG9yX2ludGVyZmFjZSwgc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pih2ZXJzaW9uKSwg
MyksIGlkKSkKKyAgICAgICAgICAgICAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24o
cmVzb3VyY2UsICZjb21wb3NpdG9ySW50ZXJmYWNlLCBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9z
aXRvcio+KGRhdGEpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB3bF9jbGllbnRfcG9zdF9ub19tZW1vcnkoY2xpZW50KTsKKyAgICAgICAgfSkpOworICAgIGlm
ICghY29tcG9zaXRvckdsb2JhbCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXls
YW5kIGNvbXBvc2l0b3IgY291bGQgbm90IHJlZ2lzdGVyIGNvbXBvc2l0b3IgZ2xvYmFsIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFs
PiB3ZWJraXRndGtHbG9iYWwod2xfZ2xvYmFsX2NyZWF0ZShkaXNwbGF5LmdldCgpLCAmd2xfd2Vi
a2l0Z3RrX2ludGVyZmFjZSwgMSwgdGhpcywKKyAgICAgICAgW10oc3RydWN0IHdsX2NsaWVudCog
Y2xpZW50LCB2b2lkKiBkYXRhLCB1aW50MzJfdCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkgeworICAg
ICAgICAgICAgaWYgKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9j
cmVhdGUoY2xpZW50LCAmd2xfd2Via2l0Z3RrX2ludGVyZmFjZSwgMSwgaWQpKQorICAgICAgICAg
ICAgICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwgJndlYmtpdGd0
a0ludGVyZmFjZSwgc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3IqPihkYXRhKSwgbnVsbHB0
cik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9f
bWVtb3J5KGNsaWVudCk7CisgICAgICAgIH0pKTsKKyAgICBpZiAoIXdlYmtpdGd0a0dsb2JhbCkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQg
bm90IHJlZ2lzdGVyIHdlYmtpdGd0ayBnbG9iYWwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghaW5pdGlhbGl6ZUVHTCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVz
dGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgaW5pdGlhbGl6ZSBFR0wiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghZWdsQmluZFdheWxhbmREaXNwbGF5KFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgZGlzcGxheS5nZXQoKSkp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxk
IG5vdCBiaW5kIG5lc3RlZCBkaXNwbGF5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2Rpc3BsYXlOYW1lID0gV1RGTW92ZShkaXNwbGF5TmFtZSk7CisgICAgbV9kaXNwbGF5ID0g
V1RGTW92ZShkaXNwbGF5KTsKKyAgICBtX2NvbXBvc2l0b3JHbG9iYWwgPSBXVEZNb3ZlKGNvbXBv
c2l0b3JHbG9iYWwpOworICAgIG1fd2Via2l0Z3RrR2xvYmFsID0gV1RGTW92ZSh3ZWJraXRndGtH
bG9iYWwpOworICAgIG1fZXZlbnRTb3VyY2UgPSBjcmVhdGVXYXlsYW5kTG9vcFNvdXJjZShtX2Rp
c3BsYXkuZ2V0KCkpOworfQorCitib29sIFdheWxhbmRDb21wb3NpdG9yOjpnZXRUZXh0dXJlKFdl
YlBhZ2VQcm94eSYgd2ViUGFnZSwgdW5zaWduZWQmIHRleHR1cmUsIEludFNpemUmIHRleHR1cmVT
aXplKQoreworICAgIGlmIChhdXRvKiBzdXJmYWNlID0gbV9wYWdlTWFwLmdldCgmd2ViUGFnZSkp
CisgICAgICAgIHJldHVybiBzdXJmYWNlLT5wcmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKHRleHR1
cmUsIHRleHR1cmVTaXplKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2F5bGFuZENv
bXBvc2l0b3I6OmJpbmRTdXJmYWNlVG9XZWJQYWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNl
KiBzdXJmYWNlLCB1aW50NjRfdCBwYWdlSUQpCit7CisgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdl
ID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8qIHBhZ2UgOiBtX3BhZ2VNYXAua2V5cygpKSB7Cisg
ICAgICAgIGlmIChwYWdlLT5wYWdlSUQoKSA9PSBwYWdlSUQpIHsKKyAgICAgICAgICAgIHdlYlBh
Z2UgPSBwYWdlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYg
KCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdXJmYWNlLT5zZXRXZWJQYWdlKHdl
YlBhZ2UpOworICAgIG1fcGFnZU1hcC5zZXQod2ViUGFnZSwgc3VyZmFjZSk7Cit9CisKK3ZvaWQg
V2F5bGFuZENvbXBvc2l0b3I6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2Up
Cit7CisgICAgbV9wYWdlTWFwLmFkZCgmd2ViUGFnZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgV2F5
bGFuZENvbXBvc2l0b3I6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkK
K3sKKyAgICBpZiAoYXV0byogc3VyZmFjZSA9IG1fcGFnZU1hcC50YWtlKCZ3ZWJQYWdlKSkKKyAg
ICAgICAgc3VyZmFjZS0+c2V0V2ViUGFnZShudWxscHRyKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjBkMjhhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKQEAgLTAsMCArMSwxMjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XbFVuaXF1
ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgdm9pZCAqRUdMSW1hZ2VLSFI7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEdMQ29udGV4dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2F5bGFuZENvbXBvc2l0b3IgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdheWxhbmRDb21wb3NpdG9yKTsKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8V2F5bGFuZENvbXBvc2l0b3I+OworcHVibGljOgorICAgIHN0YXRpYyBX
YXlsYW5kQ29tcG9zaXRvciYgc2luZ2xldG9uKCk7CisKKyAgICBjbGFzcyBCdWZmZXIgeworICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCdWZmZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBCdWZmZXIqIGdldE9yQ3JlYXRlKHN0cnVj
dCB3bF9yZXNvdXJjZSopOworICAgICAgICB+QnVmZmVyKCk7CisKKyAgICAgICAgdm9pZCB1c2Uo
KTsKKyAgICAgICAgdm9pZCB1bnVzZSgpOworCisgICAgICAgIEVHTEltYWdlS0hSIGNyZWF0ZUlt
YWdlKCkgY29uc3Q7CisgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworCisg
ICAgICAgIFdlYWtQdHI8QnVmZmVyPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRy
RmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEJ1ZmZl
cihzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUxpc3Rl
bmVyQ2FsbGJhY2soc3RydWN0IHdsX2xpc3RlbmVyKiwgdm9pZCopOworCisgICAgICAgIHN0cnVj
dCB3bF9yZXNvdXJjZSogbV9yZXNvdXJjZSB7IG51bGxwdHIgfTsKKyAgICAgICAgc3RydWN0IHds
X2xpc3RlbmVyIG1fZGVzdHJveUxpc3RlbmVyOworICAgICAgICB1aW50MzJfdCBtX2J1c3lDb3Vu
dCB7IDAgfTsKKyAgICAgICAgV2Vha1B0ckZhY3Rvcnk8QnVmZmVyPiBtX3dlYWtQdHJGYWN0b3J5
OworICAgIH07CisKKyAgICBjbGFzcyBTdXJmYWNlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3VyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAg
ICAgICAgU3VyZmFjZSgpOworICAgICAgICB+U3VyZmFjZSgpOworCisgICAgICAgIHZvaWQgYXR0
YWNoQnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICB2b2lkIHJlcXVlc3RGcmFt
ZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgYm9vbCBjb21taXQoKTsKKworICAgICAg
ICB2b2lkIHNldFdlYlBhZ2UoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKSB7IG1fd2ViUGFnZSA9IHdl
YlBhZ2U7IH0KKyAgICAgICAgYm9vbCBwcmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKHVuc2lnbmVk
JiwgV2ViQ29yZTo6SW50U2l6ZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBtYWtl
UGVuZGluZ0J1ZmZlckN1cnJlbnQoKTsKKworICAgICAgICBXZWFrUHRyPEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgICAgIFdlYWtQdHI8QnVmZmVyPiBtX3BlbmRpbmdCdWZmZXI7CisgICAgICAgIHVu
c2lnbmVkIG1fdGV4dHVyZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgbV9pbWFnZTsKKyAgICAgICAg
VmVjdG9yPHdsX3Jlc291cmNlKj4gbV9mcmFtZUNhbGxiYWNrTGlzdDsKKyAgICAgICAgV2ViUGFn
ZVByb3h5KiBtX3dlYlBhZ2UgeyBudWxscHRyIH07CisgICAgfTsKKworICAgIGJvb2wgaXNSdW5u
aW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2Rpc3BsYXk7IH0KKyAgICBTdHJpbmcgZGlzcGxheU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlOYW1lOyB9CisKKyAgICB2b2lkIGJpbmRTdXJm
YWNlVG9XZWJQYWdlKFN1cmZhY2UqLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgcmVnaXN0
ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOworICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZVByb3h5Jik7CisKKyAgICBib29sIGdldFRleHR1cmUoV2ViUGFnZVByb3h5JiwgdW5zaWdu
ZWQmLCBXZWJDb3JlOjpJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgV2F5bGFuZENvbXBvc2l0
b3IoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZUVHTCgpOworCisgICAgU3RyaW5nIG1fZGlzcGxh
eU5hbWU7CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX2Rpc3BsYXk+IG1fZGlz
cGxheTsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiBtX2NvbXBv
c2l0b3JHbG9iYWw7CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX2dsb2JhbD4g
bV93ZWJraXRndGtHbG9iYWw7CisgICAgR1JlZlB0cjxHU291cmNlPiBtX2V2ZW50U291cmNlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHQ+IG1fZWdsQ29udGV4dDsKKyAg
ICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFN1cmZhY2UqPiBtX3BhZ2VNYXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCmluZGV4
IGFlMTRlOWUuLjNmMDU4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwCkBAIC0yNywzMSArMjcsNTIgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisjaW5jbHVkZSAiV2F5bGFu
ZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KIAorI2lmIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+
CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSgpCiB7Ci0j
aWYgUExBVEZPUk0oV0FZTEFORCkKLSAgICBpZiAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V2F5bGFuZCkgewotICAgICAgICAvLyBGSVhNRTogQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdW5k
ZXIgV2F5bGFuZCBpcyBub3QgeWV0IHN1cHBvcnRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTgwMwotICAgICAgICBzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgfQotI2VuZGlmCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQotICAgIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRy
dWUpOwotI2VuZGlmCiAjaWYgIUVOQUJMRShPUEVOR0wpCiAgICAgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoZmFsc2UpOwogI2Vsc2UKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfVEhSRUFERUQpCisgICAgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CisjZWxzZQog
ICAgIGlmIChnZXRlbnYoIldFQktJVF9GT1JDRV9DT01QT1NJVElOR19NT0RFIikpCiAgICAgICAg
IHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwotICAgIGlmIChnZXRlbnYoIldFQktJVF9E
SVNBQkxFX0NPTVBPU0lUSU5HX01PREUiKSkKKyNlbmRpZgorCisgICAgaWYgKGdldGVudigiV0VC
S0lUX0RJU0FCTEVfQ09NUE9TSVRJTkdfTU9ERSIpKSB7CiAgICAgICAgIHNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lm
IFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorICAgIGlmIChQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEp
IHsKKyAgICAgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworICAgICAgICBPcHRpb25hbDxpbnQ+
IGRhbWFnZUJhc2U7CisgICAgICAgIGlmICghZGlzcGxheS5zdXBwb3J0c1hDb21wb3NpdGUoKSB8
fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2UoZGFtYWdlQmFzZSkpCisgICAgICAgICAgICBzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgfQogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKSB7CisgICAgICAg
IGlmICghV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQorICAgICAg
ICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIH0KKyNl
bmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5HTCkKIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNl
czo6cGxhdGZvcm1VcGRhdGVTdHJpbmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdl
Tm90aWZpZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZp
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTMzZmNjLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJYRGFtYWdlTm90aWZpZXIuaCIKLQotI2lmIFBM
QVRGT1JNKFgxMSkKLQotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+Ci0j
aW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+
Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgT3B0aW9uYWw8aW50PiBzX2RhbWFnZUV2ZW50QmFz
ZTsKLQotWERhbWFnZU5vdGlmaWVyJiBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4gbm90aWZpZXI7Ci0gICAg
cmV0dXJuIG5vdGlmaWVyOwotfQotCi1YRGFtYWdlTm90aWZpZXI6OlhEYW1hZ2VOb3RpZmllcigp
Ci17Ci0gICAgZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKSkuc3VwcG9ydHNYRGFtYWdlKHNfZGFtYWdlRXZlbnRCYXNlKTsKLX0KLQot
dm9pZCBYRGFtYWdlTm90aWZpZXI6OmFkZChEYW1hZ2UgZGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4mJiBub3RpZnlGdW5jdGlvbikKLXsKLSAgICBpZiAoIXNfZGFtYWdlRXZlbnRCYXNlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQot
ICAgICAgICBnZGtfd2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxH
ZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Ci0gICAgbV9ub3RpZnlG
dW5jdGlvbnMuYWRkKGRhbWFnZSwgV1RGTW92ZShub3RpZnlGdW5jdGlvbikpOwotfQotCi12b2lk
IFhEYW1hZ2VOb3RpZmllcjo6cmVtb3ZlKERhbWFnZSBkYW1hZ2UpCi17Ci0gICAgaWYgKCFzX2Rh
bWFnZUV2ZW50QmFzZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9ub3RpZnlGdW5jdGlvbnMu
cmVtb3ZlKGRhbWFnZSk7Ci0gICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlzRW1wdHkoKSkKLSAg
ICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOwotfQotCi1HZGtGaWx0
ZXJSZXR1cm4gWERhbWFnZU5vdGlmaWVyOjpmaWx0ZXJYRGFtYWdlRXZlbnQoR2RrWEV2ZW50KiBl
dmVudCwgR2RrRXZlbnQqLCBYRGFtYWdlTm90aWZpZXIqIG5vdGlmaWVyKQotewotICAgIEFTU0VS
VChzX2RhbWFnZUV2ZW50QmFzZSk7Ci0gICAgYXV0byogeEV2ZW50ID0gc3RhdGljX2Nhc3Q8WEV2
ZW50Kj4oZXZlbnQpOwotICAgIGlmICh4RXZlbnQtPnR5cGUgIT0gc19kYW1hZ2VFdmVudEJhc2Uu
dmFsdWUoKSArIFhEYW1hZ2VOb3RpZnkpCi0gICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJ
TlVFOwotCi0gICAgYXV0byogZGFtYWdlRXZlbnQgPSByZWludGVycHJldF9jYXN0PFhEYW1hZ2VO
b3RpZnlFdmVudCo+KHhFdmVudCk7Ci0gICAgaWYgKG5vdGlmaWVyLT5ub3RpZnkoZGFtYWdlRXZl
bnQtPmRhbWFnZSkpIHsKLSAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVudC0+eGFueS5kaXNw
bGF5LCBkYW1hZ2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKLSAgICAgICAgcmV0dXJuIEdE
S19GSUxURVJfUkVNT1ZFOwotICAgIH0KLQotICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJTlVF
OwotfQotCi1ib29sIFhEYW1hZ2VOb3RpZmllcjo6bm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0
Ci17Ci0gICAgaWYgKGNvbnN0IGF1dG8mIG5vdGlmeUZ1bmN0aW9uID0gbV9ub3RpZnlGdW5jdGlv
bnMuZ2V0KGRhbWFnZSkpIHsKLSAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkzMzRjYzIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9Y
RGFtYWdlTm90aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBQTEFURk9STShYMTEpCi0KLSNp
bmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIERhbWFnZTsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFhEYW1hZ2VOb3RpZmllciB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoWERhbWFnZU5vdGlmaWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj47Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFhEYW1hZ2VOb3RpZmllciYgc2luZ2xldG9uKCk7Ci0KLSAgICB2
b2lkIGFkZChEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlbW92
ZShEYW1hZ2UpOwotCi1wcml2YXRlOgotICAgIFhEYW1hZ2VOb3RpZmllcigpOwotCi0gICAgc3Rh
dGljIEdka0ZpbHRlclJldHVybiBmaWx0ZXJYRGFtYWdlRXZlbnQoR2RrWEV2ZW50KiwgR2RrRXZl
bnQqLCBYRGFtYWdlTm90aWZpZXIqKTsKLSAgICBib29sIG5vdGlmeShEYW1hZ2UpIGNvbnN0Owot
Ci0gICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9ub3RpZnlGdW5j
dGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRGT1JN
KFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCBkYmQwMjgwLi5lYzQ3MTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zMCwxNCArMzAsMTIgQEAKICNpbmNsdWRl
ICJUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIgogCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKQotI2luY2x1ZGUgIlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCi0j
ZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTQsMjYgKzUyLDIzIEBAIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+VGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QoKQogVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBh
Z2UpCiAgICAgOiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Qod2ViUGFnZSkKICAgICAsIG1fY29t
cG9zaXRvckNsaWVudCgqdGhpcykKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKLSAgICAsIG1fcmVkaXJlY3RlZFdpbmRvdyhSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6
Y3JlYXRlKHdlYlBhZ2UpKQotICAgICwgbV9jb21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6
Y3JlYXRlKCZtX2NvbXBvc2l0b3JDbGllbnQsIG1fcmVkaXJlY3RlZFdpbmRvdyA/IG1fcmVkaXJl
Y3RlZFdpbmRvdy0+d2luZG93KCkgOiAwKSkKLSNlbHNlCi0gICAgLCBtX2NvbXBvc2l0b3IoVGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCkpCi0jZW5kaWYKKyAg
ICAsIG1fc3VyZmFjZShBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZSh3ZWJQYWdlKSkKIHsKLSNp
ZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVk
V2luZG93KQotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVj
dGVkV2luZG93LT5waXhtYXAoKTsKLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAg
ICAgLy8gRG8gbm90IGRvIGZyYW1lIHN5bmMgd2hlbiByZW5kZXJpbmcgb2Zmc2NyZWVuIGluIHRo
ZSB3ZWIgcHJvY2VzcyB0byBlbnN1cmUgdGhhdCBTd2FwQnVmZmVycyBuZXZlciBibG9ja3MuCisg
ICAgICAgIC8vIFJlbmRlcmluZyB0byB0aGUgYWN0dWFsIHNjcmVlbiB3aWxsIGhhcHBlbiBsYXRl
ciBhbnl3YXkgc2luY2UgdGhlIFVJIHByb2Nlc3Mgc2NoZWR1bGVzIGEgcmVkcmF3IGZvciBldmVy
eSB1cGRhdGUsCisgICAgICAgIC8vIHRoZSBjb21wb3NpdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHN5
bmNpbmcgdG8gdmJsYW5rLgorICAgICAgICBtX2NvbXBvc2l0b3IgPSBUaHJlYWRlZENvbXBvc2l0
b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50LCBtX3N1cmZhY2UtPndpbmRvdygpLCBUaHJl
YWRlZENvbXBvc2l0b3I6OlNob3VsZERvRnJhbWVTeW5jOjpObyk7CisgICAgICAgIG1fbGF5ZXJU
cmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOworICAgIH0gZWxz
ZQorICAgICAgICBtX2NvbXBvc2l0b3IgPSBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9j
b21wb3NpdG9yQ2xpZW50KTsKIH0KIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9jb21wb3NpdG9yLT5pbnZhbGlkYXRlKCk7CiAg
ICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCk7Ci0jaWYgVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgbV9yZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0
cjsKLSNlbmRpZgorICAgIG1fc3VyZmFjZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCkBAIC05NSwxMiArOTAsOCBA
QCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb250ZW50c1NpemVDaGFu
Z2VkKGNvbnN0IFdlYkNvcmU6OkludFNpegogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotI2lmIFVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cp
IHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSk7
Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5k
b3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJm
YWNlLT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4
dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICBtX2Nv
bXBvc2l0b3ItPnNldERldmljZVNjYWxlRmFjdG9yKG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKQEAgLTExNCwxMiArMTA1LDkgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlm
IChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNp
emUoc2l6ZSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGly
ZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2Ug
JiYgbV9zdXJmYWNlLT5yZXNpemUoc2l6ZSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5j
b250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOworCiAgICAgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKHNpemUpOwogICAgIG1fY29tcG9zaXRvci0+ZGlkQ2hh
bmdlVmlld3BvcnRTaXplKHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYTQx
YTExNi4uODkwZTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC00MSw3ICs0MSw3IEBA
IHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzsKK2NsYXNzIEFjY2VsZXJhdGVkU3Vy
ZmFjZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0IGZpbmFsIDogcHVibGljIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCB7CkBAIC0xMDUs
OSArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJikgb3ZlcnJpZGU7CiAKICAgICBDb21wb3Np
dG9yQ2xpZW50IG1fY29tcG9zaXRvckNsaWVudDsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c+IG1fcmVkaXJlY3RlZFdpbmRvdzsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKICAgICBSZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9y
PiBtX2NvbXBvc2l0b3I7CiAgICAgZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3IgeyAxIH07CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgbV9wcmV2U2Nyb2xsUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFj
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmZDc0NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxl
cmF0ZWRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIK
KworI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisKKyNpZiBQTEFURk9STShX
QVlMQU5EKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaCIKKyNlbmRpZgor
CisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaW5jbHVkZSAiQWNjZWxl
cmF0ZWRTdXJmYWNlWDExLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQoreworI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAgIHJldHVy
biBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpjcmVhdGUod2ViUGFnZSk7CisjZW5kaWYKKyNp
ZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDEx
KQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUod2ViUGFnZSk7
CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlOjpB
Y2NlbGVyYXRlZFN1cmZhY2UoV2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQ
YWdlKQorICAgICwgbV9zaXplKHdlYlBhZ2Uuc2l6ZSgpKQoreworICAgIG1fc2l6ZS5zY2FsZSht
X3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZTo6
fkFjY2VsZXJhdGVkU3VyZmFjZSgpCit7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRTdXJmYWNlOjpy
ZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBJbnRTaXplIHNjYWxlZFNpemUoc2l6
ZSk7CisgICAgc2NhbGVkU2l6ZS5zY2FsZShtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgaWYgKHNjYWxlZFNpemUgPT0gbV9zaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3NpemUgPSBzY2FsZWRTaXplOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjZiODJjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5oCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFj
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2NlbGVyYXRlZFN1cmZhY2U+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgdmlydHVhbCB+QWNjZWxl
cmF0ZWRTdXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB1aW50NjRfdCBz
dXJmYWNlSUQoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKworcHJvdGVj
dGVkOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZShXZWJQYWdlJik7CisKKyAgICBXZWJQYWdlJiBt
X3dlYlBhZ2U7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZjBiODcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdh
eWxhbmQuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgi
CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2ViS2l0MldheWxhbmRDbGll
bnRQcm90b2NvbC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUg
PHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5IGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlzcGxheVdheWxhbmQg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSk7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXk+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSA9
IHdsX2Rpc3BsYXlfY29ubmVjdChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53YXlsYW5kQ29tcG9z
aXRvckRpc3BsYXlOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmICghZGlzcGxheSkg
eworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIGluaXRp
YWxpemF0aW9uOiBmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgV2F5bGFuZCBkaXNwbGF5OiAlcyIs
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+
KG5ldyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoZGlzcGxheSkpOworICAgIH0KKworICAgIHZv
aWQgYmluZFN1cmZhY2VUb1BhZ2Uoc3RydWN0IHdsX3N1cmZhY2UqIHN1cmZhY2UsIFdlYlBhZ2Um
IHBhZ2UpCisgICAgeworICAgICAgICBpZiAoIW1fd2Via2l0Z3RrKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHdsX3dlYmtpdGd0a19iaW5kX3N1cmZhY2VfdG9fcGFnZShyZWludGVy
cHJldF9jYXN0PHN0cnVjdCB3bF93ZWJraXRndGsqPihtX3dlYmtpdGd0ay5nZXQoKSksIHN1cmZh
Y2UsIHBhZ2UucGFnZUlEKCkpOworICAgICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtX2Rpc3Bs
YXkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoc3Ry
dWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCisgICAgeworICAgICAgICBpbml0aWFsaXplKGRpc3Bs
YXkpOworICAgICAgICBQbGF0Zm9ybURpc3BsYXk6OnNldFNoYXJlZERpc3BsYXlGb3JDb21wb3Np
dGluZygqdGhpcyk7CisgICAgfQorCisgICAgdm9pZCByZWdpc3RyeUdsb2JhbChjb25zdCBjaGFy
KiBpbnRlcmZhY2UsIHVpbnQzMl90IG5hbWUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjpyZWdpc3RyeUdsb2JhbChpbnRlcmZhY2UsIG5hbWUpOworICAg
ICAgICBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX3dlYmtpdGd0ayIpKQorICAgICAg
ICAgICAgbV93ZWJraXRndGsucmVzZXQoc3RhdGljX2Nhc3Q8c3RydWN0IHdsX3Byb3h5Kj4od2xf
cmVnaXN0cnlfYmluZChtX3JlZ2lzdHJ5LmdldCgpLCBuYW1lLCAmd2xfd2Via2l0Z3RrX2ludGVy
ZmFjZSwgMSkpKTsKKyAgICB9CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfcHJveHk+IG1f
d2Via2l0Z3RrOworfTsKKworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRv
ckRpc3BsYXk+JiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5Pj4gd2F5
bGFuZERpc3BsYXkoV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpjcmVhdGUoKSk7CisgICAgcmV0
dXJuIHdheWxhbmREaXNwbGF5OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJm
YWNlV2F5bGFuZD4gQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6Y3JlYXRlKFdlYlBhZ2UmIHdl
YlBhZ2UpCit7CisgICAgcmV0dXJuIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpID8gc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ+KG5ldyBBY2NlbGVyYXRlZFN1cmZh
Y2VXYXlsYW5kKHdlYlBhZ2UpKSA6IG51bGxwdHI7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdh
eWxhbmQ6OkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoV2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6
IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQYWdlKQorICAgICwgbV9zdXJmYWNlKHdheWxhbmRDb21w
b3NpdG9yRGlzcGxheSgpLT5jcmVhdGVTdXJmYWNlKCkpCisgICAgLCBtX3dpbmRvdyh3bF9lZ2xf
d2luZG93X2NyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgp
KSwgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSkpCit7CisgICAgd2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5KCktPmJpbmRTdXJmYWNlVG9QYWdlKG1fc3VyZmFjZS5nZXQoKSwgbV93ZWJQYWdl
KTsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6fkFjY2VsZXJhdGVkU3VyZmFjZVdh
eWxhbmQoKQoreworICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveShtX3dpbmRvdyk7Cit9CisKK2Jv
b2wgQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUp
Cit7CisgICAgaWYgKCFBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShzaXplKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgd2xfZWdsX3dpbmRvd19yZXNpemUobV93aW5kb3csIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIDApOworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJh
dGVkU3VyZmFjZVdheWxhbmQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmFlYzU4MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dsVW5pcXVlUHRyLmg+CisjaW5jbHVk
ZSA8d2F5bGFuZC1lZ2wtY29yZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2Ug
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgfkFj
Y2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1fd2luZG93KTsg
fQorICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2Vi
UGFnZS5wYWdlSUQoKTsgfQorICAgIGJvb2wgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKFdl
YlBhZ2UmKTsKKworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBt
X3N1cmZhY2U7CisgICAgc3RydWN0IHdsX2VnbF93aW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlM
QU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE1NTU3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAKQEAgLTAsMCAr
MSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgiCisKKyNpZiBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+Cisj
aW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgorI2luY2x1ZGUgPGdkay9nZGt4
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJm
YWNlWDExPiBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQor
eworICAgIGlmICghZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSkuc3VwcG9ydHNYQ29tcG9zaXRlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlWDEx
PihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlWDExKHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0ZWRT
dXJmYWNlWDExOjpBY2NlbGVyYXRlZFN1cmZhY2VYMTEoV2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6
IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQYWdlKQorICAgICwgbV9kaXNwbGF5KGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpKQoreworICAgIFNjcmVlbiogc2NyZWVuID0gRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rp
c3BsYXkpOworCisgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxheSk7CisgICAg
R2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zpc3VhbChnZGtfc2NyZWVu
X2dldF9kZWZhdWx0KCkpOworICAgIGlmICghdmlzdWFsKQorICAgICAgICB2aXN1YWwgPSBnZGtf
c2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisKKyAg
ICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9v
dFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxv
Y05vbmUpKTsKKworICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Cisg
ICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IFRydWU7CisgICAgd2luZG93
QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwLmdldCgpOworCisgICAgLy8gQ1dCb3JkZXJQ
aXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVwdGggZG9lc24ndCBtYXRjaCB0aGUgcGFy
ZW50J3Mgb25lLgorICAgIC8vIFNlZSBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94
c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmctc2VydmVyLTEuMTYuMCNuNzAzLgorICAg
IHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gMDsKKworICAgIG1fcGFyZW50V2luZG93
ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCisgICAgICAgIFJvb3RXaW5kb3dPZlNjcmVlbihz
Y3JlZW4pLAorICAgICAgICAtMSwgLTEsIDEsIDEsCisgICAgICAgIDAsCisgICAgICAgIGdka192
aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksCisgICAgICAgIElucHV0T3V0cHV0LAorICAgICAgICBH
REtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKKyAgICAgICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwg
Q1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCisgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsK
KyAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cuZ2V0KCkpOworCisgICAg
d2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0gU3RydWN0dXJlTm90aWZ5TWFzazsKKyAgICB3
aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gRmFsc2U7CisKKyAgICAvLyBDcmVh
dGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3Jl
YXRlIGVtcHR5IHdpbmRvd3MuCisgICAgbV93aW5kb3cgPSBYQ3JlYXRlV2luZG93KG1fZGlzcGxh
eSwKKyAgICAgICAgbV9wYXJlbnRXaW5kb3cuZ2V0KCksCisgICAgICAgIDAsIDAsCisgICAgICAg
IHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwKKyAgICAgICAgc3RkOjptYXgoMSwgbV9zaXpl
LmhlaWdodCgpKSwKKyAgICAgICAgMCwKKyAgICAgICAgQ29weUZyb21QYXJlbnQsCisgICAgICAg
IElucHV0T3V0cHV0LAorICAgICAgICBDb3B5RnJvbVBhcmVudCwKKyAgICAgICAgQ1dFdmVudE1h
c2ssCisgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKKyAgICBYTWFwV2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3cuZ2V0KCkpOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgWEV2ZW50IGV2
ZW50OworICAgICAgICBYV2luZG93RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgU3Ry
dWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFw
Tm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1fd2luZG93LmdldCgpKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIFhTZWxlY3RJbnB1dChtX2Rpc3BsYXksIG1fd2luZG93Lmdl
dCgpLCBOb0V2ZW50TWFzayk7CisgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3cuZ2V0KCksIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyAgICBtX3BpeG1h
cCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkp
OworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VYMTE6On5BY2NlbGVyYXRlZFN1cmZhY2VYMTEoKQor
eworICAgIEFTU0VSVChtX2Rpc3BsYXkpOworICAgIEFTU0VSVChtX3dpbmRvdyk7CisgICAgQVNT
RVJUKG1fcGFyZW50V2luZG93KTsKKworICAgIC8vIEV4cGxpY2l0bHkgcmVzZXQgdGhlc2UgYmVj
YXVzZSB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBoYXBwZW5zIGluIHRoaXMgb3JkZXIuCisgICAgbV93
aW5kb3cucmVzZXQoKTsKKyAgICBtX3BhcmVudFdpbmRvdy5yZXNldCgpOworfQorCitib29sIEFj
Y2VsZXJhdGVkU3VyZmFjZVgxMTo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAg
aWYgKCFBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBk
b2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5kb3dzLgorICAgIFhSZXNpemVXaW5kb3co
bV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLCBz
dGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICBYRmx1c2gobV9kaXNwbGF5KTsKKwor
ICAgIC8vIFJlbGVhc2UgdGhlIHByZXZpb3VzIHBpeG1hcCBsYXRlciB0byBnaXZlIHNvbWUgdGlt
ZSB0byB0aGUgVUkgcHJvY2VzcyB0byB1cGRhdGUuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86OnNlY29uZHMoNSksIFtwaXhtYXAgPSBXVEZNb3ZlKG1fcGl4
bWFwKV0geyB9KTsKKyAgICBtX3BpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1f
ZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJ
TkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
QWNjZWxlcmF0ZWRTdXJmYWNlWDExLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjBkNzJkNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRT
dXJmYWNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KKwordHlwZWRl
ZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUGl4bWFw
OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIFdpbmRvdzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVgxMSBmaW5hbCA6IHB1
YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2Vs
ZXJhdGVkU3VyZmFjZVgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlWDExPiBjcmVhdGUoV2Vi
UGFnZSYpOworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VYMTEoKTsKKworICAgIHVpbnQ2NF90IHdp
bmRvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9CisgICAgdWlu
dDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhtYXAuZ2V0KCk7
IH0KKyAgICBib29sIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNlWDExKFdlYlBhZ2UmKTsKKworICAgIERp
c3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93
IG1fd2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV9wYXJlbnRXaW5kb3c7Cisg
ICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXll
clRyZWVIb3N0R3RrLmNwcAppbmRleCA5YTA5MmVkLi41YTE3MGU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAK
KyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUlt
cGwuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CkBAIC00NiwyMCArNDcsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgotI2lmIGRl
ZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0jZGVmaW5lIFJlZ2lvbiBYUmVnaW9uCi0jZGVmaW5l
IEZvbnQgWEZvbnQKLSNkZWZpbmUgQ3Vyc29yIFhDdXJzb3IKLSNkZWZpbmUgU2NyZWVuIFhTY3Jl
ZW4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2VuZGlmCi0KLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5o
IgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xMzcsOSArMTI2LDcgQEAgUmVmPExheWVyVHJlZUhvc3RHdGs+IExh
eWVyVHJlZUhvc3RHdGs6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQogCiBMYXllclRyZWVIb3N0
R3RrOjpMYXllclRyZWVIb3N0R3RrKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXllclRyZWVI
b3N0KHdlYlBhZ2UpCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAg
LCBtX3JlZGlyZWN0ZWRXaW5kb3coUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZSh3
ZWJQYWdlKSkKLSNlbmRpZgorICAgICwgbV9zdXJmYWNlKEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3Jl
YXRlKHdlYlBhZ2UpKQogICAgICwgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcihzdGQ6OmJpbmQoJkxh
eWVyVHJlZUhvc3RHdGs6OnJlbmRlckZyYW1lLCB0aGlzKSkKIHsKICAgICBtX3Jvb3RMYXllciA9
IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CkBA
IC0xNjcsMzQgKzE1NCwzNyBAQCBMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3RrKFdl
YlBhZ2UmIHdlYlBhZ2UpCiAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRMYXllci5nZXQoKSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKKyAgICBpZiAobV9zdXJmYWNlKSB7CiAg
ICAgICAgIGNyZWF0ZVRleHR1cmVNYXBwZXIoKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0
LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7CisgICAgICAgIG1fbGF5
ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogICAgIH0K
LSNlbmRpZgogfQogCiBib29sIExheWVyVHJlZUhvc3RHdGs6Om1ha2VDb250ZXh0Q3VycmVudCgp
CiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgdWludDY0X3Qg
bmF0aXZlSGFuZGxlID0gbV9yZWRpcmVjdGVkV2luZG93ID8gbV9yZWRpcmVjdGVkV2luZG93LT53
aW5kb3coKSA6IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7Ci0jZWxzZQotICAgIHVpbnQ2
NF90IG5hdGl2ZUhhbmRsZSA9IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7Ci0jZW5kaWYK
LQorICAgIHVpbnQ2NF90IG5hdGl2ZUhhbmRsZSA9IG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+d2lu
ZG93KCkgOiBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEOwogICAgIGlmICghbmF0aXZlSGFu
ZGxlKSB7CiAgICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fY29udGV4dCkgewotICAgICAgICBtX2NvbnRleHQgPSBH
TENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2
ZVdpbmRvd1R5cGU+KG5hdGl2ZUhhbmRsZSksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7
Ci0gICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKworICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0PEdMTmF0aXZlV2luZG93VHlwZT4obmF0aXZlSGFu
ZGxlKSwgJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOwor
ICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIERvIG5vdCBkbyBmcmFtZSBzeW5jIHdoZW4gcmVuZGVyaW5nIG9mZnNjcmVlbiBpbiB0
aGUgd2ViIHByb2Nlc3MgdG8gZW5zdXJlIHRoYXQgU3dhcEJ1ZmZlcnMgbmV2ZXIgYmxvY2tzLgor
ICAgIC8vIFJlbmRlcmluZyB0byB0aGUgYWN0dWFsIHNjcmVlbiB3aWxsIGhhcHBlbiBsYXRlciBh
bnl3YXkgc2luY2UgdGhlIFVJIHByb2Nlc3Mgc2NoZWR1bGVzIGEgcmVkcmF3IGZvciBldmVyeSB1
cGRhdGUsCisgICAgLy8gdGhlIGNvbXBvc2l0b3Igd2lsbCB0YWtlIGNhcmUgb2Ygc3luY2luZyB0
byB2YmxhbmsuCisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgbV9jb250ZXh0LT5zd2FwSW50
ZXJ2YWwoMCk7CiAKLSAgICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogTGF5ZXJUcmVlSG9zdEd0azo6fkxheWVyVHJlZUhvc3RH
dGsoKQpAQCAtMjI5LDkgKzIxOSw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW52YWxpZGF0
ZSgpCiAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICBMYXllclRyZWVIb3N0OjppbnZhbGlk
YXRlKCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBtX3Jl
ZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOwotI2VuZGlmCisgICAgbV9zdXJmYWNlID0gbnVsbHB0
cjsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNO
ZWVkRGlzcGxheSgpCkBAIC0yNzEsMjQgKzI1OSwxNiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6
OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KDAsIG9s
ZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSAtIG9sZFNp
emUuaGVpZ2h0KCkpKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRz
RGlzcGxheSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAg
aWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJl
c2l6ZShuZXdTaXplKTsKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1f
cmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1fc3Vy
ZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShuZXdTaXplKSkKKyAgICAgICAgbV9sYXllclRyZWVD
b250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7CiAKICAgICBjb21wb3Np
dGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXplKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3Rr
OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotI2lmIFVTRShSRURJUkVDVEVE
X1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAg
ICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1h
cCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNp
emUobV93ZWJQYWdlLnNpemUoKSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0
SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgLy8gT3RoZXIgbGF5ZXJzIGxlYXJu
IG9mIHRoZSBzY2FsZSBmYWN0b3IgY2hhbmdlIHZpYSBXZWJQYWdlOjpzZXREZXZpY2VTY2FsZUZh
Y3Rvci4KICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCBkNjlkZTk3Li40NDc0NTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuaApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c7CitjbGFzcyBBY2NlbGVyYXRlZFN1
cmZhY2U7CiAKIGNsYXNzIExheWVyVHJlZUhvc3RHdGsgZmluYWwgOiBwdWJsaWMgTGF5ZXJUcmVl
SG9zdCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xMDksOSAr
MTA5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4dHVyZU1h
cHBlcj4gbV90ZXh0dXJlTWFwcGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENv
bnRleHQ+IG1fY29udGV4dDsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Nj
YWxlTWF0cml4OwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2lu
ZG93OwotI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gbV9z
dXJmYWNlOwogICAgIFJlbmRlckZyYW1lU2NoZWR1bGVyIG1fcmVuZGVyRnJhbWVTY2hlZHVsZXI7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYjMyYWUyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuaCIKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotCi0jaW5j
bHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+
Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9z
aXRlLmg+Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0ZDo6
dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQotewotICAgIGlmICghZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkuc3Vw
cG9ydHNYQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+KG5ldyBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdyh3ZWJQYWdlKSk7Ci19Ci0KLVJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJiB3ZWJQYWdlKQotICAgIDog
bV93ZWJQYWdlKHdlYlBhZ2UpCi0gICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkpCi0gICAg
LCBtX3NpemUod2ViUGFnZS5zaXplKCkpCi17Ci0gICAgbV9zaXplLnNjYWxlKG1fd2ViUGFnZS5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKLQotICAgIFNjcmVlbiogc2NyZWVuID0gRGVmYXVsdFNjcmVl
bk9mRGlzcGxheShtX2Rpc3BsYXkpOwotCi0gICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1f
ZGlzcGxheSk7Ci0gICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zp
c3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIGlmICghdmlzdWFsKQotICAgICAg
ICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2Rl
ZmF1bHQoKSk7Ci0KLSAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0ZUNvbG9ybWFw
KG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VB
TCh2aXN1YWwpLCBBbGxvY05vbmUpKTsKLQotICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRv
d0F0dHJpYnV0ZXM7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IFRy
dWU7Ci0gICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwLmdldCgpOwotCi0g
ICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVwdGggZG9lc24n
dCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgotICAgIC8vIFNlZSBodHRwOi8vY2dpdC5mcmVlZGVz
a3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmctc2VydmVyLTEu
MTYuMCNuNzAzLgotICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gMDsKLQotICAg
IG1fcGFyZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0gICAgICAgIFJvb3RX
aW5kb3dPZlNjcmVlbihzY3JlZW4pLAotICAgICAgICAtMSwgLTEsIDEsIDEsCi0gICAgICAgIDAs
Ci0gICAgICAgIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksCi0gICAgICAgIElucHV0T3V0
cHV0LAotICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKLSAgICAgICAgQ1dPdmVy
cmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCi0gICAgICAgICZ3aW5k
b3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cu
Z2V0KCkpOwotCi0gICAgd2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0gU3RydWN0dXJlTm90
aWZ5TWFzazsKLSAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gRmFsc2U7
Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNu
J3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAgbV93aW5kb3cgPSBYQ3JlYXRl
V2luZG93KG1fZGlzcGxheSwKLSAgICAgICAgbV9wYXJlbnRXaW5kb3cuZ2V0KCksCi0gICAgICAg
IDAsIDAsCi0gICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgc3Rk
OjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKLSAgICAgICAgMCwKLSAgICAgICAgQ29weUZyb21Q
YXJlbnQsCi0gICAgICAgIElucHV0T3V0cHV0LAotICAgICAgICBDb3B5RnJvbVBhcmVudCwKLSAg
ICAgICAgQ1dFdmVudE1hc2ssCi0gICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFw
V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwotCi0gICAgd2hpbGUgKDEpIHsKLSAg
ICAgICAgWEV2ZW50IGV2ZW50OwotICAgICAgICBYV2luZG93RXZlbnQobV9kaXNwbGF5LCBtX3dp
bmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKLSAgICAgICAgaWYgKGV2
ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1fd2luZG93Lmdl
dCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFhTZWxlY3RJbnB1dChtX2Rpc3Bs
YXksIG1fd2luZG93LmdldCgpLCBOb0V2ZW50TWFzayk7Ci0gICAgWENvbXBvc2l0ZVJlZGlyZWN0
V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFs
KTsKLSAgICBtX3BpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwg
bV93aW5kb3cuZ2V0KCkpOwotfQotCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKLXsKLSAgICBBU1NFUlQobV9kaXNwbGF5KTsKLSAgICBB
U1NFUlQobV93aW5kb3cpOwotICAgIEFTU0VSVChtX3BhcmVudFdpbmRvdyk7Ci0KLSAgICAvLyBF
eHBsaWNpdGx5IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0byBlbnN1cmUgaXQgaGFwcGVu
cyBpbiB0aGlzIG9yZGVyLgotICAgIG1fd2luZG93LnJlc2V0KCk7Ci0gICAgbV9wYXJlbnRXaW5k
b3cucmVzZXQoKTsKLX0KLQotdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgSW50U2l6ZSBzY2FsZWRTaXplKHNpemUpOwot
ICAgIHNjYWxlZFNpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAg
IGlmIChzY2FsZWRTaXplID09IG1fc2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zaXpl
ID0gc2NhbGVkU2l6ZTsKLQotICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgx
IHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KLSAgICBYUmVz
aXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEsIG1fc2l6ZS53
aWR0aCgpKSwgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSk7Ci0gICAgWEZsdXNoKG1fZGlz
cGxheSk7Ci0KLSAgICAvLyBSZWxlYXNlIHRoZSBwcmV2aW91cyBwaXhtYXAgbGF0ZXIgdG8gZ2l2
ZSBzb21lIHRpbWUgdG8gdGhlIFVJIHByb2Nlc3MgdG8gdXBkYXRlLgotICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpLCBbcGl4bWFwID0gV1RG
TW92ZShtX3BpeG1hcCldIHsgfSk7Ci0gICAgbV9waXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRv
d1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDg0YTU0ZDkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi10eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkg
RGlzcGxheTsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7Ci10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgV2luZG93OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZTsKLQot
Y2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdz4gY3JlYXRlKFdlYlBhZ2UmKTsKLSAgICB+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3coKTsKLQotICAgIFdpbmRvdyB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQo
KTsgfQotICAgIFBpeG1hcCBwaXhtYXAoKSBjb25zdCB7IHJldHVybiBtX3BpeG1hcC5nZXQoKTsg
fQotICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLQotcHJpdmF0ZToK
LSAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJik7Ci0KLSAgICBXZWJQYWdl
JiBtX3dlYlBhZ2U7Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9OwotICAgIFdl
YkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5k
b3c7Ci0gICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3BhcmVudFdpbmRvdzsKLSAgICBXZWJD
b3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDE0YjNhMTQuLjZjNDI1ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzAwLDYgKzMwMCwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UtPnNldERlZmF1bHRPcmlnaW5RdW90YSgyNVVMTCAqIDEwMjQgKiAxMDI0KTsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheU5h
bWUgPSBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9y
eS5pc0VtcHR5KCkpCiAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlh
Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMjI0YWVjZS4uMDMyYmQ3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE5Nyw2ICsxOTcsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgU3RyaW5nIHdheWxhbmRDb21wb3NpdG9yRGlz
cGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7
IH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKEFQSTo6T2JqZWN0Kik7CiAgICAgc3RhdGljIFJlZlB0cjxBUEk6Ok9iamVjdD4gdHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopOwogCkBAIC00MDQsNiArNDA4LDEw
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHsg
ZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbiAqLCB1aW50
NjRfdD4gbV91c2VyR2VzdHVyZVRva2VuczsKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAg
U3RyaW5nIG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGNkODI5M2EuLjk4YmE4
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0zOTAsMTAgKzM5MCwxNCBAQCBpZiAoRU5BQkxF
X1dBWUxBTkRfVEFSR0VUKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJSZWNvbXBpbGUg
R1RLKyB3aXRoIFdheWxhbmQgYmFja2VuZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikK
ICAgICBlbmRpZiAoKQogCi0gICAgaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdFVCBBTkQgR1RLM19W
RVJTSU9OIFZFUlNJT05fTEVTUyAzLjEyKQorICAgIGlmIChHVEszX1ZFUlNJT04gVkVSU0lPTl9M
RVNTIDMuMTIpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdUSysgMy4xMiBpcyByZXF1
aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKICAgICBlbmRpZiAoKQogCisgICAg
aWYgKE5PVCBFR0xfRk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkVHTCBpcyBy
ZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKKyAgICBlbmRpZiAoKQorCiAg
ICAgZmluZF9wYWNrYWdlKFdheWxhbmQgUkVRVUlSRUQpCiBlbmRpZiAoKQogCg==
</data>
<flag name="review"
          id="310722"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287085</attachid>
            <date>2016-08-26 02:14:46 -0700</date>
            <delta_ts>2016-08-29 02:22:45 -0700</delta_ts>
            <desc>Updated patch to fix the build with wayland 1.6</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>197392</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMTc2YjgwLi41MThhYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTI1ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R1RLKyBidWlsZCBhZnRlciByMjA0OTg2IGFuZCByMjA0OTk2LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA5MzM0Y2ZiLi5lMzIzZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpA
QCAtMTQ0LDYgKzE0NCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCiAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKQEAgLTM0OCwyNCArMzUwLDYg
QEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogZW5kaWYgKCkKIAogaWYgKEVOQUJM
RV9XQVlMQU5EX1RBUkdFVCkKLSAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgotICAg
IGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICAgICBERVBF
TkRTICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5
bGFuZENsaWVudFByb3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBz
ZXJ2ZXItaGVhZGVyIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9X
ZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1dlYktpdEd0a1dheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCi0gICAgICAgIENPTU1B
TkQgd2F5bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3Rv
Y29sLmgKLSAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3Rv
Y29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5k
Q2xpZW50UHJvdG9jb2wuYwotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxh
bmQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291
cmNlLmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcAotICAgICkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwotICAg
ICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVu
dFByb3RvY29sLmMKLSAgICApCi0KICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgICAgICR7V0FZTEFORF9JTkNMVURFX0RJUlN9CiAgICAgKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXgg
ZGU2MTI0OC4uZTZhODBjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR0xDb250ZXh0LmNwcApAQCAtMTksMTAgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQotCiAjaW5jbHVkZSAiR0xDb250ZXh0
LmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KIAogI2lmIFVTRShFR0wpCkBAIC01NywxMiArNTQsNiBAQCBpbmxpbmUgVGhy
ZWFkR2xvYmFsR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCgpCiAgICAgcmV0dXJuICpUaHJlYWRH
bG9iYWxHTENvbnRleHQ6OnN0YXRpY0dMQ29udGV4dDsKIH0KIAotR0xDb250ZXh0KiBHTENvbnRl
eHQ6OnNoYXJpbmdDb250ZXh0KCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4sIHNoYXJpbmcsIChjcmVhdGVPZmZzY3JlZW5D
b250ZXh0KCkpKTsKLSAgICByZXR1cm4gc2hhcmluZy5nZXQoKTsKLX0KLQogI2lmIFBMQVRGT1JN
KFgxMSkKIC8vIEJlY2F1c2Ugb2YgZHJpdmVyIGJ1Z3MsIGV4aXRpbmcgdGhlIHByb2dyYW0gd2hl
biB0aGVyZSBhcmUgYWN0aXZlIHBidWZmZXJzCiAvLyBjYW4gY3Jhc2ggdGhlIFggc2VydmVyICh0
aGlzIGhhcyBiZWVuIG9ic2VydmVkIHdpdGggdGhlIG9mZmljaWFsIE52aWRpYSBkcml2ZXJzKS4K
QEAgLTExMSwxMiArMTAyLDMwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29udGV4
dHNBdEV4aXQoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAorc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKQoreworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWluaXRpYWxpemVk
KSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKKyNlbmRpZgor
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRG
b3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0KiBzaGFy
aW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRl
Q29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBQbGF0Zm9y
bURpc3BsYXkqIHBsYXRmb3JtRGlzcGxheSkKIHsKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xT
aGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUGxhdGZvcm1E
aXNwbGF5JiBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5ID8gKnBsYXRmb3JtRGlzcGxheSA6IFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpOwogI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYm
IFVTRShFR0wpCi0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUo
KSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNo
YXJpbmdDb250ZXh0KSkKKyAgICBpZiAoZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpXYXlsYW5kKSB7CisgICAgICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRl
eHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBkaXNwbGF5KSkKICAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKGVnbENvbnRleHQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0xMjgsMzQgKzEzNyw2MyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiAjZWxzZQog
ICAgIFhJRCBHTFhXaW5kb3dIYW5kbGUgPSBzdGF0aWNfY2FzdDxYSUQ+KHdpbmRvd0hhbmRsZSk7
CiAjZW5kaWYKLSAgICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVD
b250ZXh0KEdMWFdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgIGlmIChhdXRvIGds
eENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoR0xYV2luZG93SGFuZGxlLCBk
aXNwbGF5KSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CiAjZW5kaWYKICNp
ZiBVU0UoRUdMKQotICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0
ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgaWYgKGF1dG8gZWds
Q29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIGRpc3Bs
YXkpKQogICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKICNlbmRpZgogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1HTENvbnRleHQ6OkdMQ29udGV4dCgpCitzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoUGxhdGZvcm1E
aXNwbGF5KiBwbGF0Zm9ybURpc3BsYXkpCiB7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIGFkZEFj
dGl2ZUNvbnRleHQodGhpcyk7CisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXNJZk5lZWRl
ZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjcmVhdGVDb250ZXh0
Rm9yV2luZG93KDAsIHBsYXRmb3JtRGlzcGxheSA/IHBsYXRmb3JtRGlzcGxheSA6ICZQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHQ+IEdMQ29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBkaXNw
bGF5KQoreworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zSWZOZWVkZWQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChkaXNw
bGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAg
aWYgKGF1dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQo
ZGlzcGxheSkpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisjaWYgVVNFKEdMWCkKKyAgICBpZiAo
YXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVTaGFyaW5nQ29udGV4dChkaXNw
bGF5KSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CisjZW5kaWYKKyNpZiBV
U0UoRUdMKQorICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVNo
YXJpbmdDb250ZXh0KGRpc3BsYXkpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0
KTsKICNlbmRpZgorICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0KiBzaGFy
aW5nQ29udGV4dCkKK0dMQ29udGV4dDo6R0xDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgZGlzcGxh
eSkKKyAgICA6IG1fZGlzcGxheShkaXNwbGF5KQogewotICAgIHJldHVybiBjcmVhdGVDb250ZXh0
Rm9yV2luZG93KDAsIHNoYXJpbmdDb250ZXh0KTsKKyNpZiBQTEFURk9STShYMTEpCisgICAgaWYg
KGRpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICBh
ZGRBY3RpdmVDb250ZXh0KHRoaXMpOworI2VuZGlmCiB9CiAKIEdMQ29udGV4dDo6fkdMQ29udGV4
dCgpCiB7CiAgICAgaWYgKHRoaXMgPT0gY3VycmVudENvbnRleHQoKS0+Y29udGV4dCgpKQotICAg
ICAgICBjdXJyZW50Q29udGV4dCgpLT5zZXRDb250ZXh0KDApOworICAgICAgICBjdXJyZW50Q29u
dGV4dCgpLT5zZXRDb250ZXh0KG51bGxwdHIpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICByZW1v
dmVBY3RpdmVDb250ZXh0KHRoaXMpOworICAgIGlmIChtX2Rpc3BsYXkudHlwZSgpID09IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZW1vdmVBY3RpdmVDb250ZXh0KHRoaXMp
OwogI2VuZGlmCiB9CiAKQEAgLTE2NSw3ICsyMDMsNyBAQCBib29sIEdMQ29udGV4dDo6bWFrZUNv
bnRleHRDdXJyZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotR0xDb250ZXh0KiBHTENvbnRl
eHQ6OmdldEN1cnJlbnQoKQorR0xDb250ZXh0KiBHTENvbnRleHQ6OmN1cnJlbnQoKQogewogICAg
IHJldHVybiBjdXJyZW50Q29udGV4dCgpLT5jb250ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IGQ0Mzk0NTQuLmM4MmYwOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCkBAIC0yMSw3
ICsyMSw3IEBACiAjZGVmaW5lIEdMQ29udGV4dF9oCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgotI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAjaWYgVVNFKEVHTCkgJiYgIVBMQVRG
T1JNKEdUSykKQEAgLTM5LDI3ICszOSwyNSBAQCB0eXBlZGVmIHVpbnQ2NF90IEdMTmF0aXZlV2lu
ZG93VHlwZTsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19kZXZpY2UgY2Fpcm9fZGV2aWNlX3Q7CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKFgxMSkKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNw
bGF5OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHQpOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEdMQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0Rm9yV2luZG93
KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRl
eHQpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVPZmZzY3Jl
ZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZyA9IDApOwotICAgIHN0YXRpYyBHTENvbnRleHQq
IGdldEN1cnJlbnQoKTsKLSAgICBzdGF0aWMgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCgpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSogPSBu
dWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlT2Zm
c2NyZWVuQ29udGV4dChQbGF0Zm9ybURpc3BsYXkqID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlz
cGxheSYpOworICAgIHN0YXRpYyBHTENvbnRleHQqIGN1cnJlbnQoKTsKKworICAgIFBsYXRmb3Jt
RGlzcGxheSYgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQogCi0gICAgR0xD
b250ZXh0KCk7CiAgICAgdmlydHVhbCB+R0xDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29sIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
UmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGRl
ZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN3YXBJbnRlcnZh
bChpbnQpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0VHTENvbnRleHQoKSBjb25zdCA9IDA7
CiAKQEAgLTY3LDI2ICs2NSwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjYWlyb19kZXZpY2Vf
dCogY2Fpcm9EZXZpY2UoKSA9IDA7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBz
dGF0aWMgRGlzcGxheSogc2hhcmVkWDExRGlzcGxheSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFu
dXBTaGFyZWRYMTFEaXNwbGF5KCk7CisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCisg
ICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpID0g
MDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oWDExKQorcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dCopOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFj
dGl2ZUNvbnRleHQoR0xDb250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cEFjdGl2ZUNv
bnRleHRzQXRFeGl0KCk7Ci0KLSNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2
aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCkgPSAwOwog
I2VuZGlmCiAKLSAgICBjbGFzcyBEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
fkRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgfTsKLQogcHJvdGVjdGVkOgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEYXRhPiBtX2NvbnRleHREYXRhOworICAgIEdMQ29udGV4dChQbGF0Zm9ybURpc3BsYXkm
KTsKKworICAgIFBsYXRmb3JtRGlzcGxheSYgbV9kaXNwbGF5OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggMTVjZDRkZi4uNmE3MzAy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBHCiB7CiAgICAgc3dpdGNoIChyZW5kZXJTdHlsZSkgewogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbjoKLSAgICAgICAgbV9nbENvbnRleHQg
PSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoR0xDb250ZXh0OjpzaGFyaW5nQ29u
dGV4dCgpKTsKKyAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVl
bkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1
cnJlbnRHTENvbnRleHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtODUsNyArODUsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIAogUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4
dCgpCiB7Ci0gICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpIDogR0xDb250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOworICAg
IHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdM
Q29udGV4dDo6Y3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlcgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIGlmIChtX2Nv
bnRleHQtPm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC0+bV9zdGF0ZS5ib3VuZEZCTyA9
PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgR0xDb250ZXh0KiBwcmV2
aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKKyAgICAgICAgR0xD
b250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKICAg
ICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKICAg
ICAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4
IDJlOTFhYTMuLjE4NTE3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogCisjaW5jbHVkZSAiR0xD
b250ZXh0LmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxtdXRleD4KIApAQCAtNTks
NiArNjAsOCBAQAogCiAjaWYgVVNFKEVHTCkKICNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZvcm1EaXNwbGF5
KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgaWYgKEdES19JU19XQVlMQU5E
X0RJU1BMQVkoZGlzcGxheSkpCi0gICAgICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1EaXNw
bGF5V2F5bGFuZD4oZ2RrX3dheWxhbmRfZGlzcGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KSk7
CiAjZW5kaWYKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNP
UkVfWCkKQEAgLTEwMyw2ICsxMDYsMTggQEAgUGxhdGZvcm1EaXNwbGF5JiBQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKQogICAgIHJldHVybiAqZGlzcGxheTsKIH0KIAorc3RhdGljIFBs
YXRmb3JtRGlzcGxheSogc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmc7CisKK1BsYXRmb3Jt
RGlzcGxheSYgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKQor
eworICAgIHJldHVybiBzX3NoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyA/ICpzX3NoYXJlZERp
c3BsYXlGb3JDb21wb3NpdGluZyA6IHNoYXJlZERpc3BsYXkoKTsKK30KKwordm9pZCBQbGF0Zm9y
bURpc3BsYXk6OnNldFNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZyhQbGF0Zm9ybURpc3BsYXkm
IGRpc3BsYXkpCit7CisgICAgc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcgPSAmZGlzcGxh
eTsKK30KKwogUGxhdGZvcm1EaXNwbGF5OjpQbGF0Zm9ybURpc3BsYXkoKQogI2lmIFVTRShFR0wp
CiAgICAgOiBtX2VnbERpc3BsYXkoRUdMX05PX0RJU1BMQVkpCkBAIC0xMTcsNyArMTMyLDIyIEBA
IFBsYXRmb3JtRGlzcGxheTo6flBsYXRmb3JtRGlzcGxheSgpCiAjZW5kaWYKIH0KIAorI2lmICFQ
TEFURk9STShFRkwpCitHTENvbnRleHQqIFBsYXRmb3JtRGlzcGxheTo6c2hhcmluZ0dMQ29udGV4
dCgpCit7CisgICAgaWYgKCFtX3NoYXJpbmdHTENvbnRleHQpCisgICAgICAgIG1fc2hhcmluZ0dM
Q29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoKnRoaXMpOworICAgIHJl
dHVybiBtX3NoYXJpbmdHTENvbnRleHQuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShFR0wp
CitzdGF0aWMgSGFzaFNldDxQbGF0Zm9ybURpc3BsYXkqPiYgZWdsRGlzcGxheXMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFBsYXRmb3JtRGlzcGxheSo+PiBkaXNwbGF5
czsKKyAgICByZXR1cm4gZGlzcGxheXM7Cit9CisKIEVHTERpc3BsYXkgUGxhdGZvcm1EaXNwbGF5
OjplZ2xEaXNwbGF5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWdsRGlzcGxheUluaXRpYWxpemVk
KQpAQCAtMTI1LDEyICsxNTUsMjAgQEAgRUdMRGlzcGxheSBQbGF0Zm9ybURpc3BsYXk6OmVnbERp
c3BsYXkoKSBjb25zdAogICAgIHJldHVybiBtX2VnbERpc3BsYXk7CiB9CiAKK2Jvb2wgUGxhdGZv
cm1EaXNwbGF5OjplZ2xDaGVja1ZlcnNpb24oaW50IG1ham9yLCBpbnQgbWlub3IpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2VnbERpc3BsYXlJbml0aWFsaXplZCkKKyAgICAgICAgY29uc3RfY2FzdDxQ
bGF0Zm9ybURpc3BsYXkqPih0aGlzKS0+aW5pdGlhbGl6ZUVHTERpc3BsYXkoKTsKKworICAgIHJl
dHVybiAobV9lZ2xNYWpvclZlcnNpb24gPiBtYWpvcikgfHwgKChtX2VnbE1ham9yVmVyc2lvbiA9
PSBtYWpvcikgJiYgKG1fZWdsTWlub3JWZXJzaW9uID49IG1pbm9yKSk7Cit9CisKIHZvaWQgUGxh
dGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiB7CiAgICAgbV9lZ2xEaXNwbGF5
SW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAgICAgaWYgKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElT
UExBWSkgewotLy8gRUdMIGlzIG9wdGlvbmFsbHkgc29mdCBsaW5rZWQgb24gV2luZG93cy4KKyAg
ICAgICAgLy8gRUdMIGlzIG9wdGlvbmFsbHkgc29mdCBsaW5rZWQgb24gV2luZG93cy4KICNpZiBQ
TEFURk9STShXSU4pCiAgICAgICAgIGF1dG8gZWdsR2V0RGlzcGxheSA9IGVnbEdldERpc3BsYXlQ
dHIoKTsKICAgICAgICAgaWYgKCFlZ2xHZXREaXNwbGF5KQpAQCAtMTQxLDM2ICsxNzksNDEgQEAg
dm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZWdsSW5pdGlhbGl6ZShtX2VnbERpc3BsYXksIDAs
IDApID09IEVHTF9GQUxTRSkgeworICAgIEVHTGludCBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lv
bjsKKyAgICBpZiAoZWdsSW5pdGlhbGl6ZShtX2VnbERpc3BsYXksICZtYWpvclZlcnNpb24sICZt
aW5vclZlcnNpb24pID09IEVHTF9GQUxTRSkgewogICAgICAgICBMT0dfRVJST1IoIkVHTERpc3Bs
YXkgSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwogICAgICAgICB0ZXJtaW5hdGVFR0xEaXNwbGF5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAg
c3RhdGljIGNvbnN0IEVHTGVudW0gZWdsQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfRVNfQVBJOwot
I2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgRUdMZW51bSBlZ2xBUElWZXJzaW9uID0gRUdMX09QRU5H
TF9BUEk7Ci0jZW5kaWYKLSAgICBpZiAoZWdsQmluZEFQSShlZ2xBUElWZXJzaW9uKSA9PSBFR0xf
RkFMU0UpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IEVHTCBBUEkoJWQpLiIs
IGVnbEdldEVycm9yKCkpOwotICAgICAgICB0ZXJtaW5hdGVFR0xEaXNwbGF5KCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICBtX2VnbE1ham9yVmVyc2lvbiA9IG1ham9yVmVyc2lvbjsKKyAgICBtX2Vn
bE1pbm9yVmVyc2lvbiA9IG1pbm9yVmVyc2lvbjsKKworICAgIGVnbERpc3BsYXlzKCkuYWRkKHRo
aXMpOworCisgICAgc3RhdGljIGJvb2wgZWdsQXRleGl0SGFuZGxlckluaXRpYWxpemVkID0gZmFs
c2U7CisgICAgaWYgKCFlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgLy8g
RUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMgZ2xvYmFsIGRpc3Bs
YXkgbGlzdC4KKyAgICAgICAgLy8gU2luY2UgdGhlIGdsb2JhbCBQbGF0Zm9ybURpc3BsYXkgaW5z
dGFuY2UgaXMgY3JlYXRlZCBiZWZvcmUsCisgICAgICAgIC8vIHdoZW4gdGhlIFBsYXRmb3JtRGlz
cGxheSBkZXN0cnVjdG9yIGlzIGNhbGxlZCwgRUdMIGhhcyBhbHJlYWR5IHJlbW92ZWQgdGhlCisg
ICAgICAgIC8vIGRpc3BsYXkgZnJvbSB0aGUgbGlzdCwgY2F1c2luZyBlZ2xUZXJtaW5hdGUoKSB0
byBjcmFzaC4gU28sIGhlcmUgd2UgcmVnaXN0ZXIKKyAgICAgICAgLy8gb3VyIG93biBhdGV4aXQg
aGFuZGxlciwgYWZ0ZXIgRUdMIGhhcyBiZWVuIGluaXRpYWxpemVkIGFuZCBhZnRlciB0aGUgZ2xv
YmFsCisgICAgICAgIC8vIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgdG8gZW5zdXJlIHdlIGNh
bGwgZWdsVGVybWluYXRlKCkgYmVmb3JlIHRoZSBvdGhlcgorICAgICAgICAvLyBFR0wgYXRleGl0
IGhhbmRsZXJzIGFuZCB0aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IuCisgICAgICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTczLgorICAg
ICAgICBlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBzdGQ6OmF0
ZXhpdChbXSB7CisgICAgICAgICAgICB3aGlsZSAoIWVnbERpc3BsYXlzKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgYXV0byogZGlzcGxheSA9IGVnbERpc3BsYXlzKCkudGFrZUFueSgp
OworICAgICAgICAgICAgICAgIGRpc3BsYXktPnRlcm1pbmF0ZUVHTERpc3BsYXkoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CiAgICAgfQotCi0gICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4
aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMgZ2xvYmFsIGRpc3BsYXkgbGlzdC4KLSAgICAvLyBT
aW5jZSB0aGUgZ2xvYmFsIFBsYXRmb3JtRGlzcGxheSBpbnN0YW5jZSBpcyBjcmVhdGVkIGJlZm9y
ZSwKLSAgICAvLyB3aGVuIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVzdHJ1Y3RvciBpcyBjYWxsZWQs
IEVHTCBoYXMgYWxyZWFkeSByZW1vdmVkIHRoZQotICAgIC8vIGRpc3BsYXkgZnJvbSB0aGUgbGlz
dCwgY2F1c2luZyBlZ2xUZXJtaW5hdGUoKSB0byBjcmFzaC4gU28sIGhlcmUgd2UgcmVnaXN0ZXIK
LSAgICAvLyBvdXIgb3duIGF0ZXhpdCBoYW5kbGVyLCBhZnRlciBFR0wgaGFzIGJlZW4gaW5pdGlh
bGl6ZWQgYW5kIGFmdGVyIHRoZSBnbG9iYWwKLSAgICAvLyBpbnN0YW5jZSBoYXMgYmVlbiBjcmVh
dGVkIHRvIGVuc3VyZSB3ZSBjYWxsIGVnbFRlcm1pbmF0ZSgpIGJlZm9yZSB0aGUgb3RoZXIKLSAg
ICAvLyBFR0wgYXRleGl0IGhhbmRsZXJzIGFuZCB0aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0
b3IuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTc5NzMuCi0gICAgc3RkOjphdGV4aXQoW10geyBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKS50ZXJtaW5hdGVFR0xEaXNwbGF5KCk7IH0pOwogfQogCiB2b2lkIFBsYXRmb3JtRGlzcGxh
eTo6dGVybWluYXRlRUdMRGlzcGxheSgpCiB7CisgICAgbV9zaGFyaW5nR0xDb250ZXh0ID0gbnVs
bHB0cjsKICAgICBBU1NFUlQobV9lZ2xEaXNwbGF5SW5pdGlhbGl6ZWQpOwogICAgIGlmIChtX2Vn
bERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKaW5kZXggOTIw
OWY0NS4uNzAwNzcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1EaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1EaXNwbGF5LmgKQEAgLTM1LDEwICszNSwxMyBAQCB0eXBlZGVmIHZvaWQgKkVH
TERpc3BsYXk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR0xDb250ZXh0OworCiBj
bGFzcyBQbGF0Zm9ybURpc3BsYXkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3Jt
RGlzcGxheSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQ
bGF0Zm9ybURpc3BsYXkmIHNoYXJlZERpc3BsYXkoKTsKKyAgICBzdGF0aWMgUGxhdGZvcm1EaXNw
bGF5JiBzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9y
bURpc3BsYXkoKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC01NSwxMyArNTgsMjIgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiAKKyNpZiAhUExB
VEZPUk0oRUZMKQorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgaGF2ZSBhbnkgcGxhdGZv
cm0gaWZkZWYsIGJ1dCBFRkwgaGFzIGl0cyBvd24gRUdMQ29udGV4dCBjbGFzcworICAgIC8vIGlu
c3RlYWQgb2YgdXNpbmcgdGhlIEdMQ29udGV4dCBjb21tb24gQVBJLgorICAgIEdMQ29udGV4dCog
c2hhcmluZ0dMQ29udGV4dCgpOworI2VuZGlmCisKICNpZiBVU0UoRUdMKQogICAgIEVHTERpc3Bs
YXkgZWdsRGlzcGxheSgpIGNvbnN0OworICAgIGJvb2wgZWdsQ2hlY2tWZXJzaW9uKGludCBtYWpv
ciwgaW50IG1pbm9yKSBjb25zdDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1E
aXNwbGF5KCk7CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRTaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRp
bmcoUGxhdGZvcm1EaXNwbGF5Jik7CisKICNpZiBVU0UoRUdMKQogICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplRUdMRGlzcGxheSgpOwogCkBAIC03NSw3ICs4NywxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgdGVybWluYXRlRUdMRGlzcGxheSgpOwogCiAgICAgYm9vbCBtX2VnbERpc3BsYXlJbml0
aWFsaXplZCB7IGZhbHNlIH07CisgICAgaW50IG1fZWdsTWFqb3JWZXJzaW9uIHsgMCB9OworICAg
IGludCBtX2VnbE1pbm9yVmVyc2lvbiB7IDAgfTsKICNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHQ+IG1fc2hhcmluZ0dMQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOGY0OGMyMC4uM2NkMmFiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKQEAgLTg4LDggKzg4LDggQEAgSW1hZ2VCdWZmZXJEYXRhOjp+SW1h
Z2VCdWZmZXJEYXRhKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVE
XzJEX0NBTlZBUykKLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29u
dGV4dDo6Z2V0Q3VycmVudCgpOwotICAgIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQg
PSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiAKICAgICBpZiAobV90ZXh0dXJlKQogICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZt
X3RleHR1cmUpOwpAQCAtMTA4LDcgKzEwOCw4IEBAIEltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVm
ZmVyRGF0YSgpCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogdm9pZCBJ
bWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKQogewotICAgIEdMQ29udGV4
dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgYXV0byogY29u
dGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hh
cmluZ0dMQ29udGV4dCgpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKQEAgLTExOSwxNSArMTIw
LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKCkKICAg
ICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOwogICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwICwgR0xfUkdCQSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKLSAgICBjYWlyb19kZXZp
Y2VfdCogZGV2aWNlID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5jYWlyb0RldmljZSgp
OwotICAgIG1fY29tcG9zaXRvclN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2Ny
ZWF0ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fY29t
cG9zaXRvclRleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICBt
X2NvbXBvc2l0b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9y
X3RleHR1cmUoY29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBI
QSwgbV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkp
OwogICAgIG1fY29tcG9zaXRvckNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fY29tcG9zaXRv
clN1cmZhY2UuZ2V0KCkpKTsKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fY29tcG9zaXRvckNy
LmdldCgpLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRh
Ojpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZl
Q29udGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpOworICAgIEdMQ29udGV4dCogcHJldmlv
dXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CiAKICAgICBpZiAoIW1fY29t
cG9zaXRvclRleHR1cmUpIHsKICAgICAgICAgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpOwpAQCAt
MTU5LDcgKzE1OSw4IEBAIHZvaWQgY2xlYXJTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSkKIAogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNhaXJvR0xTdXJmYWNlKCkKIHsKLSAg
ICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3Np
dGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKIAogICAgIC8vIFdlIG11c3QgZ2VuZXJhdGUgdGhlIHRleHR1cmUgb3Vyc2VsdmVzLCBi
ZWNhdXNlIHRoZXJlIGlzIG5vIENhaXJvIEFQSSBmb3IgZXh0cmFjdGluZyBpdAogICAgIC8vIGZy
b20gYSBwcmUtZXhpc3Rpbmcgc3VyZmFjZS4KQEAgLTE3NCw3ICsxNzUsNiBAQCB2b2lkIEltYWdl
QnVmZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UoKQogCiAgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAgLyogbGV2ZWwgKi8sIEdMX1JHQkEsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIDAgLyogYm9yZGVyICovLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAw
KTsKIAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KTsKICAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsK
IAogICAgIC8vIFRocmVhZC1hd2FyZW5lc3MgaXMgYSBodWdlIHBlcmZvcm1hbmNlIGhpdCBvbiBu
b24tSW50ZWwgZHJpdmVycy4KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0
YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29u
c3QgRgogICAgIEFTU0VSVChtX3RleHR1cmUpOwogCiAgICAgLy8gQ2Fpcm8gbWF5IGNoYW5nZSB0
aGUgYWN0aXZlIGNvbnRleHQsIHNvIHdlIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgYmFjayBhZnRl
ciBmbHVzaGluZy4KLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29u
dGV4dDo6Z2V0Q3VycmVudCgpOworICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0
ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX3N1cmZh
Y2UuZ2V0KCkpOwogICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiAKQEAgLTYwOSw3ICs2MDksNyBAQCBib29sIEltYWdlQnVmZmVyOjpjb3B5VG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QmLCBHQzNEZW51bSB0YXJnZXQsIFBsYQogCiAgICAg
Y2Fpcm9fc3VyZmFjZV9mbHVzaChtX2RhdGEubV9zdXJmYWNlLmdldCgpKTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRG
b3JXaW5kb3coMCwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KCZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKICAg
ICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB1aW50MzJfdCBmYm87CiAgICAg
Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IGEyYmM3NWIuLmNhOTBl
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaWYgVVNFKEVHTCkKIAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCiAK
ICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAgLTQwLDYgKzM5LDExIEBACiAj
aW5jbHVkZSA8WDExL1hsaWIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNp
bmNsdWRlICJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgiCisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wu
aD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKIC8vIGNhaXJv
LWdsLmggaW5jbHVkZXMgc29tZSBkZWZpbml0aW9ucyBmcm9tIEdMWCB0aGF0IGNvbmZsaWN0IHdp
dGgKIC8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHVzLiBTaW5jZSBHTENvbnRleHRFR0wgZG9lc24n
dCB1c2UgYW55IEdMWApAQCAtNTAsMTEgKzU0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKLXsKLSAgICByZXR1cm4gUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpOwotfQotCiBzdGF0aWMg
Y29uc3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRlc1tdID0gewogI2lmIFVTRShPUEVOR0xfRVNf
MikKICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKQEAgLTYyLDcgKzYxLDEzIEBA
IHN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7CiAgICAgRUdMX05P
TkUKIH07CiAKLXN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xD
b250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkKKyNpZiBVU0UoT1BFTkdMX0VT
XzIpCitzdGF0aWMgY29uc3QgRUdMZW51bSBnRUdMQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfRVNf
QVBJOworI2Vsc2UKK3N0YXRpYyBjb25zdCBFR0xlbnVtIGdFR0xBUElWZXJzaW9uID0gRUdMX09Q
RU5HTF9BUEk7CisjZW5kaWYKKworYm9vbCBHTENvbnRleHRFR0w6OmdldEVHTENvbmZpZyhFR0xE
aXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyogY29uZmlnLCBFR0xTdXJmYWNlVHlwZSBzdXJmYWNl
VHlwZSkKIHsKICAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0gewogI2lmIFVTRShPUEVOR0xf
RVNfMikKQEAgLTg3LDI3ICs5MiwyMyBAQCBzdGF0aWMgYm9vbCBnZXRFR0xDb25maWcoRUdMQ29u
ZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUgc3VyZmFjZQogICAgICAg
ICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEdMQ29udGV4dEVHTDo6V2luZG93U3VyZmFjZToKKyAgICBjYXNlIEdMQ29udGV4dEVH
TDo6U3VyZmFjZWxlc3M6CiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19C
SVQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEVHTGludCBudW1iZXJDb25maWdzUmV0
dXJuZWQ7Ci0gICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhzaGFyZWRFR0xEaXNwbGF5KCksIGF0
dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVy
Q29uZmlnc1JldHVybmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoZGlzcGxheSwgYXR0
cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJD
b25maWdzUmV0dXJuZWQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dDo6RGF0
YT4mJiBjb250ZXh0RGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxh
dGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQp
CiB7Ci0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8g
c3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAw
OwotCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlm
IChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQor
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAg
ICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5k
b3dTdXJmYWNlKSkKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBXaW5k
b3dTdXJmYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNv
bnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRl
eHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3Jl
YXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJp
YnV0ZXMpOwogICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMTE3LDE5ICsxMTgsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRv
d1QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBnbENvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgV2luZG93
U3VyZmFjZSk7Ci0gICAgZ2xDb250ZXh0LT5tX2NvbnRleHREYXRhID0gV1RGTW92ZShjb250ZXh0
RGF0YSk7Ci0gICAgcmV0dXJuIGdsQ29udGV4dDsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQs
IHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJp
bmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVQYnVmZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFy
ZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1E
aXNwbGF5LmVnbERpc3BsYXkoKTsKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0
RUdMQ29uZmlnKCZjb25maWcsIFBidWZmZXJTdXJmYWNlKSkKKyAgICBpZiAoIWdldEVHTENvbmZp
ZyhkaXNwbGF5LCAmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5
LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwpAQCAtMTQzLDE4
ICsxMzksMzYgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXIKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihj
b250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250
ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOwogfQogCi0jaWYgUExBVEZPUk0oWDExKQot
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBD
b250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChQbGF0Zm9ybURp
c3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAg
ICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKTsKICAgICBpZiAoZGlzcGxh
eSA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBjb25z
dCBjaGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lP
TlMpOworICAgIGlmICghc3Ryc3RyKGV4dGVuc2lvbnMsICJFR0xfS0hSX3N1cmZhY2VsZXNzX2Nv
bnRleHQiKSAmJiAhc3Ryc3RyKGV4dGVuc2lvbnMsICJFR0xfS0hSX3N1cmZhY2VsZXNzX29wZW5n
bCIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEVHTENvbmZpZyBjb25maWc7Ci0g
ICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCisgICAgaWYgKCFn
ZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgU3VyZmFjZWxlc3MpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
ZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAg
ICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4
dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVz
cykpOworfQorCisjaWYgUExBVEZPUk0oWDExKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxh
dGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CisgICAgRUdMQ29uZmln
IGNvbmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBQaXhtYXBT
dXJmYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdD
b250ZXh0QXR0cmlidXRlcyk7CkBAIC0xNjcsNyArMTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQg
c2hhcmkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgRGlzcGxheSogeDEx
RGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7CiAgICAg
WFVuaXF1ZVBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHgxMURpc3BsYXksIERlZmF1bHRS
b290V2luZG93KHgxMURpc3BsYXkpLCAxLCAxLCBkZXB0aCk7CiAgICAgaWYgKCFwaXhtYXApIHsK
ICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CkBAIC0xODAsNDkg
KzE5NCwxMDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihj
b250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHBpeG1hcCkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29u
dGV4dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXApKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0o
WDExKQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0
ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQpCisjaWYgUExBVEZPUk0oV0FZTEFORCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBw
bGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgaWYgKCFz
aGFyZWRFR0xEaXNwbGF5KCkpCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNw
bGF5LmVnbERpc3BsYXkoKTsKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmICghZ2V0RUdM
Q29uZmlnKGRpc3BsYXksICZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3Rh
dGljIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotI2lmICFV
U0UoT1BFTkdMX0VTXzIpCi0gICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMo
KTsKLSNlbmRpZgotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgRUdMQ29udGV4dCBj
b250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0
LCBnQ29udGV4dEF0dHJpYnV0ZXMpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhU
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9z
dXJmYWNlPiB3bFN1cmZhY2UoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4ocGxhdGZv
cm1EaXNwbGF5KS5jcmVhdGVTdXJmYWNlKCkpOworICAgIGlmICghd2xTdXJmYWNlKSB7CisgICAg
ICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFzdWNjZXNzKQorCisgICAgRUdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UuZ2V0KCksIDEsIDEp
OworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxh
eSwgY29uZmlnLCB3aW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNF
KSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAg
ICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kod2luZG93KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBH
TENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHds
U3VyZmFjZSksIHdpbmRvdykpOworfQorI2VuZGlmCisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdp
bmRvdywgUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7CisgICAgaWYgKHBsYXRm
b3JtRGlzcGxheS5lZ2xEaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdD
b250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2Nv
bnRleHQgOiAwOwotICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOworICAgIGlmIChlZ2xCaW5kQVBJ
KGdFR0xBUElWZXJzaW9uKSA9PSBFR0xfRkFMU0UpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHBsYXRmb3JtRGlzcGxheS5zaGFy
aW5nR0xDb250ZXh0KCkgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihwbGF0Zm9ybURpc3Bs
YXkuc2hhcmluZ0dMQ29udGV4dCgpKS0+bV9jb250ZXh0IDogRUdMX05PX0NPTlRFWFQ7CisgICAg
YXV0byBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHBsYXRm
b3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQocGxhdGZvcm1E
aXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCk7CisgICAgaWYgKCFjb250ZXh0KSB7CiAjaWYgUExB
VEZPUk0oWDExKQorICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9y
bURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBD
b250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworI2VuZGlmCisjaWYg
UExBVEZPUk0oV0FZTEFORCkKKyAgICAgICAgaWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0g
UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAgICAgICAgY29udGV4dCA9IGNy
ZWF0ZVdheWxhbmRDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOwor
I2VuZGlmCisgICAgfQogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0
ZVBpeG1hcENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOworICAgICAgICBjb250ZXh0ID0gY3Jl
YXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCk7CisK
KyAgICByZXR1cm4gY29udGV4dDsKK30KKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
R0xDb250ZXh0RUdMOjpjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRm
b3JtRGlzcGxheSkKK3sKKyAgICBpZiAocGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKSA9PSBF
R0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoZWdsQmlu
ZEFQSShnRUdMQVBJVmVyc2lvbikgPT0gRUdMX0ZBTFNFKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVN1cmZhY2VsZXNzQ29udGV4dChwbGF0Zm9y
bURpc3BsYXkpOworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAg
ICAgaWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpY
MTEpCisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURp
c3BsYXkpOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICAgICAgaWYgKHBsYXRm
b3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAg
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVdheWxhbmRDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7
CiAjZW5kaWYKKyAgICB9CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3Jl
YXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOworICAgICAgICBjb250ZXh0ID0g
Y3JlYXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKIAogICAgIHJldHVybiBjb250
ZXh0OwogfQogCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQs
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKLSAgICA6IG1fY29udGV4
dChjb250ZXh0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiBk
aXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFj
ZVR5cGUgdHlwZSkKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKICAgICAsIG1fdHlwZSh0eXBlKQogewog
ICAgIEFTU0VSVCh0eXBlICE9IFBpeG1hcFN1cmZhY2UpOworICAgIEFTU0VSVCh0eXBlID09IFN1
cmZhY2VsZXNzIHx8IHN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOwogfQogCiAjaWYgUExBVEZP
Uk0oWDExKQotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJiBwaXhtYXApCi0gICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYg
ZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFhVbmlxdWVQ
aXhtYXAmJiBwaXhtYXApCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUoUGl4bWFw
U3VyZmFjZSkKICAgICAsIG1fcGl4bWFwKFdURk1vdmUocGl4bWFwKSkKQEAgLTIzMCw2ICszMDIs
MTggQEAgR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xT
dXJmYWNlIHN1cmZhY2UsIFhVbmlxdWVQaXhtYXAKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
V0FZTEFORCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlz
cGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFdsVW5pcXVlUHRy
PHN0cnVjdCB3bF9zdXJmYWNlPiYmIHdsU3VyZmFjZSwgRUdMTmF0aXZlV2luZG93VHlwZSB3bFdp
bmRvdykKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQp
CisgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKKyAgICAsIG1fdHlwZShXaW5kb3dTdXJmYWNlKQor
ICAgICwgbV93bFN1cmZhY2UoV1RGTW92ZSh3bFN1cmZhY2UpKQorICAgICwgbV93bFdpbmRvdyh3
bFdpbmRvdykKK3sKK30KKyNlbmRpZgorCiBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQog
ewogI2lmIFVTRShDQUlSTykKQEAgLTIzNyw3ICszMjEsNyBAQCBHTENvbnRleHRFR0w6On5HTENv
bnRleHRFR0woKQogICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsK
ICNlbmRpZgogCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwor
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IG1fZGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgaWYg
KG1fY29udGV4dCkgewogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
MCk7CiAgICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwpAQCAtMjQ2LDYgKzMzMCwxMSBAQCBHTENvbnRl
eHRFR0w6On5HTENvbnRleHRFR0woKQogCiAgICAgaWYgKG1fc3VyZmFjZSkKICAgICAgICAgZWds
RGVzdHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKworI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCisgICAgaWYgKG1fd2xXaW5kb3cpCisgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveSht
X3dsV2luZG93KTsKKyNlbmRpZgogfQogCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9E
ZWZhdWx0RnJhbWVidWZmZXIoKQpAQCAtMjU4LDkgKzM0NywxMCBAQCBJbnRTaXplIEdMQ29udGV4
dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgaWYgKCFjYW5SZW5kZXJUb0RlZmF1
bHRGcmFtZWJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCisgICAgRUdMRGlz
cGxheSBkaXNwbGF5ID0gbV9kaXNwbGF5LmVnbERpc3BsYXkoKTsKICAgICBFR0xpbnQgd2lkdGgs
IGhlaWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1f
c3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2Uo
c2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQorICAg
IGlmICghZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lk
dGgpCisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xf
SEVJR0hULCAmaGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVy
biBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwpAQCAtMjY4LDE5ICszNTgsMTkgQEAgSW50U2l6ZSBH
TENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogCiBib29sIEdMQ29udGV4dEVH
TDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0ICYmIG1fc3Vy
ZmFjZSk7CisgICAgQVNTRVJUKG1fY29udGV4dCk7CiAKICAgICBHTENvbnRleHQ6Om1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIGlmIChlZ2xHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4
dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZWdsTWFrZUN1cnJlbnQoc2hh
cmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKKyAgICBy
ZXR1cm4gZWdsTWFrZUN1cnJlbnQobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgbV9zdXJmYWNlLCBt
X3N1cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwQnVmZmVy
cygpCiB7CiAgICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hhcmVk
RUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIGVnbFN3YXBCdWZmZXJzKG1fZGlzcGxheS5l
Z2xEaXNwbGF5KCksIG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0
aXZlKCkKQEAgLTI4OCw2ICszNzgsMTIgQEAgdm9pZCBHTENvbnRleHRFR0w6OndhaXROYXRpdmUo
KQogICAgIGVnbFdhaXROYXRpdmUoRUdMX0NPUkVfTkFUSVZFX0VOR0lORSk7CiB9CiAKK3ZvaWQg
R0xDb250ZXh0RUdMOjpzd2FwSW50ZXJ2YWwoaW50IGludGVydmFsKQoreworICAgIEFTU0VSVCht
X3N1cmZhY2UpOworICAgIGVnbFN3YXBJbnRlcnZhbChtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBp
bnRlcnZhbCk7Cit9CisKICNpZiBVU0UoQ0FJUk8pCiBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
RUdMOjpjYWlyb0RldmljZSgpCiB7CkBAIC0yOTUsNyArMzkxLDcgQEAgY2Fpcm9fZGV2aWNlX3Qq
IEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQogICAgICAgICByZXR1cm4gbV9jYWlyb0Rldmlj
ZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgbV9jYWlyb0Rldmlj
ZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9jb250ZXh0
KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUobV9kaXNwbGF5
LmVnbERpc3BsYXkoKSwgbV9jb250ZXh0KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9E
ZXZpY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmgKaW5kZXggODY1NzVhOS4uNzAyNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMjksNDkgKzI5
LDY4IEBACiAjaW5jbHVkZSAiWFVuaXF1ZVJlc291cmNlLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiV2xVbmlxdWVQdHIuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdMQ29udGV4dEVHTCA6IHB1YmxpYyBHTENvbnRleHQgewor
Y2xhc3MgR0xDb250ZXh0RUdMIGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZh
Y2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChF
R0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0ID0gMCk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dDo6RGF0YT4mJiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUs
IFBsYXRmb3JtRGlzcGxheSYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsKIAotICAgIEdMQ29u
dGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7Ci0jaWYgUExB
VEZPUk0oWDExKQotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5p
cXVlUGl4bWFwJiYpOwotI2VuZGlmCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7Ci0gICAg
dmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBzd2Fw
QnVmZmVycygpOwotICAgIHZpcnR1YWwgdm9pZCB3YWl0TmF0aXZlKCk7Ci0gICAgdmlydHVhbCBi
b29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCk7Ci0gICAgdmlydHVhbCBJbnRTaXpl
IGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKKworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2FwQnVmZmVycygpIG92ZXJyaWRlOworICAgIHZvaWQg
d2FpdE5hdGl2ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVi
dWZmZXIoKSBvdmVycmlkZTsKKyAgICBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN3YXBJbnRlcnZhbChpbnQpIG92ZXJyaWRlOwogI2lmIFVTRShD
QUlSTykKLSAgICB2aXJ0dWFsIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpOworICAgIGNh
aXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVh
bCBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlz
RUdMQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUXzNEKQotICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBs
YXRmb3JtQ29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVy
U3VyZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSwgU3VyZmFjZWxlc3MgfTsKKwor
ICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNl
LCBFR0xTdXJmYWNlVHlwZSk7CiAjaWYgUExBVEZPUk0oWDExKQotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQpOworICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250
ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYpOworI2VuZGlmCisjaWYgUExBVEZPUk0o
V0FZTEFORCkKKyAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwg
RUdMU3VyZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIEVHTE5hdGl2ZVdp
bmRvd1R5cGUpOworI2VuZGlmCisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBQbGF0Zm9ybURp
c3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4
dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NP
TlRFWFQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVT
dXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29u
dGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyNpZiBQTEFURk9STShYMTEpCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENvbnRleHQoUGxhdGZvcm1E
aXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CiAjZW5kaWYKIAotICAgIHN0
YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0RUdMKik7Ci0gICAgc3RhdGljIHZv
aWQgY2xlYW51cFNoYXJlZEVHTERpc3BsYXkodm9pZCk7CisgICAgc3RhdGljIGJvb2wgZ2V0RUdM
Q29uZmlnKEVHTERpc3BsYXksIEVHTENvbmZpZyosIEVHTFN1cmZhY2VUeXBlKTsKIAotICAgIEVH
TENvbnRleHQgbV9jb250ZXh0OwotICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOworICAgIEVHTENv
bnRleHQgbV9jb250ZXh0IHsgRUdMX05PX0NPTlRFWFQgfTsKKyAgICBFR0xTdXJmYWNlIG1fc3Vy
ZmFjZSB7IEVHTF9OT19TVVJGQUNFIH07CiAgICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOwogI2lm
IFBMQVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oV0FZTEFORCkKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gbV93
bFN1cmZhY2U7CisgICAgc3RydWN0IHdsX2VnbF93aW5kb3cqIG1fd2xXaW5kb3cgeyBudWxscHRy
IH07CisjZW5kaWYKICNpZiBVU0UoQ0FJUk8pCiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9E
ZXZpY2UgeyBudWxscHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggMTRiYjUzOS4uZGZiYjk2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5jcHAKQEAgLTMyLDkgKzMyLDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVXaW5k
b3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCisjaWYgIWRl
ZmluZWQoUEZOR0xYU1dBUElOVEVSVkFMU0dJUFJPQykKK3R5cGVkZWYgaW50ICgqUEZOR0xYU1dB
UElOVEVSVkFMU0dJUFJPQykgKGludCk7CisjZW5kaWYKKworc3RhdGljIFBGTkdMWFNXQVBJTlRF
UlZBTFNHSVBST0MgZ2xYU3dhcEludGVydmFsU0dJOworCitzdGF0aWMgYm9vbCBoYXNTR0lTd2Fw
Q29udHJvbEV4dGVuc2lvbihEaXNwbGF5KiBkaXNwbGF5KQoreworICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4g
ISFnbFhTd2FwSW50ZXJ2YWxTR0k7CisKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgY29u
c3QgY2hhciogZXh0ZW5zaW9ucyA9IGdsWFF1ZXJ5RXh0ZW5zaW9uc1N0cmluZyhkaXNwbGF5LCAw
KTsKKyAgICBpZiAoIXN0cnN0cihleHRlbnNpb25zLCAiR0xYX1NHSV9zd2FwX2NvbnRyb2wiKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZ2xYU3dhcEludGVydmFsU0dJID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigiZ2xYU3dhcEludGVydmFsU0dJ
IikpKTsKKyAgICByZXR1cm4gISFnbFhTd2FwSW50ZXJ2YWxTR0k7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQg
d2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgR0xYQ29udGV4dCBzaGFy
aW5nQ29udGV4dCkKIHsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Cisg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZv
cm1EaXNwbGF5KS5uYXRpdmUoKTsKICAgICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwog
ICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheSwgd2luZG93LCAmYXR0cmlidXRl
cykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsMTUgKzY2LDE0IEBAIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChY
SUQgd2luZG93LCBHTENvCiAgICAgaW50IG51bVJldHVybmVkID0gMDsKICAgICBYVW5pcXVlUHRy
PFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvTGlzdChYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1
YWxJRE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0dXJuZWQpKTsKIAotICAgIEdMWENvbnRleHQg
Z2x4U2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4
dEdMWCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0LmdldCgpIDogbnVsbHB0cjsKLSAgICBY
VW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwgdmlzdWFs
SW5mb0xpc3QuZ2V0KCksIGdseFNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CisgICAgWFVuaXF1ZUdM
WENvbnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0
LmdldCgpLCBzaGFyaW5nQ29udGV4dCwgVHJ1ZSkpOwogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRl
eHRHTFg+KFdURk1vdmUoY29udGV4dCksIHdpbmRvdyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRHTFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5LCBXVEZN
b3ZlKGNvbnRleHQpLCB3aW5kb3cpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdM
WD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVh
dGVQYnVmZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgR0xYQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IGZiQ29uZmlnQXR0
cmlidXRlc1tdID0gewogICAgICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1BCVUZGRVJfQklU
LApAQCAtNjcsNyArODcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogICAgIH07CiAKICAg
ICBpbnQgcmV0dXJuZWRFbGVtZW50czsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4ocGxhdGZvcm1EaXNwbGF5KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUHRyPEdMWEZCQ29uZmln
PiBjb25maWdzKGdsWENob29zZUZCQ29uZmlnKGRpc3BsYXksIDAsIGZiQ29uZmlnQXR0cmlidXRl
cywgJnJldHVybmVkRWxlbWVudHMpKTsKICAgICBpZiAoIXJldHVybmVkRWxlbWVudHMpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsMTAgKzEwMiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRl
eHQgc2hhcgogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRHTFg+KFdURk1vdmUoY29udGV4dCks
IFdURk1vdmUocGJ1ZmZlcikpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPihuZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwg
V1RGTW92ZShwYnVmZmVyKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBH
TENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4
dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4
bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKICAgICBzdGF0aWMgaW50IHZpc3VhbEF0dHJpYnV0ZXNbXSA9IHsK
ICAgICAgICAgR0xYX1JHQkEsCkBAIC05Niw3ICsxMTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBz
aGFyaQogICAgICAgICAwCiAgICAgfTsKIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5u
YXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm8oZ2xYQ2hvb3NlVmlzdWFsKGRpc3BsYXksIERlZmF1bHRTY3JlZW4oZGlz
cGxheSksIHZpc3VhbEF0dHJpYnV0ZXMpKTsKICAgICBpZiAoIXZpc3VhbEluZm8pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTEzLDQ2ICsxMzMsNDYgQEAgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQg
c2hhcmkKICAgICBpZiAoIWdseFBpeG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRHTFg+KFdURk1vdmUoY29udGV4dCks
IFdURk1vdmUocGl4bWFwKSwgV1RGTW92ZShnbHhQaXhtYXApKTsKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4dEdMWChwbGF0Zm9ybURpc3BsYXks
IFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGl4bWFwKSwgV1RGTW92ZShnbHhQaXhtYXApKSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRl
Q29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5KQogewotICAgIHN0YXRpYyBib29s
IGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0g
ICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5H
TFNoaW1zKCk7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hh
cmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+
KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0LmdldCgpIDogbnVsbHB0cjsKLSAgICBhdXRvIGNv
bnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRl
eHQpIDogbnVsbHB0cjsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVh
dGVQYnVmZmVyQ29udGV4dChnbHhTaGFyaW5nQ29udGV4dCk7CisgICAgR0xYQ29udGV4dCBnbHhT
aGFyaW5nQ29udGV4dCA9IHBsYXRmb3JtRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCkgPyBzdGF0
aWNfY2FzdDxHTENvbnRleHRHTFgqPihwbGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgp
KS0+bV9jb250ZXh0LmdldCgpIDogbnVsbHB0cjsKKyAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cg
PyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgcGxhdGZvcm1EaXNwbGF5LCBnbHhTaGFyaW5n
Q29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9
IGNyZWF0ZVBpeG1hcENvbnRleHQoZ2x4U2hhcmluZ0NvbnRleHQpOworICAgICAgICBjb250ZXh0
ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBnbHhTaGFyaW5nQ29udGV4
dCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
Y29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBnbHhTaGFyaW5n
Q29udGV4dCk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENv
bnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBYSUQgd2luZG93KQotICAgIDog
bV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xY
PiBHTENvbnRleHRHTFg6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxh
dGZvcm1EaXNwbGF5KQoreworICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0
KHBsYXRmb3JtRGlzcGxheSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0ID0g
Y3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOworICAgIHJldHVybiBjb250ZXh0
OworfQorCitHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3BsYXkmIGRpc3Bs
YXksIFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWElEIHdpbmRvdykKKyAgICA6IEdMQ29u
dGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBt
X3dpbmRvdyh3aW5kb3cpCiB7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZUdMWFBidWZmZXImJiBwYnVmZmVyKQotICAg
IDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitHTENvbnRleHRHTFg6OkdMQ29udGV4dEdM
WChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwg
WFVuaXF1ZUdMWFBidWZmZXImJiBwYnVmZmVyKQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisg
ICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fcGJ1ZmZlcihXVEZNb3Zl
KHBidWZmZXIpKQogewogfQogCi1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xY
Q29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVQaXhtYXAmJiBwaXhtYXAsIFhVbmlxdWVHTFhQaXht
YXAmJiBnbHhQaXhtYXApCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKK0dMQ29u
dGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1ZUdM
WENvbnRleHQmJiBjb250ZXh0LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4
bWFwJiYgZ2x4UGl4bWFwKQorICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fcGl4bWFwKFdURk1vdmUocGl4bWFwKSkKICAg
ICAsIG1fZ2x4UGl4bWFwKFdURk1vdmUoZ2x4UGl4bWFwKSkKIHsKQEAgLTE2Niw5ICsxODYsOCBA
QCBHTENvbnRleHRHTFg6On5HTENvbnRleHRHTFgoKQogICAgIGlmIChtX2NvbnRleHQpIHsKICAg
ICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5W
aWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9t
IE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQu
b3JnL2lsbWFyaS9jYW52YXMzZC8KLSAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQs
IDApOwotICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKKyAgICAg
ICAgZ2xYTWFrZUN1cnJlbnQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkp
Lm5hdGl2ZSgpLCBOb25lLCBOb25lKTsKICAgICB9CiB9CiAKQEAgLTE4NSw4ICsyMDQsNyBAQCBJ
bnRTaXplIEdMQ29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgaW50IHgs
IHk7CiAgICAgV2luZG93IHJvb3RXaW5kb3c7CiAgICAgdW5zaWduZWQgaW50IHdpZHRoLCBoZWln
aHQsIGJvcmRlcldpZHRoLCBkZXB0aDsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCk7Ci0gICAgaWYgKCFYR2V0R2VvbWV0cnkoZGlzcGxheSwgbV93aW5kb3csICZyb290V2lu
ZG93LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQorICAg
IGlmICghWEdldEdlb21ldHJ5KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5
KS5uYXRpdmUoKSwgbV93aW5kb3csICZyb290V2luZG93LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdo
dCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAg
ICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC0yMDAsNyArMjE4LDcgQEAgYm9v
bCBHTENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAgICAgaWYgKGdsWEdldEN1cnJl
bnRDb250ZXh0KCkgPT0gbV9jb250ZXh0LmdldCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBEaXNwbGF5KiBkaXNw
bGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpOwog
ICAgIGlmIChtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50KGRpc3BsYXks
IG1fd2luZG93LCBtX2NvbnRleHQuZ2V0KCkpOwogCkBAIC0yMTMsNyArMjMxLDcgQEAgYm9vbCBH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB2b2lkIEdMQ29udGV4dEdMWDo6c3dh
cEJ1ZmZlcnMoKQogewogICAgIGlmIChtX3dpbmRvdykKLSAgICAgICAgZ2xYU3dhcEJ1ZmZlcnMo
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCksIG1fd2luZG93KTsKKyAgICAgICAgZ2xYU3dhcEJ1ZmZlcnMoZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpLCBtX3dpbmRvdyk7CiB9
CiAKIHZvaWQgR0xDb250ZXh0R0xYOjp3YWl0TmF0aXZlKCkKQEAgLTIyMSwxMyArMjM5LDIwIEBA
IHZvaWQgR0xDb250ZXh0R0xYOjp3YWl0TmF0aXZlKCkKICAgICBnbFhXYWl0WCgpOwogfQogCit2
b2lkIEdMQ29udGV4dEdMWDo6c3dhcEludGVydmFsKGludCBpbnRlcnZhbCkKK3sKKyAgICBpZiAo
IWhhc1NHSVN3YXBDb250cm9sRXh0ZW5zaW9uKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
bV9kaXNwbGF5KS5uYXRpdmUoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBnbFhTd2FwSW50ZXJ2
YWxTR0koaW50ZXJ2YWwpOworfQorCiBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWly
b0RldmljZSgpCiB7CiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAgICAgICAgIHJldHVybiBtX2Nh
aXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgQ0FJUk9f
SEFTX0dMWF9GVU5DVElPTlMKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9j
cmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSkubmF0aXZlKCksIG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9jYWlyb0Rldmlj
ZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
bV9kaXNwbGF5KS5uYXRpdmUoKSwgbV9jb250ZXh0LmdldCgpKTsKICNlbmRpZgogCiAgICAgcmV0
dXJuIG1fY2Fpcm9EZXZpY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nbHgvR0xDb250ZXh0R0xYLmgKaW5kZXggNjQ3Zjk5OC4uMTlmYzM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaApA
QCAtMzIsMzEgKzMyLDM1IEBAIHR5cGVkZWYgdm9pZCogQ29udGV4dEtleVR5cGU7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xDb250ZXh0R0xYIDogcHVibGljIEdMQ29udGV4dCB7
CitjbGFzcyBHTENvbnRleHRHTFggZmluYWwgOiBwdWJsaWMgR0xDb250ZXh0IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRHTFgpOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmlu
Z0NvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVh
dGVDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURp
c3BsYXkmKTsKIAotICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmLCBYSUQpOwot
ICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlR0xYUGJ1ZmZlciYm
KTsKLSAgICBHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZVBpeG1hcCYm
LCBYVW5pcXVlR0xYUGl4bWFwJiYpOwogICAgIHZpcnR1YWwgfkdMQ29udGV4dEdMWCgpOwotICAg
IHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3dh
cEJ1ZmZlcnMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwotICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpOwotICAgIHZpcnR1YWwgSW50U2l6
ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7Ci0gICAgdmlydHVhbCBjYWlyb19kZXZpY2VfdCog
Y2Fpcm9EZXZpY2UoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzd2FwQnVmZmVycygpIG92ZXJyaWRlOworICAgIHZvaWQgd2FpdE5hdGl2ZSgp
IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSBvdmVy
cmlkZTsKKyAgICBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN3YXBJbnRlcnZhbChpbnQpIG92ZXJyaWRlOworICAgIGNhaXJvX2RldmljZV90KiBj
YWlyb0RldmljZSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNE
KQotICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQo
KTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQp
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBD
b250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIEdMQ29udGV4dEdMWChQbGF0
Zm9ybURpc3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYSUQpOworICAgIEdMQ29udGV4dEdM
WChQbGF0Zm9ybURpc3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlR0xYUGJ1ZmZl
ciYmKTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiwgWFVuaXF1ZUdMWENvbnRl
eHQmJiwgWFVuaXF1ZVBpeG1hcCYmLCBYVW5pcXVlR0xYUGl4bWFwJiYpOworCisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdp
bmRvdywgUGxhdGZvcm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxw
dHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQYnVm
ZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0g
bnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0
ZVBpeG1hcENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4
dCA9IG51bGxwdHIpOwogCiAgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJ
RCBtX3dpbmRvdyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBiMjkyMzllLi5mY2ZmNDI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0yMzUs
OCArMjM1LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjplbnN1cmVH
c3RHTENvbnRleHQoKQogICAgIGlmIChtX2dsQ29udGV4dCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKKyAgICBjb25zdCBhdXRvJiBzaGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKTsKICAgICBpZiAoIW1fZ2xEaXNwbGF5KSB7Ci0gICAg
ICAgIGNvbnN0IGF1dG8mIHNoYXJlZERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKTsKICNpZiBQTEFURk9STShYMTEpCiAgICAgICAgIG1fZ2xEaXNwbGF5ID0gR1NUX0dM
X0RJU1BMQVkoZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXkoZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSkpOwogI2VsaWYgUExBVEZP
Uk0oV0FZTEFORCkKQEAgLTI0NCw3ICsyNDQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmVuc3VyZUdzdEdMQ29udGV4dCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICBH
TENvbnRleHQqIHdlYmtpdENvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7Cisg
ICAgR0xDb250ZXh0KiB3ZWJraXRDb250ZXh0ID0gc2hhcmVkRGlzcGxheS5zaGFyaW5nR0xDb250
ZXh0KCk7CiAgICAgLy8gRUdMIGFuZCBHTFggYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbm8gbmVl
ZCBmb3IgaWZkZWZzIGhlcmUuCiAgICAgR3N0R0xQbGF0Zm9ybSBnbFBsYXRmb3JtID0gd2Via2l0
Q29udGV4dC0+aXNFR0xDb250ZXh0KCkgPyBHU1RfR0xfUExBVEZPUk1fRUdMIDogR1NUX0dMX1BM
QVRGT1JNX0dMWDsKIApAQCAtNzAyLDcgKzcwMiw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAg
IGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVy
LCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29u
dGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQo
KTsKICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBjYWlyb19kZXZpY2Vf
dCogZGV2aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZC5jcHAKaW5kZXggZDMzMDVlMS4uNDc5MjRhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXls
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1Bs
YXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCkBAIC0yOSwxMjYgKzI5LDU1IEBACiAjaWYgUExBVEZP
Uk0oV0FZTEFORCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgotI2luY2x1ZGUgIldheWxh
bmRTdXJmYWNlLmgiCiAjaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxnbGliLmg+CisjaW5j
bHVkZSA8d2F5bGFuZC1lZ2wuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjptX3JlZ2lzdHJ5TGlzdGVuZXIgPSB7Ci0gICAgUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZDo6Z2xvYmFsQ2FsbGJhY2ssCi0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZDo6Z2xvYmFsUmVtb3ZlQ2FsbGJhY2sKK2NvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5l
ciBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpzX3JlZ2lzdHJ5TGlzdGVuZXIgPSB7CisgICAgLy8g
Z2xvYmFsQ2FsbGJhY2sKKyAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1
aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90KSB7CisgICAgICAg
IHN0YXRpY19jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQqPihkYXRhKS0+cmVnaXN0cnlHbG9i
YWwoaW50ZXJmYWNlLCBuYW1lKTsKKyAgICB9LAorICAgIC8vIGdsb2JhbFJlbW92ZUNhbGxiYWNr
CisgICAgW10odm9pZCosIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90KQorICAgIHsKKyAg
ICB9CiB9OwogCi12b2lkIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2JhbENhbGxiYWNrKHZv
aWQqIGRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSogcmVnaXN0cnksIHVpbnQzMl90IG5hbWUsIGNv
bnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QpCitQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQogewotICAg
IGF1dG8gZGlzcGxheSA9IHN0YXRpY19jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQqPihkYXRh
KTsKLSAgICBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX2NvbXBvc2l0b3IiKSkKLSAg
ICAgICAgZGlzcGxheS0+bV9jb21wb3NpdG9yID0gc3RhdGljX2Nhc3Q8c3RydWN0IHdsX2NvbXBv
c2l0b3IqPih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfY29tcG9zaXRvcl9p
bnRlcmZhY2UsIDEpKTsKLSAgICBlbHNlIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAid2xf
d2Via2l0Z3RrIikpCi0gICAgICAgIGRpc3BsYXktPm1fd2Via2l0Z3RrID0gc3RhdGljX2Nhc3Q8
c3RydWN0IHdsX3dlYmtpdGd0ayo+KHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0cnksIG5hbWUsICZ3
bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxKSk7CisgICAgaW5pdGlhbGl6ZShkaXNwbGF5KTsKIH0K
IAotdm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxSZW1vdmVDYWxsYmFjayh2b2lk
Kiwgc3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QpCi17Ci0gICAgLy8gRklYTUU6IGlmIHRo
aXMgY2FuIGhhcHBlbiB3aXRob3V0IHRoZSBVSSBQcm9jZXNzIGdldHRpbmcgc2h1dCBkb3duCi0g
ICAgLy8gd2Ugc2hvdWxkIHByb2JhYmx5IGRlc3Ryb3kgb3VyIGNhY2hlZCBkaXNwbGF5IGluc3Rh
bmNlLgotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4gUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKCkKK1BsYXRmb3JtRGlzcGxheVdheWxhbmQ6On5QbGF0
Zm9ybURpc3BsYXlXYXlsYW5kKCkKIHsKLSAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5
ID0gd2xfZGlzcGxheV9jb25uZWN0KG51bGxwdHIpOwotICAgIGlmICghd2xEaXNwbGF5KSB7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlv
bjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgc2VydmVyIHNvY2tldC4gQ2hlY2sg
eW91ciBXQVlMQU5EX0RJU1BMQVkgb3IgV0FZTEFORF9TT0NLRVQgZW52aXJvbm1lbnQgdmFyaWFi
bGVzLiIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvIGRpc3Bs
YXkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4obmV3IFBsYXRmb3Jt
RGlzcGxheVdheWxhbmQod2xEaXNwbGF5KSk7Ci0gICAgaWYgKCFkaXNwbGF5LT5pc0luaXRpYWxp
emVkKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIGlu
aXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gY29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRo
ZSBkaXNwbGF5LiIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZGlzcGxheTsKIH0KIAotUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNwbGF5
V2F5bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5KQotICAgIDogbV9kaXNwbGF5KHds
RGlzcGxheSkKLSAgICAsIG1fcmVnaXN0cnkod2xfZGlzcGxheV9nZXRfcmVnaXN0cnkobV9kaXNw
bGF5KSkKLSAgICAsIG1fZWdsQ29uZmlnQ2hvc2VuKGZhbHNlKQordm9pZCBQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kOjppbml0aWFsaXplKHdsX2Rpc3BsYXkqIGRpc3BsYXkpCiB7Ci0gICAgd2xfcmVn
aXN0cnlfYWRkX2xpc3RlbmVyKG1fcmVnaXN0cnksICZtX3JlZ2lzdHJ5TGlzdGVuZXIsIHRoaXMp
OworICAgIG1fZGlzcGxheSA9IGRpc3BsYXk7CisgICAgbV9yZWdpc3RyeS5yZXNldCh3bF9kaXNw
bGF5X2dldF9yZWdpc3RyeShtX2Rpc3BsYXkpKTsKKyAgICB3bF9yZWdpc3RyeV9hZGRfbGlzdGVu
ZXIobV9yZWdpc3RyeS5nZXQoKSwgJnNfcmVnaXN0cnlMaXN0ZW5lciwgdGhpcyk7CiAgICAgd2xf
ZGlzcGxheV9yb3VuZHRyaXAobV9kaXNwbGF5KTsKIAotICAgIHN0YXRpYyBjb25zdCBFR0xpbnQg
Y29uZmlnQXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCBFR0xfV0lO
RE9XX0JJVCwKLSAgICAgICAgRUdMX1JFRF9TSVpFLCAxLAotICAgICAgICBFR0xfR1JFRU5fU0la
RSwgMSwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgMSwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUs
IDEsCi0gICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKLSAg
ICAgICAgRUdMX05PTkUKLSAgICB9OwotCiAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0RGlzcGxh
eShtX2Rpc3BsYXkpOwogICAgIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERpc3BsYXko
KTsKLSAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBFR0xpbnQgbnVtYmVyT2ZDb25maWdzOwotICAgIGlmICghZWdsQ2hvb3NlQ29u
ZmlnKG1fZWdsRGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJm1fZWdsQ29uZmlnLCAxLCAmbnVt
YmVyT2ZDb25maWdzKSB8fCBudW1iZXJPZkNvbmZpZ3MgIT0gMSkgewotICAgICAgICBnX3dhcm5p
bmcoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBmaW5k
IHRoZSBkZXNpcmVkIEVHTCBjb25maWd1cmF0aW9uLiIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgbV9lZ2xDb25maWdDaG9zZW4gPSB0cnVlOwogfQogCi1QbGF0Zm9ybURpc3BsYXlX
YXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgpCit2b2lkIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQ6OnJlZ2lzdHJ5R2xvYmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFt
ZSkKIHsKLSAgICBpZiAobV93ZWJraXRndGspCi0gICAgICAgIHdsX3dlYmtpdGd0a19kZXN0cm95
KG1fd2Via2l0Z3RrKTsKLSAgICBpZiAobV9jb21wb3NpdG9yKQotICAgICAgICB3bF9jb21wb3Np
dG9yX2Rlc3Ryb3kobV9jb21wb3NpdG9yKTsKLSAgICBpZiAobV9yZWdpc3RyeSkKLSAgICAgICAg
d2xfcmVnaXN0cnlfZGVzdHJveShtX3JlZ2lzdHJ5KTsKLSAgICBpZiAobV9kaXNwbGF5KQotICAg
ICAgICB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QobV9kaXNwbGF5KTsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPFdheWxhbmRTdXJmYWNlPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTdXJmYWNl
KGNvbnN0IEludFNpemUmIHNpemUsIGludCB3aWRnZXRJZCkKLXsKLSAgICBzdHJ1Y3Qgd2xfc3Vy
ZmFjZSogd2xTdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVfc3VyZmFjZShtX2NvbXBvc2l0
b3IpOwotICAgIC8vIFdlIGtlZXAgdGhlIG1pbmltdW0gc2l6ZSBhdCAxeDFweCBzaW5jZSBNZXNh
IHJldHVybnMgbnVsbCB2YWx1ZXMgaW4gd2xfZWdsX3dpbmRvd19jcmVhdGUoKSBmb3IgemVybyB3
aWR0aCBvciBoZWlnaHQuCi0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3cgPSB3
bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UsIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSks
IHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsKLQotICAgIHdsX3dlYmtpdGd0a19zZXRfc3Vy
ZmFjZV9mb3Jfd2lkZ2V0KG1fd2Via2l0Z3RrLCB3bFN1cmZhY2UsIHdpZGdldElkKTsKLSAgICB3
bF9kaXNwbGF5X3JvdW5kdHJpcChtX2Rpc3BsYXkpOwotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2F5bGFuZFN1cmZhY2U+KHdsU3VyZmFjZSwgbmF0aXZlV2luZG93KTsKKyAgICBpZiAo
IXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX2NvbXBvc2l0b3IiKSkKKyAgICAgICAgbV9jb21w
b3NpdG9yLnJlc2V0KHN0YXRpY19jYXN0PHN0cnVjdCB3bF9jb21wb3NpdG9yKj4od2xfcmVnaXN0
cnlfYmluZChtX3JlZ2lzdHJ5LmdldCgpLCBuYW1lLCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2Us
IDEpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IFBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6OmNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKQorV2xVbmlxdWVQdHI8c3RydWN0IHds
X3N1cmZhY2U+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZVN1cmZhY2UoKSBjb25zdAog
ewotICAgIGNsYXNzIE9mZnNjcmVlbkNvbnRleHREYXRhIDogcHVibGljIEdMQ29udGV4dDo6RGF0
YSB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PZmZzY3JlZW5Db250ZXh0RGF0YSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveShuYXRpdmVXaW5k
b3cpOwotICAgICAgICAgICAgd2xfc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RydWN0IHdsX3N1cmZhY2UqIHN1cmZhY2U7Ci0gICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93OwotICAgIH07Ci0KLSAgICBhdXRvIGNvbnRleHREYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxPZmZzY3JlZW5Db250ZXh0RGF0YT4oKTsKLSAgICBjb250ZXh0
RGF0YS0+c3VyZmFjZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9y
KTsKLSAgICBjb250ZXh0RGF0YS0+bmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUo
Y29udGV4dERhdGEtPnN1cmZhY2UsIDEsIDEpOworICAgIGlmICghbV9jb21wb3NpdG9yKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbmF0aXZlV2luZG93ID0gY29udGV4dERh
dGEtPm5hdGl2ZVdpbmRvdzsKLSAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dD
b250ZXh0KG5hdGl2ZVdpbmRvdywgbnVsbHB0ciwgV1RGTW92ZShjb250ZXh0RGF0YSkpOworICAg
IHJldHVybiBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4od2xfY29tcG9zaXRvcl9jcmVh
dGVfc3VyZmFjZShtX2NvbXBvc2l0b3IuZ2V0KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaAppbmRleCA0Y2M5MDQ0Li5jMTY1
ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaApAQCAtMjksNDggKzI5LDM0
IEBACiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5o
IgotI2luY2x1ZGUgIldlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC5oIgotI2luY2x1ZGUg
PG1lbW9yeT4KKyNpbmNsdWRlICJXbFVuaXF1ZVB0ci5oIgogI2luY2x1ZGUgPHdheWxhbmQtY2xp
ZW50Lmg+Ci0jaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xDb250ZXh0RUdMOwotY2xhc3MgSW50U2l6
ZTsKLWNsYXNzIFdheWxhbmRTdXJmYWNlOwotCi1jbGFzcyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
IGZpbmFsOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKK2NsYXNzIFBsYXRmb3JtRGlzcGxheVdh
eWxhbmQgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+IGNyZWF0ZSgpOworICAgIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rpc3BsYXkqKTsKICAgICB2aXJ0dWFsIH5QbGF0
Zm9ybURpc3BsYXlXYXlsYW5kKCk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogbmF0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFu
ZFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYsIGludCB3aWRnZXRJRCk7Ci0K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVTaGFyaW5nR0xDb250ZXh0
KCk7CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xp
c3RlbmVyIG1fcmVnaXN0cnlMaXN0ZW5lcjsKLSAgICBzdGF0aWMgdm9pZCBnbG9iYWxDYWxsYmFj
ayh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1lLCBjb25zdCBj
aGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IHZlcnNpb24pOwotICAgIHN0YXRpYyB2b2lkIGdsb2Jh
bFJlbW92ZUNhbGxiYWNrKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90
IG5hbWUpOworICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgc19y
ZWdpc3RyeUxpc3RlbmVyOwogCi0gICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZChzdHJ1Y3Qgd2xf
ZGlzcGxheSopOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZDsgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGNoZWNrIGFsc28gZm9yIG1fd2Via2l0Z3RrIG9uY2UgdGhlIFVJUHJvY2VzcyBlbWJlZGRlZCBX
YXlsYW5kIHN1YmNvbXBvc2l0ZXIgaXMgaW1wbGVtZW50ZWQuCi0gICAgYm9vbCBpc0luaXRpYWxp
emVkKCkgeyByZXR1cm4gbV9jb21wb3NpdG9yICYmIG1fZWdsRGlzcGxheSAhPSBFR0xfTk9fRElT
UExBWSAmJiBtX2VnbENvbmZpZ0Nob3NlbjsgfQorcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtRGlz
cGxheVdheWxhbmQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9k
aXNwbGF5Kik7CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0
Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0cnlH
bG9iYWwoY29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCBuYW1lKTsKIAogICAgIHN0cnVj
dCB3bF9kaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgc3RydWN0IHdsX3JlZ2lzdHJ5KiBtX3JlZ2lz
dHJ5OwotICAgIHN0cnVjdCB3bF9jb21wb3NpdG9yKiBtX2NvbXBvc2l0b3I7Ci0gICAgc3RydWN0
IHdsX3dlYmtpdGd0ayogbV93ZWJraXRndGs7Ci0KLSAgICBFR0xDb25maWcgbV9lZ2xDb25maWc7
Ci0gICAgYm9vbCBtX2VnbENvbmZpZ0Nob3NlbjsKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xf
cmVnaXN0cnk+IG1fcmVnaXN0cnk7CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX2NvbXBvc2l0
b3I+IG1fY29tcG9zaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5
bGFuZEV2ZW50U291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyYWQy
Zi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmRFdmVudFNvdXJjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXYXlsYW5kRXZlbnRTb3VyY2UuaCIKLQotI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR0xpYlNvdXJjZSB7Ci1w
dWJsaWM6Ci0gICAgdm9pZCBpbml0aWFsaXplKHN0cnVjdCB3bF9kaXNwbGF5Kik7Ci0KLSAgICBn
Ym9vbGVhbiBjaGVjaygpOwotICAgIGdib29sZWFuIGRpc3BhdGNoKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgR1NvdXJjZSBtX3NvdXJjZTsKLSAgICBHUG9sbEZEIG1fcG9sbEZpbGVEZXNjcmlwdG9yOwot
ICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBtX2Rpc3BsYXk7Ci19OwotCi12b2lkIEdMaWJTb3VyY2U6
OmluaXRpYWxpemUoc3RydWN0IHdsX2Rpc3BsYXkqIGRpc3BsYXkpCi17Ci0gICAgbV9kaXNwbGF5
ID0gZGlzcGxheTsKLSAgICBzdHJ1Y3Qgd2xfZXZlbnRfbG9vcCogbG9vcCA9IHdsX2Rpc3BsYXlf
Z2V0X2V2ZW50X2xvb3AoZGlzcGxheSk7Ci0gICAgbV9wb2xsRmlsZURlc2NyaXB0b3IuZmQgPSB3
bF9ldmVudF9sb29wX2dldF9mZChsb29wKTsKLSAgICBtX3BvbGxGaWxlRGVzY3JpcHRvci5ldmVu
dHMgPSBHX0lPX0lOIHwgR19JT19FUlIgfCBHX0lPX0hVUDsKLSAgICBnX3NvdXJjZV9hZGRfcG9s
bCgmbV9zb3VyY2UsICZtX3BvbGxGaWxlRGVzY3JpcHRvcik7Ci0KLSAgICBnX3NvdXJjZV9zZXRf
bmFtZSgmbV9zb3VyY2UsICJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgZXZlbnQg
c291cmNlIik7Ci0gICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KCZtX3NvdXJjZSwgR19QUklPUklU
WV9ERUZBVUxUKTsKLSAgICBnX3NvdXJjZV9zZXRfY2FuX3JlY3Vyc2UoJm1fc291cmNlLCBUUlVF
KTsKLSAgICBnX3NvdXJjZV9hdHRhY2goJm1fc291cmNlLCBudWxscHRyKTsKLX0KLQotZ2Jvb2xl
YW4gR0xpYlNvdXJjZTo6Y2hlY2soKQotewotICAgIHJldHVybiBtX3BvbGxGaWxlRGVzY3JpcHRv
ci5yZXZlbnRzOwotfQotCi1nYm9vbGVhbiBHTGliU291cmNlOjpkaXNwYXRjaCgpCi17Ci0gICAg
aWYgKG1fcG9sbEZpbGVEZXNjcmlwdG9yLnJldmVudHMgJiBHX0lPX0lOKSB7Ci0gICAgICAgIHN0
cnVjdCB3bF9ldmVudF9sb29wKiBsb29wID0gd2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChtX2Rp
c3BsYXkpOwotICAgICAgICB3bF9ldmVudF9sb29wX2Rpc3BhdGNoKGxvb3AsIC0xKTsKLSAgICAg
ICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzKG1fZGlzcGxheSk7Ci0gICAgICAgIG1fcG9sbEZp
bGVEZXNjcmlwdG9yLnJldmVudHMgPSAwOwotICAgIH0KLQotICAgIGlmIChtX3BvbGxGaWxlRGVz
Y3JpcHRvci5yZXZlbnRzICYgKEdfSU9fRVJSIHwgR19JT19IVVApKQotICAgICAgICBnX3dhcm5p
bmcoIldheWxhbmQgRGlzcGxheSBFdmVudCBTb3VyY2U6IGxvc3QgY29ubmVjdGlvbiB0byBuZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIik7Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGlj
IGdib29sZWFuIHByZXBhcmVDYWxsYmFjayhHU291cmNlKiwgZ2ludCogdGltZW91dCkKLXsKLSAg
ICAqdGltZW91dCA9IC0xOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFu
IGNoZWNrQ2FsbGJhY2soR1NvdXJjZSogYmFzZSkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHJldHVybiBzb3VyY2UtPmNoZWNr
KCk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBkaXNwYXRjaENhbGxiYWNrKEdTb3VyY2UqIGJhc2Us
IEdTb3VyY2VGdW5jLCBncG9pbnRlcikKLXsKLSAgICBhdXRvIHNvdXJjZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHJldHVybiBzb3VyY2UtPmRpc3BhdGNoKCk7
Ci19Ci0KLXN0YXRpYyBHU291cmNlRnVuY3Mgd2F5bGFuZEdMaWJTb3VyY2VGdW5jcyA9IHsKLSAg
ICBwcmVwYXJlQ2FsbGJhY2ssCi0gICAgY2hlY2tDYWxsYmFjaywKLSAgICBkaXNwYXRjaENhbGxi
YWNrLAotICAgIG51bGxwdHIsIC8vIGZpbmFsaXplCi0gICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9j
YWxsYmFjawotICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hhbGwKLX07Ci0KLUdTb3VyY2Uq
IFdheWxhbmRFdmVudFNvdXJjZTo6Y3JlYXRlRGlzcGxheUV2ZW50U291cmNlKHN0cnVjdCB3bF9k
aXNwbGF5KiBkaXNwbGF5KQotewotICAgIEdTb3VyY2UqIGJhc2UgPSBnX3NvdXJjZV9uZXcoJndh
eWxhbmRHTGliU291cmNlRnVuY3MsIHNpemVvZihHTGliU291cmNlKSk7Ci0KLSAgICBhdXRvIHNv
dXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpYlNvdXJjZSo+KGJhc2UpOwotICAgIHNvdXJjZS0+
aW5pdGlhbGl6ZShkaXNwbGF5KTsKLQotICAgIHJldHVybiBiYXNlOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJm
YWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcxYWIxOS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJm
YWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2F5bGFuZFN1cmZhY2UuaCIKLQotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNpbmNsdWRl
ICJHTENvbnRleHRFR0wuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1EaXNwbGF5V2F5bGFuZC5oIgotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi12b2lkIGZyYW1lQ2FsbGJhY2sodm9pZCosIHN0cnVjdCB3bF9jYWxsYmFjayog
Y2FsbGJhY2ssIHVpbnQzMl90KQotewotICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgd2xfY2Fs
bGJhY2tfZGVzdHJveShjYWxsYmFjayk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2Fs
bGJhY2tfbGlzdGVuZXIgZnJhbWVMaXN0ZW5lciA9IHsKLSAgICBmcmFtZUNhbGxiYWNrCi19Owot
Ci1XYXlsYW5kU3VyZmFjZTo6V2F5bGFuZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqIHdsU3Vy
ZmFjZSwgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3cpCi0gICAgOiBtX3dsU3VyZmFj
ZSh3bFN1cmZhY2UpCi0gICAgLCBtX25hdGl2ZVdpbmRvdyhuYXRpdmVXaW5kb3cpCi17Ci19Ci0K
LVdheWxhbmRTdXJmYWNlOjp+V2F5bGFuZFN1cmZhY2UoKQotewotICAgIC8vIFRoZSBzdXJmYWNl
IGNvdWxkbid0IGhhdmUgYmVlbiBjcmVhdGVkIGluIHRoZSBmaXJzdCBwbGFjZSBpZiBXYXlsYW5k
RGlzcGxheSB3YXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCi0gICAgY29uc3QgUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZCYgd2F5bGFuZERpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7Ci0gICAgQVNTRVJUKHdh
eWxhbmREaXNwbGF5Lm5hdGl2ZSgpKTsKLSAgICBlZ2xNYWtlQ3VycmVudCh3YXlsYW5kRGlzcGxh
eS5uYXRpdmUoKSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVY
VCk7Ci0KLSAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV9uYXRpdmVXaW5kb3cpOwotICAgIHds
X3N1cmZhY2VfZGVzdHJveShtX3dsU3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2F5bGFuZFN1cmZhY2U6
OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIHdsX2VnbF93aW5kb3dfcmVzaXpl
KG1fbmF0aXZlV2luZG93LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIDApOwotfQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlR0xD
b250ZXh0KCkKLXsKLSAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0
KG1fbmF0aXZlV2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOwotfQotCi12b2lk
IFdheWxhbmRTdXJmYWNlOjpyZXF1ZXN0RnJhbWUoKQotewotICAgIHN0cnVjdCB3bF9jYWxsYmFj
ayogZnJhbWVDYWxsYmFjayA9IHdsX3N1cmZhY2VfZnJhbWUobV93bFN1cmZhY2UpOwotICAgIHds
X2NhbGxiYWNrX2FkZF9saXN0ZW5lcihmcmFtZUNhbGxiYWNrLCAmZnJhbWVMaXN0ZW5lciwgdGhp
cyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFdB
WUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dsVW5pcXVlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dsVW5pcXVlUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0
M2Q3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dheWxhbmQvV2xVbmlxdWVQdHIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisjaW5jbHVk
ZSA8d2F5bGFuZC1zZXJ2ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorc3RydWN0IFdsUHRyRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFQq
IHB0cikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3VzaW5nIFdsVW5pcXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFdsUHRyRGVs
ZXRlcjxUPj47CisKKyNkZWZpbmUgRk9SX0VBQ0hfV0FZTEFORF9ERUxFVEVSKG1hY3JvKSBcCisg
ICAgbWFjcm8oc3RydWN0IHdsX2Rpc3BsYXksIHdsX2Rpc3BsYXlfZGVzdHJveSkgXAorICAgIG1h
Y3JvKHN0cnVjdCB3bF9nbG9iYWwsIHdsX2dsb2JhbF9kZXN0cm95KSBcCisgICAgbWFjcm8oc3Ry
dWN0IHdsX3N1cmZhY2UsIHdsX3N1cmZhY2VfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3
bF9jb21wb3NpdG9yLCB3bF9jb21wb3NpdG9yX2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qg
d2xfcmVnaXN0cnksIHdsX3JlZ2lzdHJ5X2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xf
cHJveHksIHdsX3Byb3h5X2Rlc3Ryb3kpCisKKyNkZWZpbmUgREVGSU5FX1dBWUxBTkRfREVMRVRF
Uih0eXBlTmFtZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBXbFB0ckRl
bGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7IFwKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBl
TmFtZSogcHRyKSBjb25zdCBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgaWYgKHB0cikgXAor
ICAgICAgICAgICAgICAgIGRlbGV0ZXJGdW5jKHB0cik7IFwKKyAgICAgICAgfSBcCisgICAgfTsK
KworRk9SX0VBQ0hfV0FZTEFORF9ERUxFVEVSKERFRklORV9XQVlMQU5EX0RFTEVURVIpCisjdW5k
ZWYgRk9SX0VBQ0hfV0FZTEFORF9ERUxFVEVSCisjdW5kZWYgREVGSU5FX1dBWUxBTkRfREVMRVRF
UgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5E
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDRiMWNmNmIuLmRjMjBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxNi0wOC0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
ZG9lcyBub3Qgd29yayBpbiBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdG8gdGhlIG5ldyBHTENvbnRleHQgQVBJLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUpOgorICAg
ICAgICAoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBdmFpbGFibGUpOgorCiAyMDE2LTA4LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3Vt
ZW50KiB3aGVuIGdldHRpbmcgY29va2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
Y3BwCmluZGV4IDlhMjZkOTIuLjE3ODE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojppbml0aWFsaXplKCkKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgVGV4dHVy
ZU1hcHBlciBuZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCiAgICAgaWYgKCFtX2NvbnRl
eHQpCi0gICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRv
dyhtX3dpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICAgICAgbV9jb250
ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KG1fd2luZG93KTsKIAogICAg
IGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC0yODIsNyArMjgyLDcgQEAgYm9v
bCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2
YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENyZWF0ZSBHTCBjb250
ZXh0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHTENvbnRleHQ+IGNvbnRleHQgPSBH
TENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3codGVzdFdpbmRvdywgR0xDb250ZXh0Ojpz
aGFyaW5nQ29udGV4dCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0
PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHRlc3RXaW5kb3cp
OwogCiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIDo6RGVzdHJveVdpbmRvdyh0ZXN0V2lu
ZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBlZTgzMDJkLi40YTNiOThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTU1IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5v
dCB3b3JrIGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgaXMgdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWNjZWxlcmF0
ZWQgY29tcG9zaXRpbmcgc3VwcG9ydCBpbiBXYXlsYW5kIGZvciB0aGUgR1RLKyBwb3J0LiBJdCdz
IGJhc2VkCisgICAgICAgIG9uIHByZXZpb3VzIHBhdGNoZXMgd3JpdHRlbiBieSBJYWdvIFRvcmFs
LCDFvWFuIERvYmVyxaFlaywgRW1hbnVlbGUgQWluYSBhbmQgRW1pbGlvIFBvenVlbG8gTW9uZm9y
dC4KKworICAgICAgICBUaGUgZXhpc3RpbmcgV2ViS2l0R1RLKyBXYXlsYW5kIGludGVyZmFjZSBw
cmV2aW91c2x5IGFkZGVkIGZvciB0aGlzIHRvIFdlYkNvcmUgaGFzIGJlZW4gbW92ZWQgdG8gdGhl
IFdlYktpdDIKKyAgICAgICAgbGF5ZXIsIHNpbmNlIGl0J3MgYWN0dWFsbHkgc3BlY2lmaWMgdG8g
V2ViS2l0MiwgYW5kIGl0J3Mgbm93IGFjdHVhbGx5IHVzZWQuIFRoZSBVSSBwcm9jZXNzIHJ1bnMg
YSBuZXN0ZWQgV2F5bGFuZAorICAgICAgICBjb21wb3NpdG9yIHRoYXQgd2ViIHByb2Nlc3NlcyBj
b25uZWN0IHRvLiBXZWIgcHJvY2Vzc2VzIGNyZWF0ZSBhIFdheWxhbmQgc3VyZmFjZSBpbiB0aGUg
bmVzdGVkIGNvbXBvc2l0b3IgZm9yCisgICAgICAgIHRoZSB3ZWIgcGFnZSwgYW5kIHVzaW5nIHRo
ZSBXZWJLaXRHVEsrIFdheWxhbmQgcHJvdG9jb2wgaW50ZXJmYWNlIHRoZXkgdGVsbCB0aGUgbmVz
dGVkIGNvbXBvc2l0b3IgdGhlIHdlYiBwYWdlCisgICAgICAgIGFzc29jaWF0ZWQgdG8gdGhlIHN1
cmZhY2UuIEEgV2F5bGFuZCB3aW5kb3cgaXMgY3JlYXRlZCBmb3IgdGhhdCBzdXJmYWNlIHRoYXQg
aXMgdGhlbiB1c2VkIGFzIHRoZSBuYXRpdmUgd2luZG93CisgICAgICAgIGhhbmRsZSBmb3IgY29t
cG9zaXRpbmcuIFRvIGNvbW11bmljYXRlIHdpdGggdGhlIG5lc3RlZCBjb21wb3NpdG9yIGFuZCB0
byBlbnN1cmUgYWxsIEdMIG9wZXJhdGlvbnMgaGFwcGVuIGluIHRoZQorICAgICAgICBuZXN0ZWQg
Y29tcG9zaXRvciBkaXNwbGF5LCB0aGUgd2ViIHByb2Nlc3MgY3JlYXRlcyBhIFdheWxhbmQgZGlz
cGxheSB0aGF0IGNvbm5lY3RzIHRvIHRoZSBuZXN0ZWQgY29tcG9zaXRvciwKKyAgICAgICAgdXNl
cyB0aGUgV2ViS2l0R1RLKyBXYXlsYW5kIGludGVyZmFjZSBhbmQgaXQncyBzZXQgYXMgdGhlIGds
b2JhbCBzaGFyZWQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcuCisKKyAgICAgICAgVGhlIG5lc3Rl
ZCBXYXlsYW5kIGNvbXBvc2l0b3IgY3JlYXRlcyBhIG5ldyBkaXNwbGF5IHdpdGggYSB1bmlxdWUg
bmFtZSB0aGF0IGlzIHNlbnQgdG8gdGhlIHdlYiBwcm9jZXNzZXMgYXQKKyAgICAgICAgc3RhcnQg
dXAuIEl0IGltcGxlbWVudHMgdGhlIFdheWxhbmQgc3VyZmFjZSBpbnRlcmZhY2UgdG8gaGFuZGxl
IHRoZSBXYXlsYW5kIGJ1ZmZlcnMgY3JlYXRlZCBmb3IgZXZlcnkgc3VyZmFjZQorICAgICAgICBh
bmQgc2NoZWR1bGluZyByZWRyYXdzIG9uIHRoZSB3ZWIgcGFnZXMgd2hlbiB1cGRhdGVzIGFyZSBh
dmFpbGFibGUuIEl0IHVzZXMgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBpbnRlcmZhY2UgdG8KKyAg
ICAgICAgYXNzb2NpYXRlIHRoZSBzdXJmYWNlcyB0byBhIHBhcnRpY3VsYXIgd2ViIHBhZ2UuIEEg
dGV4dHVyZSBpcyBjcmVhdGVkIGZvciBldmVyeSBzdXJmYWNlIGFuZCB1cGRhdGVkIHdpdGggdGhl
CisgICAgICAgIFdheWxhbmQgYnVmZmVyIGNvbnRlbnRzIHVzaW5nIGFuIEVHTEltYWdlS0hSIGFu
ZCBlZ2xJbWFnZVRhcmdldFRleHR1cmUyZCBBUEkuCisKKyAgICAgICAgVG8gYWJzdHJhY3QgdGhl
IHBsYXRmb3JtIGRpZmZlcmVuY2VzIGFuZCBhdm9pZCBpZmRlZnMgYXMgbXVjaCBhcyBwb3NzaWJs
ZSwgbmV3IGFic3RyYWN0IGNsYXNzZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgICAgIHRvIHJlcHJl
c2VudCB0aGUgc3VyZmFjZXMgdXNlZCBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4gQWNjZWxl
cmF0ZWRTdXJmYWNlIGlzIHVzZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGFuZAorICAgICAgICByZXBy
ZXNlbnRzIHRoZSBzdXJmYWNlIHdoZXJlIGNvbnRlbnRzIGFyZSByZW5kZXJlZCBpbnRvLiBUaGUg
WDExIGltcGxlbWVudGF0aW9uIGlzIHRoZSByZWRpcmVjdGVkIFhDb21wb3NpdGUKKyAgICAgICAg
d2luZG93LCBhbmQgdGhlIFdheWxhbmQgaW1wbGVtZW50YXRpb24gaXMgZXF1aXZhbGVudCB0byB0
aGUgcHJldmlvdXMgV2F5bGFuZCBzdXJmYWNlIGFkZGVkIHRvIFdlYkNvcmUgYnV0IG5ldmVyCisg
ICAgICAgIHVzZWQuIEluIHRoZSBVSSBwcm9jZXNzIHRoZSB3ZWIgdmlldyBjcmVhdGVzIGFuIGFi
c3RyYWN0IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHRoYXQgaXMgdXNlZCB0byByZW5kZXIgdGhl
CisgICAgICAgIEFjY2VsZXJhdGVkU3VyZmFjZSBpbnRvIHRoZSB3ZWIgdmlldyB1c2luZyBjYWly
by4gVGhlIFgxMSBpbXBsZW1lbnRhdGlvbiBjcmVhdGVzIHRoZSBjYWlybyBzdXJmYWNlIGZvciB0
aGUKKyAgICAgICAgcmVkaXJlY3RlZCBYQ29tcG9zaXRlIHdpbmRvdyBwaXhtYXAgYW5kIHVzZXMg
WERhbWFnZSBleHRlbnNpb24gdG8gc2NoZWR1bGUgcmVkcmF3cy4gVGhlIFdheWxhbmQgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgYXNrcyB0aGUgbmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBmb3Ig
dGhlIHRleHR1cmUgYXNzb2NpYXRlZCB0byB0aGUgd2ViIHZpZXcgcGFnZS4KKworICAgICAgICBB
Y2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBub3cgYWx3YXlzIGVuYWJsZWQgYnkgZGVmYXVsdCBp
biBib3RoIFgxMSBhbmQgV2F5bGFuZCwgdW5sZXNzIGl0J3MgZXhwbGljaXRseQorICAgICAgICBk
aXNhYmxlZCBieSB0aGUgdXNlciB1c2luZyB0aGUgV0VCS0lUX0RJU0FCTEVfQ09NUE9TSVRJTkdf
TU9ERSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgaWYgYW55IGV4dGVuc2lvbiBvcgorICAgICAg
ICBmZWF0dXJlIHJlcXVpcnRlZCBieSBYMTEgb3IgV2F5bGFuZCBpbXBsZW1lbnRhdGlvbnMgYXJl
IG5vdCBhdmFpbGFibGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpnbENv
bnRleHQpOiBQYXNzIHRoZSBzaGFyZWQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcgdG8gR0xDb250
ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KCkKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEVuY29kZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxh
eSBuYW1lLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOiBEZWNvZGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOiBBZGQgd2F5bGFuZCBjb21w
b3NpdG9yIGRpc3BsYXkgbmFtZSBpbml0aWFsIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZURpc3Bvc2UpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VVcGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3
ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB0aGUgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFt
ZSBpbml0aWFsIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZTo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludCk6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbik6CisgICAg
ICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6WERh
bWFnZU5vdGlmaWVyOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6
OmZpbHRlclhEYW1hZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6
bm90aWZ5KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEpOgorICAgICAgICAoV2Vi
S2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktp
dDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldheWxh
bmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2F5
bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFu
ZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRD
b21wb3NpdG9yOjpCdWZmZXI6OmRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dXNlKToKKyAgICAgICAgKFdlYktpdDo6
V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dW51c2UpOgorICAgICAgICAoV2ViS2l0OjpXYXls
YW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpjcmVhdGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldh
eWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnNpemUpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5k
Q29tcG9zaXRvcjo6U3VyZmFjZTo6U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlOjp+U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlOjptYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6YXR0YWNoQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVlc3RGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVy
ZUZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZh
Y2U6OmNvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFs
aXplRUdMKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlV2F5bGFuZExvb3BTb3VyY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6V2F5bGFuZENvbXBvc2l0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6Z2V0VGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6dW5yZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAo
V2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6c2V0V2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjppc1J1bm5pbmcpOgorICAgICAgICAoV2ViS2l0
OjpXYXlsYW5kQ29tcG9zaXRvcjo6ZGlzcGxheU5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
czo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvWERh
bWFnZU5vdGlmaWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpBY2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6On5BY2NlbGVyYXRlZFN1cmZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6d2luZG93KToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRTdXJmYWNlOjpzdXJmYWNlSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0Ojp3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZFN1cmZhY2VXYXlsYW5kOjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKToKKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6fkFjY2VsZXJhdGVkU3VyZmFjZVdh
eWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpyZXNp
emUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNl
V2F5bGFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZVgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcC4KKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSk6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6cmVzaXplKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6Okxh
eWVyVHJlZUhvc3RHdGspOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjptYWtl
Q29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OlJlbmRl
ckZyYW1lU2NoZWR1bGVyOjpSZW5kZXJGcmFtZVNjaGVkdWxlcik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0aWFsaXplIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3Ig
ZGlzcGxheSBuYW1lLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKTogUmV0
dXJuIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgorCiAyMDE2LTA4LTI1ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBGaXggR1RLKyBidWlsZCBhZnRlciByMjA0OTg2IGFuZCByMjA0OTk2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCAzNDNlOTZiLi4wOTgwZjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMjk1LDEzICsyOTUsMTYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5
R1N0cmVhbWVyLmNwcAogCisgICAgVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZS5jcHAKKyAgICBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5j
cHAKKyAgICBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAogICAg
IFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsv
RXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9HZXN0dXJlQ29udHJv
bGxlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9U
ZXh0Q2hlY2tlckd0ay5jcHAKLSAgICBVSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5jcHAK
KyAgICBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAogICAgIFVJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVu
dVByb3h5R3RrLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5j
cHAKQEAgLTM1MCw4ICszNTMsMTAgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3BwCiAKKyAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKKyAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwCisgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAKLSAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQYWdlR3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwCkBAIC0zNjgsNiArMzczLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9ERVJJ
VkVEX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vSW5zcGVj
dG9yR1Jlc291cmNlQnVuZGxlLmMKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJ
Un0vV2ViS2l0Mkluc3BlY3RvckdSZXNvdXJjZUJ1bmRsZS5jCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJSZXNvdXJjZXNHUmVzb3VyY2VCdW5kbGUuYworICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFBy
b3RvY29sLmMKIAogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfQVBJX0RJUn0vV2Vi
S2l0RW51bVR5cGVzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfQVBJX0RJ
Un0vV2ViS2l0TWFyc2hhbC5jcHAKQEAgLTY4NCw2ICs2OTAsMTcgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIFZFUkJBVElNCiApCiAKK2lmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQpCisgICAg
IyBXYXlsYW5kIHByb3RvY29sIGV4dGVuc2lvbi4KKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisg
ICAgICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0Mldh
eWxhbmRDbGllbnRQcm90b2NvbC5jCisgICAgICAgIERFUEVORFMgJHtXRUJLSVQyX0RJUn0vU2hh
cmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbAorICAgICAgICBDT01NQU5EIHdheWxh
bmQtc2Nhbm5lciBzZXJ2ZXItaGVhZGVyIDwgJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0ay9XZWJL
aXQyV2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElS
fS9XZWJLaXQyV2F5bGFuZFNlcnZlclByb3RvY29sLmgKKyAgICAgICAgQ09NTUFORCB3YXlsYW5k
LXNjYW5uZXIgY2xpZW50LWhlYWRlciA8ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0
MldheWxhbmRQcm90b2NvbC54bWwgPiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0v
V2ViS2l0MldheWxhbmRDbGllbnRQcm90b2NvbC5oCisgICAgICAgIENPTU1BTkQgd2F5bGFuZC1z
Y2FubmVyIGNvZGUgPCAke1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJv
dG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXls
YW5kQ2xpZW50UHJvdG9jb2wuYworICAgICkKK2VuZGlmICgpCisKIGlmIChFTkFCTEVfUExVR0lO
X1BST0NFU1NfR1RLMikKICAgICBzZXQoUGx1Z2luUHJvY2Vzc0dUSzJfRVhFQ1VUQUJMRV9OQU1F
IFdlYktpdFBsdWdpblByb2Nlc3MyKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDM0NTI0MjguLjUzZjYw
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKQogCiAjaW5jbHVkZSAiQ29tcG9zaXRpbmdSdW5Mb29wLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKICNpZiBVU0UoT1BFTkdMX0VTXzIpCkBAIC00MSwxNCAr
NDIsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1SZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShDbGll
bnQqIGNsaWVudCwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRsZSkKK1JlZjxUaHJlYWRlZENv
bXBvc2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKENsaWVudCogY2xpZW50LCB1aW50
NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0ZyYW1lU3luYyBkb0ZyYW1lU3luYykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRlZENvbXBvc2l0b3IoY2xpZW50LCBu
YXRpdmVTdXJmYWNlSGFuZGxlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkZWRD
b21wb3NpdG9yKGNsaWVudCwgbmF0aXZlU3VyZmFjZUhhbmRsZSwgZG9GcmFtZVN5bmMpKTsKIH0K
IAotVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50KiBjbGllbnQs
IHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUpCitUaHJlYWRlZENvbXBvc2l0b3I6OlRocmVh
ZGVkQ29tcG9zaXRvcihDbGllbnQqIGNsaWVudCwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRs
ZSwgU2hvdWxkRG9GcmFtZVN5bmMgZG9GcmFtZVN5bmMpCiAgICAgOiBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX25hdGl2ZVN1cmZhY2VIYW5kbGUobmF0aXZlU3VyZmFjZUhhbmRsZSkKKyAgICAs
IG1fZG9GcmFtZVN5bmMoZG9GcmFtZVN5bmMpCiAgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChz
dGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJU
cmVlKCk7IH0pKQogewogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewpAQCAtMTY0LDM0ICsxNjYs
MjUgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjaGVkdWxlRGlzcGxheUltbWVkaWF0ZWx5
KCkKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhcnRVcGRhdGVUaW1lcihDb21wb3NpdGlu
Z1J1bkxvb3A6OkltbWVkaWF0ZSk7CiB9CiAKLWJvb2wgVGhyZWFkZWRDb21wb3NpdG9yOjp0cnlF
bnN1cmVHTENvbnRleHQoKQorYm9vbCBUaHJlYWRlZENvbXBvc2l0b3I6Om1ha2VDb250ZXh0Q3Vy
cmVudCgpCiB7Ci0gICAgaWYgKCFnbENvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOwogCi0gICAgZ2xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IC8vIFRoZSB3aW5kb3cgc2l6ZSBtYXkgYmUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgcGFnZSBzaXpl
IGF0IHRoaXMgcG9pbnQsIGFuZCBnZXR0aW5nCi0gICAgLy8gdGhlIHZpZXdwb3J0IHBhcmFtZXRl
cnMgaW5jb3JyZWN0LCBtZWFucyB0aGF0IHRoZSBjb250ZW50IHdpbGwgYmUgbWlzcGxhY2VkLiBU
aHVzCi0gICAgLy8gd2Ugc2V0IHRoZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20g
dGhlIHdpbmRvdyBzaXplLgotICAgIEludFNpemUgY29udGV4dFNpemUgPSBnbENvbnRleHQoKS0+
ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwotICAgIGlmIChtX3ZpZXdwb3J0U2l6ZSAhPSBjb250
ZXh0U2l6ZSkgewotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGNvbnRleHRTaXplLndpZHRoKCks
IGNvbnRleHRTaXplLmhlaWdodCgpKTsKLSAgICAgICAgbV92aWV3cG9ydFNpemUgPSBjb250ZXh0
U2l6ZTsKLSAgICB9CisgICAgaWYgKCFtX25hdGl2ZVN1cmZhY2VIYW5kbGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiB0cnVlOwotfQorICAgIG1fY29udGV4dCA9IEdMQ29u
dGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0PEdMTmF0aXZlV2lu
ZG93VHlwZT4obV9uYXRpdmVTdXJmYWNlSGFuZGxlKSwgJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLUdMQ29udGV4dCogVGhyZWFkZWRDb21wb3NpdG9yOjpnbENvbnRleHQo
KQotewotICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
CisgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIW1fbmF0aXZlU3VyZmFjZUhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgaWYgKG1fZG9GcmFtZVN5bmMgPT0gU2hvdWxkRG9GcmFtZVN5bmM6
Ok5vKQorICAgICAgICBtX2NvbnRleHQtPnN3YXBJbnRlcnZhbCgwKTsKIAotICAgIG1fY29udGV4
dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0PEdM
TmF0aXZlV2luZG93VHlwZT4obV9uYXRpdmVTdXJmYWNlSGFuZGxlKSwgR0xDb250ZXh0OjpzaGFy
aW5nQ29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworICAgIHJldHVybiB0
cnVlOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KCkKQEAgLTIx
Niw5ICsyMDksMTggQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgp
CiAgICAgaWYgKCFtX3NjZW5lIHx8ICFtX3NjZW5lLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIXRyeUVuc3VyZUdMQ29udGV4dCgpKQorICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIFRoZSB3aW5kb3cgc2l6ZSBt
YXkgYmUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgcGFnZSBzaXplIGF0IHRoaXMgcG9pbnQsIGFuZCBn
ZXR0aW5nCisgICAgLy8gdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgaW5jb3JyZWN0LCBtZWFucyB0
aGF0IHRoZSBjb250ZW50IHdpbGwgYmUgbWlzcGxhY2VkLiBUaHVzCisgICAgLy8gd2Ugc2V0IHRo
ZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20gdGhlIHdpbmRvdyBzaXplLgorICAg
IEludFNpemUgY29udGV4dFNpemUgPSBtX2NvbnRleHQtPmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUo
KTsKKyAgICBpZiAobV92aWV3cG9ydFNpemUgIT0gY29udGV4dFNpemUpIHsKKyAgICAgICAgZ2xW
aWV3cG9ydCgwLCAwLCBjb250ZXh0U2l6ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7
CisgICAgICAgIG1fdmlld3BvcnRTaXplID0gY29udGV4dFNpemU7CisgICAgfQorCiAgICAgRmxv
YXRSZWN0IGNsaXBSZWN0KDAsIDAsIG1fdmlld3BvcnRTaXplLndpZHRoKCksIG1fdmlld3BvcnRT
aXplLmhlaWdodCgpKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZpZXdwb3J0VHJhbnNm
b3JtOwpAQCAtMjMyLDcgKzIzNCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJM
YXllclRyZWUoKQogICAgIH0KICAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh2
aWV3cG9ydFRyYW5zZm9ybSwgMSwgY2xpcFJlY3QsIENvbG9yOjp0cmFuc3BhcmVudCwgIW1fZHJh
d3NCYWNrZ3JvdW5kLCBzY3JvbGxQb3N0aW9uKTsKIAotICAgIGdsQ29udGV4dCgpLT5zd2FwQnVm
ZmVycygpOworICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIH0KIAogdm9pZCBUaHJlYWRl
ZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuaAppbmRleCAwNDJjNjlmLi42MzY4NGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBA
IC01Nyw3ICs1Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjcm9s
bE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQp
ID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IGNyZWF0
ZShDbGllbnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlID0gMCk7CisgICAgZW51bSBj
bGFzcyBTaG91bGREb0ZyYW1lU3luYyB7IE5vLCBZZXMgfTsKKworICAgIHN0YXRpYyBSZWY8VGhy
ZWFkZWRDb21wb3NpdG9yPiBjcmVhdGUoQ2xpZW50KiwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhh
bmRsZSA9IDAsIFNob3VsZERvRnJhbWVTeW5jID0gU2hvdWxkRG9GcmFtZVN5bmM6Olllcyk7CiAg
ICAgdmlydHVhbCB+VGhyZWFkZWRDb21wb3NpdG9yKCk7CiAKICAgICB2b2lkIHNldE5hdGl2ZVN1
cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCk7CkBAIC03Nyw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZvcmNlUmVwYWludCgpOwogCiBwcml2YXRlOgotICAgIFRocmVhZGVk
Q29tcG9zaXRvcihDbGllbnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlKTsKKyAgICBU
aHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50KiwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRsZSwg
U2hvdWxkRG9GcmFtZVN5bmMpOwogCiAgICAgLy8gQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xp
ZW50CiAgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSBvdmVycmlkZTsKQEAgLTkwLDggKzkyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbmRlckxheWVyVHJlZSgpOwogICAgIHZvaWQgc2NoZWR1
bGVEaXNwbGF5SW1tZWRpYXRlbHkoKTsKIAotICAgIGJvb2wgdHJ5RW5zdXJlR0xDb250ZXh0KCk7
Ci0gICAgV2ViQ29yZTo6R0xDb250ZXh0KiBnbENvbnRleHQoKTsKKyAgICBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogCiAgICAgQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBS
ZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBtX3NjZW5lOwpAQCAtMTAyLDYgKzEwMyw3
IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvciB7IDEgfTsKICAgICBi
b29sIG1fZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1ZSB9OwogICAgIHVpbnQ2NF90IG1fbmF0aXZlU3Vy
ZmFjZUhhbmRsZTsKKyAgICBTaG91bGREb0ZyYW1lU3luYyBtX2RvRnJhbWVTeW5jOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPENvbXBvc2l0aW5nUnVuTG9vcD4gbV9jb21wb3NpdGluZ1J1bkxvb3A7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IDllYmI0M2QuLjIxOThmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTE0NSw2ICsxNDUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIE9TKExJTlVYKQogICAgIGVuY29k
ZXIgPDwgbWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlOwogI2VuZGlmCisKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorICAgIGVuY29kZXIgPDwgd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsK
KyNlbmRpZgogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCkBAIC0zMDUsNiArMzA5LDExIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFt
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCmluZGV4IGZmMjAwNWMuLmMyNmM0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTcwLDYgKzE3
MCwxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgT1MoTElO
VVgpCiAgICAgSVBDOjpBdHRhY2htZW50IG1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRsZTsKICNl
bmRpZgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBTdHJpbmcgd2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5TmFtZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0
a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YktpdDJXYXlsYW5kUHJvdG9jb2wueG1sCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFu
ZENsaWVudFByb3RvY29sLnhtbApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbAppbmRleCAxMzFhOTNjLi4xMjQ2MTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktpdEd0a1dh
eWxhbmRDbGllbnRQcm90b2NvbC54bWwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbApAQCAtMjcsOSArMjcsOSBAQAogICA8L2NvcHlyaWdo
dD4KIAogICA8aW50ZXJmYWNlIG5hbWU9IndsX3dlYmtpdGd0ayIgdmVyc2lvbj0iMSI+Ci0gICAg
PHJlcXVlc3QgbmFtZT0ic2V0X3N1cmZhY2VfZm9yX3dpZGdldCI+CisgICAgPHJlcXVlc3QgbmFt
ZT0iYmluZF9zdXJmYWNlX3RvX3BhZ2UiPgogICAgICAgPGFyZyBuYW1lPSJzdXJmYWNlIiB0eXBl
PSJvYmplY3QiIGludGVyZmFjZT0id2xfc3VyZmFjZSIvPgotICAgICAgPGFyZyBuYW1lPSJpZCIg
dHlwZT0idWludCIvPgorICAgICAgPGFyZyBuYW1lPSJwYWdlX2lkIiB0eXBlPSJ1aW50Ii8+CiAg
ICAgPC9yZXF1ZXN0PgogCiAgIDwvaW50ZXJmYWNlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGFkMzgxNDAu
LjA2YWYwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3QmFzZS5oIgogCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKKyNp
bmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiSW5wdXRNZXRob2RGaWx0ZXIuaCIKICNpbmNsdWRlICJL
ZXlCaW5kaW5nVHJhbnNsYXRvci5oIgpAQCAtNzIsMjMgKzczLDEwIEBACiAjaW5jbHVkZSAiV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSNpbmNsdWRlICJYRGFtYWdlTm90aWZpZXIuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1
ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5z
aW9ucy9YZGFtYWdlLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8teGxpYi5oPgotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShYMTEpCiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oV0FZTEFORCkKLSNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgotI2VuZGlmCi0KIC8vIGd0
a193aWRnZXRfZ2V0X3NjYWxlX2ZhY3RvcigpIGFwcGVhcmVkIGluIEdUSyAzLjEwLCBidXQgd2Ug
YWxzbyBuZWVkCiAvLyB0byBtYWtlIHN1cmUgd2UgaGF2ZSBjYWlybyBuZXcgZW5vdWdoIHRvIHN1
cHBvcnQgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlCiAjZGVmaW5lIEhBVkVfR1RLX1ND
QUxFX0ZBQ1RPUiBIQVZFX0NBSVJPX1NVUkZBQ0VfU0VUX0RFVklDRV9TQ0FMRSAmJiBHVEtfQ0hF
Q0tfVkVSU0lPTigzLCAxMCwgMCkKQEAgLTIxMSwxMCArMTk5LDcgQEAgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHVuc2lnbmVkIHNjcmVlblNhdmVyQ29va2llOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZTsKLSAgICBYVW5p
cXVlRGFtYWdlIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlOwotI2VuZGlmCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlPiBhY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPERyYWdBbmREcm9wSGFuZGxlcj4gZHJhZ0FuZERyb3BIYW5kbGVyOwpAQCAtMzUxLDUwICsz
MzYsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5X
aW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZQogICAgICAgICBwcml2LT50b3BsZXZlbFdp
bmRvd1JlYWxpemVkSUQgPSBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQod2luZG93LCAicmVhbGl6
ZSIsIEdfQ0FMTEJBQ0sodG9wbGV2ZWxXaW5kb3dSZWFsaXplZCksIHdlYlZpZXdCYXNlKTsKIH0K
IAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3LCBQaXhtYXAgcGl4bWFwKQotewotICAgIGlmIChQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgIT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7Ci0gICAgaWYgKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJm
YWNlCi0gICAgICAgICYmIGNhaXJvX3hsaWJfc3VyZmFjZV9nZXRfZHJhd2FibGUocHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCkpID09IHBpeG1hcCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlKSB7Ci0g
ICAgICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZSkgewot
ICAgICAgICAgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5yZW1vdmUocHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2UuZ2V0KCkpOwotICAgICAgICAgICAgcHJp
di0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2UucmVzZXQoKTsKLSAgICAgICAg
fQotICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZSA9IG51bGxwdHI7
Ci0gICAgfQotCi0gICAgaWYgKCFwaXhtYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIERyYXdp
bmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJv
eHlJbXBsKj4ocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKTsKLSAgICBpZiAoIWRyYXdp
bmdBcmVhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRTaXplIHNpemUgPSBkcmF3aW5nQXJl
YS0+c2l6ZSgpOwotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcHJpdi0+cGFnZVByb3h5
LT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3Ip
OwotCi0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEFTU0VSVChk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpKS5uYXRpdmUoKSA9PSBHREtfRElTUExBWV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVm
YXVsdCgpKSk7Ci0gICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zp
c3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOwotICAgIGlmICghdmlzdWFsKQotICAgICAg
ICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2Rl
ZmF1bHQoKSk7Ci0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UgPSBhZG9w
dFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgR0RLX1ZJU1VB
TF9YVklTVUFMKHZpc3VhbCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIGNh
aXJvU3VyZmFjZVNldERldmljZVNjYWxlKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJm
YWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBy
aXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlID0gWERhbWFnZUNyZWF0ZShk
aXNwbGF5LCBwaXhtYXAsIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7Ci0gICAgWERhbWFnZU5vdGlm
aWVyOjpzaW5nbGV0b24oKS5hZGQocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VE
YW1hZ2UuZ2V0KCksIFt3ZWJWaWV3XSB7Ci0gICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhH
VEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICB9KTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAt
NTY0LDkgKzUwNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlzcG9zZShHT2Jq
ZWN0KiBnb2JqZWN0KQogICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKHdlYlZpZXctPnByaXYtPnNj
cmVlblNhdmVySW5oaWJpdENhbmNlbGxhYmxlLmdldCgpKTsKICAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2ViVmlldywgbnVsbHB0cik7CiAgICAgd2ViVmll
dy0+cHJpdi0+cGFnZVByb3h5LT5jbG9zZSgpOwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1BpeG1hcCh3ZWJWaWV3LCAwKTsKLSNlbmRpZgorICAgIHdlYlZpZXctPnByaXYtPmFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2Vi
X3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKGdvYmplY3QpOwogfQogCkBAIC01ODUs
NTUgKzUyNCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogICAgIHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nID0gMDsKIH0KIAot
c3RhdGljIGJvb2wgd2Via2l0V2ViVmlld1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1
bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgRHJhd2luZ0FyZWFQcm94eUltcGwq
IGRyYXdpbmdBcmVhLCBjYWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiBjbGlwUmVjdCkKLXsKLSNp
ZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBBU1NFUlQoZHJhd2luZ0Fy
ZWEpOwotCi0gICAgaWYgKCFkcmF3aW5nQXJlYS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXdCYXNlKS0+cHJpdjsKLSAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
U3VyZmFjZS5nZXQoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIGlmICghc3VyZmFjZSB8
fCAhcHJpdi0+cGFnZVByb3h5LT5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAgICBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IgPSBwcml2LT5wYWdlUHJveHktPmJhY2tncm91bmRDb2xvcigp
OwotICAgICAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkgewotICAgICAgICAgICAgY2Fpcm9fcmVj
dGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xp
cFJlY3QtPmhlaWdodCk7Ci0gICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJP
X09QRVJBVE9SX0NMRUFSKTsKLSAgICAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBzZXRTb3Vy
Y2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0
b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIGNsaXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVj
dC0+aGVpZ2h0KTsKLSAgICAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1v
ZGlmaWVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAotICAg
ICAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBj
b250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtf
ZGlydHkoc3VyZmFjZSk7Ci0gICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngs
IGNsaXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAg
ICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwotICAgICAgICBj
YWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX09WRVIpOwotICAgICAgICBjYWly
b19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLQotICAgIHJldHVy
biB0cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0od2ViVmlld0Jhc2UpOwotICAgIFVOVVNF
RF9QQVJBTShjcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNsaXBSZWN0KTsKLSAgICByZXR1cm4gZmFs
c2U7Ci0jZW5kaWYKLX0KLQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhH
dGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKQEAgLTY0NSw3ICs1
MzUsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCog
d2lkZ2V0LCBjYWlyb190KiBjcikKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5n
bGUoY3IsICZjbGlwUmVjdCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGlmICghd2Vi
a2l0V2ViVmlld1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKHdlYlZpZXdCYXNl
LCBkcmF3aW5nQXJlYSwgY3IsICZjbGlwUmVjdCkpIHsKKyAgICBpZiAod2ViVmlld0Jhc2UtPnBy
aXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlICYmIGRyYXdpbmdBcmVhLT5pc0luQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlLT5wYWludChjciwgY2xpcFJlY3QpOworICAgIGVsc2UgewogICAgICAg
ICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNpbXBseSB1bnVz
ZWQuCiAgICAgICAgIGRyYXdpbmdBcmVhLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJl
Z2lvbik7CiAgICAgfQpAQCAtMTI4Niw2ICsxMTc4LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBSZWY8
QVAKICAgICBwcml2LT5wYWdlUHJveHkgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKCpwcml2LT5w
YWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICBwcml2LT5wYWdlUHJveHkt
PmluaXRpYWxpemVXZWJQYWdlKCk7CiAKKyAgICBwcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZSA9IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKnByaXYtPnBhZ2VQcm94eSk7CisK
ICAgICBwcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRQYWdlKHByaXYtPnBhZ2VQcm94eS5nZXQo
KSk7CiAKICNpZiBIQVZFKEdUS19TQ0FMRV9GQUNUT1IpCkBAIC0xNTY2LDI5ICsxNDYwLDIwIEBA
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZXNldENsaWNrQ291bnRlcihXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2UpCiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKLSNpZiBVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2Via2l0V2ViVmlld0Jhc2UsIGxheWVyVHJlZUNv
bnRleHQuY29udGV4dElEKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdC
YXNlKTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKGxheWVyVHJlZUNvbnRleHQpOwogfQogCiB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXll
clRyZWVDb250ZXh0KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJr
aXRXZWJWaWV3QmFzZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYgKHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAgICAgd2Via2l0
V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUobGF5ZXJU
cmVlQ29udGV4dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFeGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewot
I2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdC
YXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgMCk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFzZSk7Ci0jZW5kaWYKKyAg
ICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQor
ICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUt
PnVwZGF0ZShMYXllclRyZWVDb250ZXh0KCkpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
RGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKQEAgLTE2MTYsOSArMTUwMSw5IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5j
aFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAKIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3QmFzZSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB3
ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2Via2l0V2Vi
Vmlld0Jhc2UsIDApOwotI2VsaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisgICAgaWYgKHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZSkKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlLT51cGRhdGUoTGF5ZXJUcmVlQ29udGV4dCgpKTsKKyNpZiBQTEFURk9STShYMTEpICYmIFVT
RShURVhUVVJFX01BUFBFUikgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQog
ICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgIT0gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpYMTEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcApp
bmRleCBkMmI2MjViLi4xODA3ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNDEsNiArNDEsMTEg
QEAKICNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMTYsNiArMjIxLDEzIEBA
IHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yQW5kRGlzcGF0Y2hEaWRV
cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpCiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByb2Nlc3Mo
KS5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OkxhdW5jaGluZykKICAgICAgICAg
cmV0dXJuOwogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICAvLyBOZXZlciBibG9jayB0aGUg
VUkgcHJvY2VzcyBpbiBXYXlsYW5kIHdoZW4gd2FpdGluZyBmb3IgRGlkVXBkYXRlQmFja2luZ1N0
b3JlU3RhdGUgYWZ0ZXIgYSByZXNpemUsCisgICAgLy8gYmVjYXVzZSB0aGUgbmVzdGVkIGNvbXBv
c2l0b3IgbmVlZHMgdG8gaGFuZGxlIHRoZSB3ZWIgcHJvY2VzcyByZXF1ZXN0cyB0aGF0IGhhcHBl
bnMgd2hpbGUgcmVzaXppbmcuCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQgJiYgV2F5bGFuZENv
bXBvc2l0b3I6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQorICAgICAgICByZXR1cm47CisjZW5k
aWYKKwogICAgIC8vIEZJWE1FOiB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSB3aWxsIGFs
d2F5cyByZXR1cm4gdGhlIG9sZGVzdCBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBtZXNzYWdl
IHRoYXQKICAgICAvLyBoYXNuJ3QgeWV0IGJlZW4gcHJvY2Vzc2VkLiBCdXQgaXQgbWlnaHQgYmUg
YmV0dGVyIHRvIHNraXAgYWhlYWQgdG8gc29tZSBvdGhlciBEaWRVcGRhdGVCYWNraW5nU3RvcmVT
dGF0ZQogICAgIC8vIG1lc3NhZ2UsIGlmIG11bHRpcGxlIERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0
YXRlIG1lc3NhZ2VzIGFyZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZC4gRm9yIGluc3RhbmNlLCB3
ZSBjb3VsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggZTU2Y2YxZS4uZmFlNGQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC0xMDAsNiArMTAwLDExIEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAi
V2F5bGFuZENvbXBvc2l0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5o
PgorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgogI2VuZGlmCkBAIC02MzksNiArNjQ0LDExIEBAIFdlYlByb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgICAgICBwYXJhbWV0ZXJz
Lm1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRsZSA9IE1lbW9yeVByZXNzdXJlTW9uaXRvcjo6c2lu
Z2xldG9uKCkuY3JlYXRlSGFuZGxlKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0
Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5TmFtZSA9IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNw
bGF5TmFtZSgpOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKIAogICAgIC8vIEFk
ZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWNhZmVjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAK
QEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZS5oIgorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
YWlyb1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisK
KyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5oIgorI2VuZGlmCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKKyNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oIgorI2VuZGlmCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlx
dWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6
Y3JlYXRlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sKKyNpZiBQTEFURk9STShXQVlMQU5EKQor
ICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kOjpjcmVhdGUod2ViUGFnZSk7CisjZW5kaWYKKyNpZiBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICBy
ZXR1cm4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZSh3ZWJQYWdlKTsKKyNlbmRp
ZgorICAgIHJldHVybiBudWxscHRyOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogbV93ZWJQ
YWdlKHdlYlBhZ2UpCit7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjp+QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUoKQoreworfQorCitib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpw
YWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaWYgKG1f
d2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IgPSBtX3dlYlBhZ2UuYmFja2dyb3VuZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmhhc0FscGhhKCkpIHsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9S
X0NMRUFSKTsKKyAgICAgICAgY2Fpcm9fZmlsbChjcik7CisgICAgfQorCisgICAgaWYgKGNvbG9y
LmFscGhhKCkgPiAwKSB7CisgICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9y
KTsKKyAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0Up
OworICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgp
LCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX2Zp
bGwoY3IpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvV2F5bGFuZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUuaApzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgKcmVu
YW1lIHRvIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmUuaAppbmRleCA2OWYyMmIxLi5kNzZiYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDQyICsyMywzNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmICBXYXlsYW5k
U3VyZmFjZV9oCi0jZGVmaW5lICBXYXlsYW5kU3VyZmFjZV9oCisjcHJhZ21hIG9uY2UKIAotI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLSNpbmNs
dWRlIDx3YXlsYW5kLWNsaWVudC5oPgotCi0jaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KLSNpbmNs
dWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KK3R5cGVkZWYgc3RydWN0IF9jYWlybyBjYWlyb190Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRSZWN0OworfQogCi1jbGFzcyBHTENvbnRl
eHRFR0w7Ci1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBXYXlsYW5kU3VyZmFjZSB7Ci1wdWJsaWM6
Ci0gICAgV2F5bGFuZFN1cmZhY2Uoc3RydWN0IHdsX3N1cmZhY2UqLCBFR0xOYXRpdmVXaW5kb3dU
eXBlKTsKLSAgICB+V2F5bGFuZFN1cmZhY2UoKTsKK25hbWVzcGFjZSBXZWJLaXQgewogCi0gICAg
c3RydWN0IHdsX3N1cmZhY2UqIHN1cmZhY2UoKSB7IHJldHVybiBtX3dsU3VyZmFjZTsgfQotICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRp
dmVXaW5kb3c7IH0KK2NsYXNzIExheWVyVHJlZUNvbnRleHQ7CitjbGFzcyBXZWJQYWdlUHJveHk7
CiAKLSAgICB2b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJik7CitjbGFzcyBBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoV2ViUGFnZVByb3h5
Jik7CisgICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoKTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUdMQ29udGV4dCgpOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogCi0gICAgdm9pZCBy
ZXF1ZXN0RnJhbWUoKTsKK3Byb3RlY3RlZDoKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZShX
ZWJQYWdlUHJveHkmKTsKIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogbV93bFN1
cmZhY2U7Ci0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBtX25hdGl2ZVdpbmRvdzsKKyAgICBXZWJQ
YWdlUHJveHkmIG1fd2ViUGFnZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCi0KLSNlbmRpZiAvLyBXYXlsYW5kU3VyZmFjZV9oCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjZiYTYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1
ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRy
Q2Fpcm8uaD4KKworI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
KyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9PcGVuR0xTaGltcy5oPgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVf
cHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZD4gQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIGlmICghV2F5
bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZD4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCh3ZWJQYWdlKSk7
Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlKHdlYlBhZ2UpCit7CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigp
LnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQ6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoKQoreworICAgIFdheWxh
bmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOwor
fQorCitib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQoY2Fpcm9fdCog
Y3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIEdMdWludCB0ZXh0dXJlOworICAg
IEludFNpemUgdGV4dHVyZVNpemU7CisgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZ2V0VGV4dHVyZShtX3dlYlBhZ2UsIHRleHR1cmUsIHRleHR1cmVTaXplKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CisKKyNpZiAwCisgICAgLy8gRklYTUU6
IFVzZSB0aGlzIHdoZW4gR1RLKyA+PSAzLjE2LiBHVEsrIGV4cGVjdHMgdGhlIFkgYXhpcyB0byBi
ZSBpbnZlcnRlZCB0byB3aGF0IHdlIGdldCwgc28gd2UgbmVlZCB0byBmbGlwIGl0IHNvbWVob3cu
CisgICAgZ2RrX2NhaXJvX2RyYXdfZnJvbV9nbChjciwgZ3RrX3dpZGdldF9nZXRfd2luZG93KG1f
d2ViUGFnZS52aWV3V2lkZ2V0KCkpLCB0ZXh0dXJlLCBHTF9URVhUVVJFLCAxLCBjbGlwUmVjdC54
KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwor
I2Vsc2UKKyAgICBJbnRTaXplIHNpemUgPSB0ZXh0dXJlU2l6ZTsKKyAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHNpemUuc2Nh
bGUoZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgaWYgKCFtX3N1cmZhY2UgfHwgY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdldCgpKSAhPSBzaXplLndpZHRoKCkgfHwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fc3VyZmFjZS5nZXQoKSkgIT0gc2l6ZS5o
ZWlnaHQoKSkKKyAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgR0x1aW50IGZiOworICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYik7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIGZiKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAg
ICBnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICBnbFBpeGVsU3RvcmVp
KEdMX1BBQ0tfUk9XX0xFTkdUSCwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3Vy
ZmFjZS5nZXQoKSkgLyA0KTsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgZ2xSZWFkUGl4ZWxz
KDAsIDAsIHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFj
ZS5nZXQoKSkpOworI2Vsc2UKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVNpemUud2lk
dGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCksIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84Xzhf
OF84X1JFViwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX3N1cmZhY2UuZ2V0KCkpKTsK
KyNlbmRpZgorICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCAwKTsKKworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbERlbGV0ZUZyYW1l
YnVmZmVycygxLCAmZmIpOworCisgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVkIGJ5
IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAorICAgIC8vIGFzIGRp
cnR5IHRvIGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNv
b24gYXMgcG9zc2libGUuCisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc3VyZmFjZS5n
ZXQoKSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0Lnko
KSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShjciwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRf
b3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX09WRVIpOworICAgIGNhaXJvX2ZpbGwoY3IpOwor
I2VuZGlmCisKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxh
bmRFdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuaApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJj
ZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlV2F5bGFuZC5oCmluZGV4IGJlZDE2NjIuLjRjNDIyMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
SWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMzIgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBXYXlsYW5kRXZlbnRTb3VyY2VfaAotI2RlZmluZSBXYXlsYW5kRXZl
bnRTb3VyY2VfaAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZS5oIgogCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAotI2luY2x1ZGUgPGdsaWIuaD4KLSNp
bmNsdWRlIDx3YXlsYW5kLXNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8u
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKIAotY2xhc3MgV2F5bGFuZEV2ZW50U291cmNlIHsKK2NsYXNzIEFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZCBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEdT
b3VyY2UqIGNyZWF0ZURpc3BsYXlFdmVudFNvdXJjZShzdHJ1Y3Qgd2xfZGlzcGxheSopOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPiBj
cmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgfkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZCgpOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZChXZWJQ
YWdlUHJveHkmKTsKKworICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFj
ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKLQotI2VuZGlmIC8vIFdheWxhbmRFdmVudFNv
dXJjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjkzMjgzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcApAQCAtMCwwICsxLDE4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oIgorCisjaWYg
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisKKyNpbmNsdWRlICJEcmF3aW5nQXJl
YVByb3h5SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5o
PgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KKyNpbmNsdWRlIDxjYWlyby14
bGliLmg+CisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBPcHRpb25hbDxpbnQ+IHNfZGFtYWdl
RXZlbnRCYXNlOworCitjbGFzcyBYRGFtYWdlTm90aWZpZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFhEYW1hZ2VOb3RpZmllcik7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PFhEYW1hZ2VOb3RpZmllcj47CitwdWJsaWM6CisgICAgc3RhdGljIFhEYW1hZ2VOb3RpZmllciYg
c2luZ2xldG9uKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxYRGFtYWdl
Tm90aWZpZXI+IG5vdGlmaWVyOworICAgICAgICByZXR1cm4gbm90aWZpZXI7CisgICAgfQorCisg
ICAgdm9pZCBhZGQoRGFtYWdlIGRhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgbm90aWZ5
RnVuY3Rpb24pCisgICAgeworICAgICAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgp
KQorICAgICAgICAgICAgZ2RrX3dpbmRvd19hZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOworICAgICAg
ICBtX25vdGlmeUZ1bmN0aW9ucy5hZGQoZGFtYWdlLCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7
CisgICAgfQorCisgICAgdm9pZCByZW1vdmUoRGFtYWdlIGRhbWFnZSkKKyAgICB7CisgICAgICAg
IG1fbm90aWZ5RnVuY3Rpb25zLnJlbW92ZShkYW1hZ2UpOworICAgICAgICBpZiAobV9ub3RpZnlG
dW5jdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVy
KG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VF
dmVudCksIHRoaXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBYRGFtYWdlTm90aWZpZXIoKSA9
IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgR2RrRmlsdGVyUmV0dXJuIGZpbHRlclhEYW1hZ2VFdmVu
dChHZGtYRXZlbnQqIGV2ZW50LCBHZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciogbm90aWZpZXIp
CisgICAgeworICAgICAgICBhdXRvKiB4RXZlbnQgPSBzdGF0aWNfY2FzdDxYRXZlbnQqPihldmVu
dCk7CisgICAgICAgIGlmICh4RXZlbnQtPnR5cGUgIT0gc19kYW1hZ2VFdmVudEJhc2UudmFsdWUo
KSArIFhEYW1hZ2VOb3RpZnkpCisgICAgICAgICAgICByZXR1cm4gR0RLX0ZJTFRFUl9DT05USU5V
RTsKKworICAgICAgICBhdXRvKiBkYW1hZ2VFdmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8WERhbWFn
ZU5vdGlmeUV2ZW50Kj4oeEV2ZW50KTsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5ub3RpZnkoZGFt
YWdlRXZlbnQtPmRhbWFnZSkpIHsKKyAgICAgICAgICAgIFhEYW1hZ2VTdWJ0cmFjdCh4RXZlbnQt
PnhhbnkuZGlzcGxheSwgZGFtYWdlRXZlbnQtPmRhbWFnZSwgTm9uZSwgTm9uZSk7CisgICAgICAg
ICAgICByZXR1cm4gR0RLX0ZJTFRFUl9SRU1PVkU7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gR0RLX0ZJTFRFUl9DT05USU5VRTsKKyAgICB9CisKKyAgICBib29sIG5vdGlmeShEYW1hZ2Ug
ZGFtYWdlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8mIG5vdGlmeUZ1bmN0
aW9uID0gbV9ub3RpZnlGdW5jdGlvbnMuZ2V0KGRhbWFnZSkpIHsKKyAgICAgICAgICAgIG5vdGlm
eUZ1bmN0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPj4gbV9ub3RpZnlGdW5jdGlvbnM7Cit9OworCitzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE+IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpjcmVh
dGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIGF1dG8mIGRpc3BsYXkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsK
KyAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRlKCkgfHwgIWRpc3BsYXkuc3VwcG9y
dHNYRGFtYWdlKHNfZGFtYWdlRXZlbnRCYXNlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMT4obmV3
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTE6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKFdlYlBhZ2VQcm94eSYg
d2ViUGFnZSkKKyAgICA6IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKHdlYlBhZ2UpCit7Cit9CisK
K0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEo
KQoreworICAgIGlmIChtX2RhbWFnZSkgeworICAgICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmds
ZXRvbigpLnJlbW92ZShtX2RhbWFnZS5nZXQoKSk7CisgICAgICAgIG1fZGFtYWdlLnJlc2V0KCk7
CisgICAgfQorfQorCit2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp1cGRhdGUoY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKK3sKKyAgICBQaXhtYXAgcGl4
bWFwID0gbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7CisgICAgaWYgKG1fc3VyZmFjZSAmJiBj
YWlyb194bGliX3N1cmZhY2VfZ2V0X2RyYXdhYmxlKG1fc3VyZmFjZS5nZXQoKSkgPT0gcGl4bWFw
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdXJmYWNlKSB7CisgICAgICAgIGlmICht
X2RhbWFnZSkgeworICAgICAgICAgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5yZW1v
dmUobV9kYW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3N1cmZhY2UgPSBudWxscHRyOworICAgIH0KKworICAgIGlmICghcGl4
bWFwKQorICAgICAgICByZXR1cm47CisKKyAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2lu
Z0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KG1fd2ViUGFnZS5kcmF3
aW5nQXJlYSgpKTsKKyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAg
ICBJbnRTaXplIHNpemUgPSBkcmF3aW5nQXJlYS0+c2l6ZSgpOworICAgIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yID0gbV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgc2l6ZS5zY2Fs
ZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCk7CisgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IEdES19ESVNQTEFZX1hESVNQTEFZ
KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdk
a19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAg
aWYgKCF2aXN1YWwpCisgICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1
YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihj
YWlyb194bGliX3N1cmZhY2VfY3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgR0RLX1ZJU1VBTF9YVklT
VUFMKHZpc3VhbCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3Vy
ZmFjZVNldERldmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwg
cGl4bWFwLCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOworICAgIFhEYW1hZ2VOb3RpZmllcjo6c2lu
Z2xldG9uKCkuYWRkKG1fZGFtYWdlLmdldCgpLCBbdGhpc10geworICAgICAgICBndGtfd2lkZ2V0
X3F1ZXVlX2RyYXcobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSk7CisgICAgfSk7Cit9CisKK2Jvb2wg
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoIW1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6
OnBhaW50KGNyLCBjbGlwUmVjdCk7CisKKyAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZp
ZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0CisgICAgLy8g
YXMgZGlydHkgdG8gZW5zdXJlIHdlIGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMg
YXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJm
YWNlLmdldCgpKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJl
Y3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9f
c2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fZmlsbChj
cik7CisKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9B
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ5YTdjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCIKKworI2lmIFVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTE+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICB+QWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTEoKTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMShXZWJQYWdlUHJveHkmKTsKKworICAgIHZvaWQgdXBkYXRlKGNvbnN0IExheWVy
VHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBtX3N1cmZhY2U7CisgICAgV2ViQ29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMWU5
Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxh
bmRDb21wb3NpdG9yLmNwcApAQCAtMCwwICsxLDUxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
YXlsYW5kQ29tcG9zaXRvci5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUg
IldlYktpdDJXYXlsYW5kU2VydmVyUHJvdG9jb2wuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+Cisj
aW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VVSUQuaD4KKyNpbmNsdWRlIDx3YXls
YW5kLXNlcnZlci1wcm90b2NvbC5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUg
PEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxXZWJDb3JlL09wZW5HTFNoaW1zLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgIWRlZmluZWQoUEZORUdMQklORFdBWUxB
TkRESVNQTEFZV0wpCit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xCSU5EV0FZTEFORERJU1BM
QVlXTCkgKEVHTERpc3BsYXksIHN0cnVjdCB3bF9kaXNwbGF5Kik7CisjZW5kaWYKKworI2lmICFk
ZWZpbmVkKFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpCit0eXBlZGVmIEVHTEJvb2xlYW4g
KCpQRk5FR0xVTkJJTkRXQVlMQU5ERElTUExBWVdMKSAoRUdMRGlzcGxheSwgc3RydWN0IHdsX2Rp
c3BsYXkqKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZORUdMUVVFUllXQVlMQU5EQlVGRkVS
V0wpCit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCkgKEVH
TERpc3BsYXksIHN0cnVjdCB3bF9yZXNvdXJjZSosIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCog
dmFsdWUpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0Mp
Cit0eXBlZGVmIEVHTEltYWdlS0hSICgqUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DKSAoRUdMRGlz
cGxheSwgRUdMQ29udGV4dCwgRUdMZW51bSB0YXJnZXQsIEVHTENsaWVudEJ1ZmZlciwgY29uc3Qg
RUdMaW50KiBhdHRyaWJMaXN0KTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZORUdMREVTVFJP
WUlNQUdFS0hSUFJPQykKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTERFU1RST1lJTUFHRUtI
UlBST0MpIChFR0xEaXNwbGF5LCBFR0xJbWFnZUtIUik7CisjZW5kaWYKKworI2lmICFkZWZpbmVk
KFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKQordHlwZWRlZiB2b2lkICgqUEZO
R0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVnbElt
YWdlT0VTKTsKKyNlbmRpZgorCitzdGF0aWMgUEZORUdMQklORFdBWUxBTkRESVNQTEFZV0wgZWds
QmluZFdheWxhbmREaXNwbGF5Oworc3RhdGljIFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wg
ZWdsVW5iaW5kV2F5bGFuZERpc3BsYXk7CitzdGF0aWMgUEZORUdMUVVFUllXQVlMQU5EQlVGRkVS
V0wgZWdsUXVlcnlXYXlsYW5kQnVmZmVyOworc3RhdGljIFBGTkVHTENSRUFURUlNQUdFS0hSUFJP
QyBlZ2xDcmVhdGVJbWFnZTsKK3N0YXRpYyBQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DIGVnbERl
c3Ryb3lJbWFnZTsKK3N0YXRpYyBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQyBl
Z2xJbWFnZVRhcmdldFRleHR1cmUyRDsKKworV2F5bGFuZENvbXBvc2l0b3ImIFdheWxhbmRDb21w
b3NpdG9yOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXYXlsYW5k
Q29tcG9zaXRvcj4gd2F5bGFuZENvbXBvc2l0b3I7CisgICAgcmV0dXJuIHdheWxhbmRDb21wb3Np
dG9yOworfQorCitXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBXYXlsYW5kQ29tcG9zaXRvcjo6
QnVmZmVyOjpnZXRPckNyZWF0ZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQoreworICAg
IGlmIChzdHJ1Y3Qgd2xfbGlzdGVuZXIqIGxpc3RlbmVyID0gd2xfcmVzb3VyY2VfZ2V0X2Rlc3Ry
b3lfbGlzdGVuZXIocmVzb3VyY2UsIGRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKSkgeworICAgICAg
ICBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKiBidWZmZXI7CisgICAgICAgIHJldHVybiB3bF9j
b250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZlciwgbV9kZXN0cm95TGlzdGVuZXIpOworICAgIH0K
KworICAgIHJldHVybiBuZXcgV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcihyZXNvdXJjZSk7Cit9
CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OkJ1ZmZlcihzdHJ1Y3Qgd2xfcmVzb3VyY2Uq
IHJlc291cmNlKQorICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKKyAgICAsIG1fd2Vha1B0ckZh
Y3RvcnkodGhpcykKK3sKKyAgICB3bF9saXN0X2luaXQoJm1fZGVzdHJveUxpc3RlbmVyLmxpbmsp
OworICAgIG1fZGVzdHJveUxpc3RlbmVyLm5vdGlmeSA9IGRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNr
OworICAgIHdsX3Jlc291cmNlX2FkZF9kZXN0cm95X2xpc3RlbmVyKG1fcmVzb3VyY2UsICZtX2Rl
c3Ryb3lMaXN0ZW5lcik7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6On5CdWZmZXIo
KQoreworICAgIHdsX2xpc3RfcmVtb3ZlKCZtX2Rlc3Ryb3lMaXN0ZW5lci5saW5rKTsKK30KKwor
dm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpkZXN0cm95TGlzdGVuZXJDYWxsYmFjayhz
dHJ1Y3Qgd2xfbGlzdGVuZXIqIGxpc3RlbmVyLCB2b2lkKikKK3sKKyAgICBXYXlsYW5kQ29tcG9z
aXRvcjo6QnVmZmVyKiBidWZmZXI7CisgICAgYnVmZmVyID0gd2xfY29udGFpbmVyX29mKGxpc3Rl
bmVyLCBidWZmZXIsIG1fZGVzdHJveUxpc3RlbmVyKTsKKyAgICBkZWxldGUgYnVmZmVyOworfQor
Cit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVzZSgpCit7CisgICAgbV9idXN5Q291
bnQrKzsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjp1bnVzZSgpCit7Cisg
ICAgbV9idXN5Q291bnQtLTsKKyAgICBpZiAoIW1fYnVzeUNvdW50KQorICAgICAgICB3bF9yZXNv
dXJjZV9xdWV1ZV9ldmVudChtX3Jlc291cmNlLCBXTF9CVUZGRVJfUkVMRUFTRSk7Cit9CisKK0VH
TEltYWdlS0hSIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmNyZWF0ZUltYWdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMSW1hZ2VLSFIqPihlZ2xDcmVhdGVJbWFnZShQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIEVHTF9OT19DT05U
RVhULCBFR0xfV0FZTEFORF9CVUZGRVJfV0wsIG1fcmVzb3VyY2UsIG51bGxwdHIpKTsKK30KKwor
SW50U2l6ZSBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBF
R0xEaXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5l
Z2xEaXNwbGF5KCk7CisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZWdsUXVlcnlXYXlsYW5k
QnVmZmVyKGVnbERpc3BsYXksIG1fcmVzb3VyY2UsIEVHTF9XSURUSCwgJndpZHRoKTsKKyAgICBl
Z2xRdWVyeVdheWxhbmRCdWZmZXIoZWdsRGlzcGxheSwgbV9yZXNvdXJjZSwgRUdMX0hFSUdIVCwg
JmhlaWdodCk7CisKKyAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07Cit9CisKK1dheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlOjpTdXJmYWNlKCkKKyAgICA6IG1faW1hZ2UoRUdMX05PX0lNQUdF
X0tIUikKK3sKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBf
VE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cit9CisKK1dheWxhbmRDb21w
b3NpdG9yOjpTdXJmYWNlOjp+U3VyZmFjZSgpCit7CisgICAgLy8gRGVzdHJveSBwZW5kaW5nIGZy
YW1lIGNhbGxiYWNrcy4KKyAgICBhdXRvIGxpc3QgPSBXVEZNb3ZlKG1fZnJhbWVDYWxsYmFja0xp
c3QpOworICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBsaXN0KQorICAgICAgICB3bF9yZXNvdXJj
ZV9kZXN0cm95KHJlc291cmNlKTsKKworICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9idWZm
ZXItPnVudXNlKCk7CisKKyAgICBpZiAobV9pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAg
ICAgICBlZ2xEZXN0cm95SW1hZ2UoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWds
RGlzcGxheSgpLCBtX2ltYWdlKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVy
ZSk7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6Om1ha2VQZW5kaW5nQnVm
ZmVyQ3VycmVudCgpCit7CisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlciA9PSBtX2J1ZmZlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlci0+dW51
c2UoKTsKKworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIpCisgICAgICAgIG1fcGVuZGluZ0J1ZmZl
ci0+dXNlKCk7CisKKyAgICBtX2J1ZmZlciA9IG1fcGVuZGluZ0J1ZmZlcjsKK30KKwordm9pZCBX
YXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6YXR0YWNoQnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJj
ZSogYnVmZmVyKQoreworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIpCisgICAgICAgIG1fcGVuZGlu
Z0J1ZmZlciA9IG51bGxwdHI7CisKKyAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgIGF1dG8qIGNv
bXBvc2l0b3JCdWZmZXIgPSBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpnZXRPckNyZWF0ZShi
dWZmZXIpOworICAgICAgICBtX3BlbmRpbmdCdWZmZXIgPSBjb21wb3NpdG9yQnVmZmVyLT5jcmVh
dGVXZWFrUHRyKCk7CisgICAgfQorfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNl
OjpyZXF1ZXN0RnJhbWUoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICB3bF9y
ZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsIG51bGxwdHIsIHRoaXMsIFtdKHN0
cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0
YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3Vz
ZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoc2l6ZV90IGl0ZW0gPSBzdXJmYWNlLT5t
X2ZyYW1lQ2FsbGJhY2tMaXN0LmZpbmQocmVzb3VyY2UpICE9IG5vdEZvdW5kKQorICAgICAgICAg
ICAgc3VyZmFjZS0+bV9mcmFtZUNhbGxiYWNrTGlzdC5yZW1vdmUoaXRlbSk7CisgICAgfSk7Cisg
ICAgbV9mcmFtZUNhbGxiYWNrTGlzdC5hcHBlbmQocmVzb3VyY2UpOworfQorCitib29sIFdheWxh
bmRDb21wb3NpdG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKHVuc2lnbmVk
JiB0ZXh0dXJlLCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSkKK3sKKyAgICBpZiAobV9pbWFnZSA9PSBF
R0xfTk9fSU1BR0VfS0hSKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgZWdsSW1hZ2VUYXJnZXRUZXh0dXJl
MkQoR0xfVEVYVFVSRV8yRCwgbV9pbWFnZSk7CisKKyAgICB0ZXh0dXJlID0gbV90ZXh0dXJlOwor
ICAgIHRleHR1cmVTaXplID0gbV9idWZmZXItPnNpemUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6Y29tbWl0KCkKK3sKKyAgICBFR0xE
aXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xE
aXNwbGF5KCk7CisgICAgaWYgKG1faW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tIUikKKyAgICAgICAg
ZWdsRGVzdHJveUltYWdlKGVnbERpc3BsYXksIG1faW1hZ2UpOworICAgIG1faW1hZ2UgPSBtX3Bl
bmRpbmdCdWZmZXItPmNyZWF0ZUltYWdlKCk7CisgICAgaWYgKG1faW1hZ2UgPT0gRUdMX05PX0lN
QUdFX0tIUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWFrZVBlbmRpbmdCdWZmZXJD
dXJyZW50KCk7CisgICAgaWYgKG1fd2ViUGFnZSkKKyAgICAgICAgbV93ZWJQYWdlLT5zZXRWaWV3
TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV93ZWJQYWdlLT52aWV3U2l6
ZSgpKSk7CisKKyAgICBhdXRvIGxpc3QgPSBXVEZNb3ZlKG1fZnJhbWVDYWxsYmFja0xpc3QpOwor
ICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBsaXN0KSB7CisgICAgICAgIHdsX2NhbGxiYWNrX3Nl
bmRfZG9uZShyZXNvdXJjZSwgMCk7CisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3Vy
Y2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0
IHdsX3N1cmZhY2VfaW50ZXJmYWNlIHN1cmZhY2VJbnRlcmZhY2UgPSB7CisgICAgLy8gZGVzdHJv
eUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSog
cmVzb3VyY2UpIHsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNvdXJjZSk7CisgICAg
fSwKKyAgICAvLyBhdHRhY2hDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVu
dCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgc3RydWN0IHdsX3Jlc291cmNlKiBidWZm
ZXIsIGludDMyX3Qgc3gsIGludDMyX3Qgc3kpIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0
YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3Vz
ZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgRUdMaW50IGZvcm1hdDsKKyAgICAgICAgaWYgKCFlZ2xRdWVyeVdh
eWxhbmRCdWZmZXIoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgp
LCBidWZmZXIsIEVHTF9URVhUVVJFX0ZPUk1BVCwgJmZvcm1hdCkKKyAgICAgICAgICAgIHx8IChm
b3JtYXQgIT0gRUdMX1RFWFRVUkVfUkdCICYmIGZvcm1hdCAhPSBFR0xfVEVYVFVSRV9SR0JBKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzdXJmYWNlLT5hdHRhY2hCdWZmZXIoYnVm
ZmVyKTsKKyAgICB9LAorICAgIC8vIGRhbWFnZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2Ns
aWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QsIGludDMyX3QsIGludDMyX3QsIGlu
dDMyX3QpIHsKKyAgICB9LAorICAgIC8vIGZyYW1lQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xf
Y2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UsIHVpbnQzMl90IGlk
KSB7CisgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRv
cjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAg
ICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdHJ1
Y3Qgd2xfcmVzb3VyY2UqIGNhbGxiYWNrUmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xp
ZW50LCAmd2xfY2FsbGJhY2tfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAgICAgICBzdXJmYWNl
LT5yZXF1ZXN0RnJhbWUoY2FsbGJhY2tSZXNvdXJjZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHdsX2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgIH0sCisgICAgLy8gc2V0
T3BhcXVlUmVnaW9uQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHds
X3Jlc291cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKikgeworICAgIH0sCisgICAgLy8gc2V0SW5w
dXRSZWdpb25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVz
b3VyY2UqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqKSB7CisgICAgfSwKKyAgICAvLyBjb21taXRDYWxs
YmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNl
KiByZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFu
ZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNl
KSk7CisgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAoc3VyZmFjZS0+Y29tbWl0KCkpCisgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoX2Ns
aWVudHMod2xfY2xpZW50X2dldF9kaXNwbGF5KGNsaWVudCkpOworICAgIH0sCisgICAgLy8gc2V0
QnVmZmVyVHJhbnNmb3JtQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0
IHdsX3Jlc291cmNlKiwgaW50MzJfdCkgeworICAgIH0sCisgICAgLy8gc2V0QnVmZmVyU2NhbGVD
YWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqLCBp
bnQzMl90KSB7CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jb21wb3NpdG9y
X2ludGVyZmFjZSBjb21wb3NpdG9ySW50ZXJmYWNlID0geworICAgIC8vIGNyZWF0ZVN1cmZhY2VD
YWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291
cmNlKiByZXNvdXJjZSwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgaWYgKHN0cnVjdCB3bF9yZXNv
dXJjZSogc3VyZmFjZVJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX3N1
cmZhY2VfaW50ZXJmYWNlLCAxLCBpZCkpIHsKKyAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9p
bXBsZW1lbnRhdGlvbihzdXJmYWNlUmVzb3VyY2UsICZzdXJmYWNlSW50ZXJmYWNlLCBuZXcgV2F5
bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UoKSwKKyAgICAgICAgICAgICAgICBbXShzdHJ1Y3Qgd2xf
cmVzb3VyY2UqIHJlc291cmNlKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2Ug
PSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSo+KHdsX3Jlc291cmNlX2dl
dF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN1cmZh
Y2U7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgd2xf
Y2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgfSwKKyAgICAvLyBjcmVhdGVSZWdp
b25DYWxsYmFjaworICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2Uq
LCB1aW50MzJfdCkKKyAgICB7CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF93
ZWJraXRndGtfaW50ZXJmYWNlIHdlYmtpdGd0a0ludGVyZmFjZSA9IHsKKyAgICAvLyBiaW5kU3Vy
ZmFjZVRvUGFnZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9y
ZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFjZVJlc291cmNlLCB1
aW50MzJfdCBwYWdlSUQpIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdh
eWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJm
YWNlUmVzb3VyY2UpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGF1dG8qIGNvbXBvc2l0b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9z
aXRvcio+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgY29t
cG9zaXRvci0+YmluZFN1cmZhY2VUb1dlYlBhZ2Uoc3VyZmFjZSwgcGFnZUlEKTsKKyAgICB9Cit9
OworCitib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKK3sKKyAgICBpZiAo
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsQ2hlY2tWZXJzaW9uKDEsIDUpKSB7
CisgICAgICAgIGVnbENyZWF0ZUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJ
TUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZSIpKTsKKyAgICAg
ICAgZWdsRGVzdHJveUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VL
SFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlIikpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIEVHTF9FWFRFTlNJT05T
KTsKKyAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25zLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikp
IHsKKyAgICAgICAgICAgIGVnbENyZWF0ZUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xD
UkVBVEVJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIp
KTsKKyAgICAgICAgICAgIGVnbERlc3Ryb3lJbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdM
REVTVFJPWUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbERlc3Ryb3lJbWFnZUtI
UiIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWVnbENyZWF0ZUltYWdlIHx8ICFlZ2xE
ZXN0cm95SW1hZ2UpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciBy
ZXF1aXJlcyBlZ2xDcmVhdGVJbWFnZSBhbmQgZWdsRGVzdHJveUltYWdlLiIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKKyAgICBpZiAoIWVn
bEltYWdlVGFyZ2V0VGV4dHVyZTJEKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5bGFuZENv
bXBvc2l0b3IgcmVxdWlyZXMgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUuIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFBGTkVHTFFVRVJZV0FZTEFOREJVRkZFUldMPihlZ2xHZXRQcm9jQWRkcmVzcygi
ZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wiKSk7CisgICAgaWYgKCFlZ2xRdWVyeVdheWxhbmRCdWZm
ZXIpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBl
Z2xRdWVyeVdheWxhbmRCdWZmZXIuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBlZ2xCaW5kV2F5bGFuZERpc3BsYXkgPSByZWludGVycHJldF9jYXN0PFBGTkVHTEJJTkRX
QVlMQU5ERElTUExBWVdMPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsQmluZFdheWxhbmREaXNwbGF5
V0wiKSk7CisgICAgZWdsVW5iaW5kV2F5bGFuZERpc3BsYXkgPSByZWludGVycHJldF9jYXN0PFBG
TkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0w+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xVbmJpbmRX
YXlsYW5kRGlzcGxheVdMIikpOworICAgIGlmICghZWdsQmluZFdheWxhbmREaXNwbGF5IHx8ICFl
Z2xVbmJpbmRXYXlsYW5kRGlzcGxheSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRD
b21wb3NpdG9yIHJlcXVpcmVzIGVnbEJpbmRXYXlsYW5kRGlzcGxheVdMIGFuZCBlZ2xVbmJpbmRX
YXlsYW5kRGlzcGxheVdMLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
bV9lZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCk7CisgICAg
aWYgKCFtX2VnbENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9l
Z2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBHU291cmNlIHNv
dXJjZTsKKyAgICBncG9pbnRlciBmZFRhZzsKKyAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxh
eTsKK30gV2F5bGFuZExvb3BTb3VyY2U7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB3YXlsYW5k
TG9vcFNvdXJjZUNvbmRpdGlvbiA9IEdfSU9fSU4gfCBHX0lPX0hVUCB8IEdfSU9fRVJSOworCitz
dGF0aWMgR1NvdXJjZUZ1bmNzIHdheWxhbmRMb29wU291cmNlRnVuY3Rpb25zID0geworICAgIC8v
IHByZXBhcmUKKyAgICBbXShHU291cmNlICpzb3VyY2UsIGludCAqdGltZW91dCkgLT4gZ2Jvb2xl
YW4geworICAgICAgICAqdGltZW91dCA9IC0xOworICAgICAgICBhdXRvKiB3bExvb3BTb3VyY2Ug
PSByZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291cmNlKj4oc291cmNlKTsKKyAgICAgICAg
d2xfZGlzcGxheV9mbHVzaF9jbGllbnRzKHdsTG9vcFNvdXJjZS0+ZGlzcGxheSk7CisgICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8vIGNoZWNrCisgICAgLy8gZGlz
cGF0Y2gKKyAgICBbXShHU291cmNlKiBzb3VyY2UsIEdTb3VyY2VGdW5jIGNhbGxiYWNrLCBncG9p
bnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICBhdXRvKiB3bExvb3BTb3VyY2Ug
PSByZWludGVycHJldF9jYXN0PFdheWxhbmRMb29wU291cmNlKj4oc291cmNlKTsKKyAgICAgICAg
dW5zaWduZWQgZXZlbnRzID0gZ19zb3VyY2VfcXVlcnlfdW5peF9mZChzb3VyY2UsIHdsTG9vcFNv
dXJjZS0+ZmRUYWcpICYgd2F5bGFuZExvb3BTb3VyY2VDb25kaXRpb247CisgICAgICAgIGlmIChl
dmVudHMgJiBHX0lPX0hVUCB8fCBldmVudHMgJiBHX0lPX0VSUikgeworICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJXYXlsYW5kIERpc3BsYXkgRXZlbnQgU291cmNlOiBsb3N0IGNvbm5lY3Rpb24g
dG8gbmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciIpOworICAgICAgICAgICAgcmV0dXJuIEdfU09V
UkNFX1JFTU9WRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChldmVudHMgJiBHX0lPX0lOKQor
ICAgICAgICAgICAgd2xfZXZlbnRfbG9vcF9kaXNwYXRjaCh3bF9kaXNwbGF5X2dldF9ldmVudF9s
b29wKHdsTG9vcFNvdXJjZS0+ZGlzcGxheSksIDApOworICAgICAgICByZXR1cm4gR19TT1VSQ0Vf
Q09OVElOVUU7CisgICAgfSwKKyAgICBudWxscHRyLCAvLyBmaW5hbGl6ZQorICAgIG51bGxwdHIs
IC8vIGNsb3N1cmVfY2FsbGJhY2sKKyAgICBudWxscHRyLCAvLyBjbG9zdXJlX21hcnNoYWxsCit9
OworCitzdGF0aWMgR1JlZlB0cjxHU291cmNlPiBjcmVhdGVXYXlsYW5kTG9vcFNvdXJjZShzdHJ1
Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKK3sKKyAgICBHUmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9
IGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJndheWxhbmRMb29wU291cmNlRnVuY3Rpb25zLCBzaXpl
b2YoV2F5bGFuZExvb3BTb3VyY2UpKSk7CisgICAgZ19zb3VyY2Vfc2V0X25hbWUoc291cmNlLmdl
dCgpLCAiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IGV2ZW50IHNvdXJjZSIpOwor
ICAgIGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCksIEdfUFJJT1JJVFlfREVGQVVM
VCArIDEpOworCisgICAgYXV0byogd2xMb29wU291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxXYXls
YW5kTG9vcFNvdXJjZSo+KHNvdXJjZS5nZXQoKSk7CisgICAgd2xMb29wU291cmNlLT5kaXNwbGF5
ID0gZGlzcGxheTsKKyAgICB3bExvb3BTb3VyY2UtPmZkVGFnID0gZ19zb3VyY2VfYWRkX3VuaXhf
ZmQoc291cmNlLmdldCgpLCB3bF9ldmVudF9sb29wX2dldF9mZCh3bF9kaXNwbGF5X2dldF9ldmVu
dF9sb29wKGRpc3BsYXkpKSwgc3RhdGljX2Nhc3Q8R0lPQ29uZGl0aW9uPih3YXlsYW5kTG9vcFNv
dXJjZUNvbmRpdGlvbikpOworICAgIGdfc291cmNlX2F0dGFjaChzb3VyY2UuZ2V0KCksIG51bGxw
dHIpOworCisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OldheWxh
bmRDb21wb3NpdG9yKCkKK3sKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZGlzcGxheT4gZGlz
cGxheSh3bF9kaXNwbGF5X2NyZWF0ZSgpKTsKKyAgICBpZiAoIWRpc3BsYXkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBjcmVhdGUg
ZGlzcGxheSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBk
aXNwbGF5TmFtZSA9ICJ3ZWJraXRndGstd2F5bGFuZC1jb21wb3NpdG9yLSIgKyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7CisgICAgaWYgKHdsX2Rpc3BsYXlfYWRkX3NvY2tldChkaXNwbGF5
LmdldCgpLCBkaXNwbGF5TmFtZS51dGY4KCkuZGF0YSgpKSA9PSAtMSkgeworICAgICAgICBXVEZM
b2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IGNyZWF0ZSBkaXNw
bGF5IHNvY2tldCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2xVbmlxdWVQdHI8
c3RydWN0IHdsX2dsb2JhbD4gY29tcG9zaXRvckdsb2JhbCh3bF9nbG9iYWxfY3JlYXRlKGRpc3Bs
YXkuZ2V0KCksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgd2xfY29tcG9zaXRvcl9pbnRlcmZh
Y2UudmVyc2lvbiwgdGhpcywKKyAgICAgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50LCB2
b2lkKiBkYXRhLCB1aW50MzJfdCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkgeworICAgICAgICAgICAg
aWYgKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xp
ZW50LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIHN0ZDo6bWluKHN0YXRpY19jYXN0PGludD4o
dmVyc2lvbiksIDMpLCBpZCkpCisgICAgICAgICAgICAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxl
bWVudGF0aW9uKHJlc291cmNlLCAmY29tcG9zaXRvckludGVyZmFjZSwgc3RhdGljX2Nhc3Q8V2F5
bGFuZENvbXBvc2l0b3IqPihkYXRhKSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgd2xfY2xpZW50X3Bvc3Rfbm9fbWVtb3J5KGNsaWVudCk7CisgICAgICAgIH0p
KTsKKyAgICBpZiAoIWNvbXBvc2l0b3JHbG9iYWwpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJO
ZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCByZWdpc3RlciBjb21wb3NpdG9yIGds
b2JhbCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2xVbmlxdWVQdHI8c3RydWN0
IHdsX2dsb2JhbD4gd2Via2l0Z3RrR2xvYmFsKHdsX2dsb2JhbF9jcmVhdGUoZGlzcGxheS5nZXQo
KSwgJndsX3dlYmtpdGd0a19pbnRlcmZhY2UsIDEsIHRoaXMsCisgICAgICAgIFtdKHN0cnVjdCB3
bF9jbGllbnQqIGNsaWVudCwgdm9pZCogZGF0YSwgdWludDMyX3QgdmVyc2lvbiwgdWludDMyX3Qg
aWQpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlID0gd2xf
cmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX3dlYmtpdGd0a19pbnRlcmZhY2UsIDEsIGlkKSkK
KyAgICAgICAgICAgICAgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2Us
ICZ3ZWJraXRndGtJbnRlcmZhY2UsIHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4oZGF0
YSksIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdsX2NsaWVu
dF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgICAgICB9KSk7CisgICAgaWYgKCF3ZWJraXRn
dGtHbG9iYWwpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFuZCBjb21wb3Np
dG9yIGNvdWxkIG5vdCByZWdpc3RlciB3ZWJraXRndGsgZ2xvYmFsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIWluaXRpYWxpemVFR0woKSkgeworICAgICAgICBXVEZMb2dB
bHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90IGluaXRpYWxpemUgRUdM
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWVnbEJpbmRXYXlsYW5kRGlz
cGxheShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIGRpc3Bs
YXkuZ2V0KCkpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9z
aXRvciBjb3VsZCBub3QgYmluZCBuZXN0ZWQgZGlzcGxheSIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9kaXNwbGF5TmFtZSA9IFdURk1vdmUoZGlzcGxheU5hbWUpOworICAgIG1f
ZGlzcGxheSA9IFdURk1vdmUoZGlzcGxheSk7CisgICAgbV9jb21wb3NpdG9yR2xvYmFsID0gV1RG
TW92ZShjb21wb3NpdG9yR2xvYmFsKTsKKyAgICBtX3dlYmtpdGd0a0dsb2JhbCA9IFdURk1vdmUo
d2Via2l0Z3RrR2xvYmFsKTsKKyAgICBtX2V2ZW50U291cmNlID0gY3JlYXRlV2F5bGFuZExvb3BT
b3VyY2UobV9kaXNwbGF5LmdldCgpKTsKK30KKworYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6Z2V0
VGV4dHVyZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVuc2lnbmVkJiB0ZXh0dXJlLCBJbnRTaXpl
JiB0ZXh0dXJlU2l6ZSkKK3sKKyAgICBpZiAoYXV0byogc3VyZmFjZSA9IG1fcGFnZU1hcC5nZXQo
JndlYlBhZ2UpKQorICAgICAgICByZXR1cm4gc3VyZmFjZS0+cHJlcGFyZVRleHR1cmVGb3JQYWlu
dGluZyh0ZXh0dXJlLCB0ZXh0dXJlU2l6ZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFdheWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFnZShXYXlsYW5kQ29tcG9zaXRv
cjo6U3VyZmFjZSogc3VyZmFjZSwgdWludDY0X3QgcGFnZUlEKQoreworICAgIFdlYlBhZ2VQcm94
eSogd2ViUGFnZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBwYWdlIDogbV9wYWdlTWFwLmtl
eXMoKSkgeworICAgICAgICBpZiAocGFnZS0+cGFnZUlEKCkgPT0gcGFnZUlEKSB7CisgICAgICAg
ICAgICB3ZWJQYWdlID0gcGFnZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3VyZmFjZS0+c2V0
V2ViUGFnZSh3ZWJQYWdlKTsKKyAgICBtX3BhZ2VNYXAuc2V0KHdlYlBhZ2UsIHN1cmZhY2UpOwor
fQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpyZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5
JiB3ZWJQYWdlKQoreworICAgIG1fcGFnZU1hcC5hZGQoJndlYlBhZ2UsIG51bGxwdHIpOworfQor
Cit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkm
IHdlYlBhZ2UpCit7CisgICAgaWYgKGF1dG8qIHN1cmZhY2UgPSBtX3BhZ2VNYXAudGFrZSgmd2Vi
UGFnZSkpCisgICAgICAgIHN1cmZhY2UtPnNldFdlYlBhZ2UobnVsbHB0cik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDI4YWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oCkBAIC0wLDAgKzEs
MTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV2xVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHZvaWQgKkVHTEltYWdlS0hSOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHTENvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdheWxhbmRDb21wb3NpdG9y
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXYXlsYW5kQ29tcG9zaXRvcik7CisgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9yPjsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgV2F5bGFuZENvbXBvc2l0b3ImIHNpbmdsZXRvbigpOworCisgICAgY2xhc3MgQnVm
ZmVyIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnVmZmVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgQnVmZmVyKiBnZXRPckNy
ZWF0ZShzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgfkJ1ZmZlcigpOworCisgICAgICAg
IHZvaWQgdXNlKCk7CisgICAgICAgIHZvaWQgdW51c2UoKTsKKworICAgICAgICBFR0xJbWFnZUtI
UiBjcmVhdGVJbWFnZSgpIGNvbnN0OworICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBj
b25zdDsKKworICAgICAgICBXZWFrUHRyPEJ1ZmZlcj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJu
IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBCdWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3lMaXN0ZW5lckNhbGxiYWNrKHN0cnVjdCB3bF9saXN0ZW5lciosIHZvaWQqKTsKKworICAg
ICAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIG1fcmVzb3VyY2UgeyBudWxscHRyIH07CisgICAgICAg
IHN0cnVjdCB3bF9saXN0ZW5lciBtX2Rlc3Ryb3lMaXN0ZW5lcjsKKyAgICAgICAgdWludDMyX3Qg
bV9idXN5Q291bnQgeyAwIH07CisgICAgICAgIFdlYWtQdHJGYWN0b3J5PEJ1ZmZlcj4gbV93ZWFr
UHRyRmFjdG9yeTsKKyAgICB9OworCisgICAgY2xhc3MgU3VyZmFjZSB7CisgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN1cmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBw
dWJsaWM6CisgICAgICAgIFN1cmZhY2UoKTsKKyAgICAgICAgflN1cmZhY2UoKTsKKworICAgICAg
ICB2b2lkIGF0dGFjaEJ1ZmZlcihzdHJ1Y3Qgd2xfcmVzb3VyY2UqKTsKKyAgICAgICAgdm9pZCBy
ZXF1ZXN0RnJhbWUoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIGJvb2wgY29tbWl0KCk7
CisKKyAgICAgICAgdm9pZCBzZXRXZWJQYWdlKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkgeyBtX3dl
YlBhZ2UgPSB3ZWJQYWdlOyB9CisgICAgICAgIGJvb2wgcHJlcGFyZVRleHR1cmVGb3JQYWludGlu
Zyh1bnNpZ25lZCYsIFdlYkNvcmU6OkludFNpemUmKTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IHZvaWQgbWFrZVBlbmRpbmdCdWZmZXJDdXJyZW50KCk7CisKKyAgICAgICAgV2Vha1B0cjxCdWZm
ZXI+IG1fYnVmZmVyOworICAgICAgICBXZWFrUHRyPEJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOwor
ICAgICAgICB1bnNpZ25lZCBtX3RleHR1cmU7CisgICAgICAgIEVHTEltYWdlS0hSIG1faW1hZ2U7
CisgICAgICAgIFZlY3Rvcjx3bF9yZXNvdXJjZSo+IG1fZnJhbWVDYWxsYmFja0xpc3Q7CisgICAg
ICAgIFdlYlBhZ2VQcm94eSogbV93ZWJQYWdlIHsgbnVsbHB0ciB9OworICAgIH07CisKKyAgICBi
b29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CisgICAgU3RyaW5n
IGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQorCisgICAgdm9p
ZCBiaW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2
b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJX
ZWJQYWdlKFdlYlBhZ2VQcm94eSYpOworCisgICAgYm9vbCBnZXRUZXh0dXJlKFdlYlBhZ2VQcm94
eSYsIHVuc2lnbmVkJiwgV2ViQ29yZTo6SW50U2l6ZSYpOworCitwcml2YXRlOgorICAgIFdheWxh
bmRDb21wb3NpdG9yKCk7CisKKyAgICBib29sIGluaXRpYWxpemVFR0woKTsKKworICAgIFN0cmlu
ZyBtX2Rpc3BsYXlOYW1lOworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9kaXNw
bGF5PiBtX2Rpc3BsYXk7CisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX2dsb2Jh
bD4gbV9jb21wb3NpdG9yR2xvYmFsOworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3
bF9nbG9iYWw+IG1fd2Via2l0Z3RrR2xvYmFsOworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9ldmVu
dFNvdXJjZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2VnbENv
bnRleHQ7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBTdXJmYWNlKj4gbV9wYWdlTWFwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5E
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNl
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3Rr
LmNwcAppbmRleCBhZTE0ZTllLi4zZjA1ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcApAQCAtMjcsMzEgKzI3LDUyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAorI2luY2x1
ZGUgIldheWxhbmRDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAKKyNpZiBVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlz
cGxheVgxMS5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3Rv
cmUoKQogewotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0gICAgaWYgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIHVuZGVyIFdheWxhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuCi0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKLSAgICAgICAgc2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwotICAgIH0KLSNlbmRpZgotI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICBzZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZSh0cnVlKTsKLSNlbmRpZgogI2lmICFFTkFCTEUoT1BFTkdMKQogICAgIHNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKICNlbHNlCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUp
OworI2Vsc2UKICAgICBpZiAoZ2V0ZW52KCJXRUJLSVRfRk9SQ0VfQ09NUE9TSVRJTkdfTU9ERSIp
KQogICAgICAgICBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKLSAgICBpZiAoZ2V0ZW52
KCJXRUJLSVRfRElTQUJMRV9DT01QT1NJVElOR19NT0RFIikpCisjZW5kaWYKKworICAgIGlmIChn
ZXRlbnYoIldFQktJVF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUiKSkgewogICAgICAgICBzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAoUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6WDExKSB7CisgICAgICAgIGF1dG8mIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKTsKKyAgICAgICAgT3B0
aW9uYWw8aW50PiBkYW1hZ2VCYXNlOworICAgICAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNYQ29t
cG9zaXRlKCkgfHwgIWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdlKGRhbWFnZUJhc2UpKQorICAgICAg
ICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIH0KICNl
bmRpZgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkg
eworICAgICAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmco
KSkKKyAgICAgICAgICAgIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsK
KyAgICB9CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShPUEVOR0wpCiB9CiAKIHZvaWQgV2Vi
UHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvWERhbWFnZU5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERh
bWFnZU5vdGlmaWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzM2ZjYy4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmll
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWERhbWFnZU5vdGlmaWVyLmgi
Ci0KLSNpZiBQTEFURk9STShYMTEpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eVgxMS5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMv
WGRhbWFnZS5oPgotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1h
Z2VFdmVudEJhc2U7Ci0KLVhEYW1hZ2VOb3RpZmllciYgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0
b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+IG5vdGlm
aWVyOwotICAgIHJldHVybiBub3RpZmllcjsKLX0KLQotWERhbWFnZU5vdGlmaWVyOjpYRGFtYWdl
Tm90aWZpZXIoKQotewotICAgIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLnN1cHBvcnRzWERhbWFnZShzX2RhbWFnZUV2ZW50QmFz
ZSk7Ci19Ci0KLXZvaWQgWERhbWFnZU5vdGlmaWVyOjphZGQoRGFtYWdlIGRhbWFnZSwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYgbm90aWZ5RnVuY3Rpb24pCi17Ci0gICAgaWYgKCFzX2RhbWFnZUV2
ZW50QmFzZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlz
RW1wdHkoKSkKLSAgICAgICAgZ2RrX3dpbmRvd19hZGRfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJw
cmV0X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOwotICAg
IG1fbm90aWZ5RnVuY3Rpb25zLmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsK
LX0KLQotdm9pZCBYRGFtYWdlTm90aWZpZXI6OnJlbW92ZShEYW1hZ2UgZGFtYWdlKQotewotICAg
IGlmICghc19kYW1hZ2VFdmVudEJhc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbm90aWZ5
RnVuY3Rpb25zLnJlbW92ZShkYW1hZ2UpOwotICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0Vt
cHR5KCkpCi0gICAgICAgIGdka193aW5kb3dfcmVtb3ZlX2ZpbHRlcihudWxscHRyLCByZWludGVy
cHJldF9jYXN0PEdka0ZpbHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLX0K
LQotR2RrRmlsdGVyUmV0dXJuIFhEYW1hZ2VOb3RpZmllcjo6ZmlsdGVyWERhbWFnZUV2ZW50KEdk
a1hFdmVudCogZXZlbnQsIEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKLXsK
LSAgICBBU1NFUlQoc19kYW1hZ2VFdmVudEJhc2UpOwotICAgIGF1dG8qIHhFdmVudCA9IHN0YXRp
Y19jYXN0PFhFdmVudCo+KGV2ZW50KTsKLSAgICBpZiAoeEV2ZW50LT50eXBlICE9IHNfZGFtYWdl
RXZlbnRCYXNlLnZhbHVlKCkgKyBYRGFtYWdlTm90aWZ5KQotICAgICAgICByZXR1cm4gR0RLX0ZJ
TFRFUl9DT05USU5VRTsKLQotICAgIGF1dG8qIGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2Fz
dDxYRGFtYWdlTm90aWZ5RXZlbnQqPih4RXZlbnQpOwotICAgIGlmIChub3RpZmllci0+bm90aWZ5
KGRhbWFnZUV2ZW50LT5kYW1hZ2UpKSB7Ci0gICAgICAgIFhEYW1hZ2VTdWJ0cmFjdCh4RXZlbnQt
PnhhbnkuZGlzcGxheSwgZGFtYWdlRXZlbnQtPmRhbWFnZSwgTm9uZSwgTm9uZSk7Ci0gICAgICAg
IHJldHVybiBHREtfRklMVEVSX1JFTU9WRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gR0RLX0ZJTFRF
Ul9DT05USU5VRTsKLX0KLQotYm9vbCBYRGFtYWdlTm90aWZpZXI6Om5vdGlmeShEYW1hZ2UgZGFt
YWdlKSBjb25zdAotewotICAgIGlmIChjb25zdCBhdXRvJiBub3RpZnlGdW5jdGlvbiA9IG1fbm90
aWZ5RnVuY3Rpb25zLmdldChkYW1hZ2UpKSB7Ci0gICAgICAgIG5vdGlmeUZ1bmN0aW9uKCk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Ro
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcAppbmRleCA5MzgzZDg3Li44Y2U2ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCkBAIC0zMCwxNCArMzAsMTIgQEAKICNpbmNsdWRlICJUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
YWluRnJhbWUuaD4KIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotI2lu
Y2x1ZGUgIlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCi0jZW5kaWYKLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsMjYgKzUyLDIzIEBA
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+VGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QoKQogVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlRocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Qod2ViUGFnZSkKICAgICAsIG1fY29tcG9zaXRvckNsaWVudCgqdGhp
cykKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICAsIG1fcmVkaXJl
Y3RlZFdpbmRvdyhSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHdlYlBhZ2UpKQot
ICAgICwgbV9jb21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2NvbXBvc2l0
b3JDbGllbnQsIG1fcmVkaXJlY3RlZFdpbmRvdyA/IG1fcmVkaXJlY3RlZFdpbmRvdy0+d2luZG93
KCkgOiAwKSkKLSNlbHNlCi0gICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRDb21wb3NpdG9yOjpj
cmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCkpCi0jZW5kaWYKKyAgICAsIG1fc3VyZmFjZShBY2Nl
bGVyYXRlZFN1cmZhY2U6OmNyZWF0ZSh3ZWJQYWdlKSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KQotICAgICAgICBt
X2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAo
KTsKLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAgICAgLy8gRG8gbm90IGRvIGZy
YW1lIHN5bmMgd2hlbiByZW5kZXJpbmcgb2Zmc2NyZWVuIGluIHRoZSB3ZWIgcHJvY2VzcyB0byBl
bnN1cmUgdGhhdCBTd2FwQnVmZmVycyBuZXZlciBibG9ja3MuCisgICAgICAgIC8vIFJlbmRlcmlu
ZyB0byB0aGUgYWN0dWFsIHNjcmVlbiB3aWxsIGhhcHBlbiBsYXRlciBhbnl3YXkgc2luY2UgdGhl
IFVJIHByb2Nlc3Mgc2NoZWR1bGVzIGEgcmVkcmF3IGZvciBldmVyeSB1cGRhdGUsCisgICAgICAg
IC8vIHRoZSBjb21wb3NpdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHN5bmNpbmcgdG8gdmJsYW5rLgor
ICAgICAgICBtX2NvbXBvc2l0b3IgPSBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21w
b3NpdG9yQ2xpZW50LCBtX3N1cmZhY2UtPndpbmRvdygpLCBUaHJlYWRlZENvbXBvc2l0b3I6OlNo
b3VsZERvRnJhbWVTeW5jOjpObyk7CisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0
SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOworICAgIH0gZWxzZQorICAgICAgICBtX2NvbXBv
c2l0b3IgPSBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50KTsK
IH0KIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgp
CiB7CiAgICAgbV9jb21wb3NpdG9yLT5pbnZhbGlkYXRlKCk7CiAgICAgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjppbnZhbGlkYXRlKCk7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCi0gICAgbV9yZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKLSNlbmRpZgorICAgIG1f
c3VyZmFjZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmZvcmNlUmVwYWludCgpCkBAIC05NSwxMiArOTAsOCBAQCB2b2lkIFRocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6
OkludFNpegogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAgbV9yZWRp
cmVjdGVkV2luZG93LT5yZXNpemUobV93ZWJQYWdlLnNpemUoKSk7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAg
IH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNpemUobV93ZWJQ
YWdlLnNpemUoKSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1
cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICBtX2NvbXBvc2l0b3ItPnNldERldmlj
ZVNjYWxlRmFjdG9yKG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKQEAgLTExNCwxMiAr
MTA1LDkgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewotI2lmIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5k
b3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoc2l6ZSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1h
cCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNp
emUoc2l6ZSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZh
Y2UtPnN1cmZhY2VJRCgpOworCiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlk
Q2hhbmdlKHNpemUpOwogICAgIG1fY29tcG9zaXRvci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNp
emUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYTQxYTExNi4uODkwZTdiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBDb29yZGluYXRl
ZEdyYXBoaWNzU3RhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZTsKIGNsYXNzIFdlYlBh
Z2U7CiAKIGNsYXNzIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IGZpbmFsIDogcHVi
bGljIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCB7CkBAIC0xMDUsOSArMTA1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc1N0YXRlJikgb3ZlcnJpZGU7CiAKICAgICBDb21wb3NpdG9yQ2xpZW50IG1fY29tcG9z
aXRvckNsaWVudDsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IG1fcmVkaXJlY3RlZFdp
bmRvdzsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IG1f
c3VyZmFjZTsKICAgICBSZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CiAg
ICAgZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3IgeyAxIH07CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9wcmV2U2Nyb2xsUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmZDc0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKworI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaCIKKyNlbmRpZgorCisjaWYgVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgi
CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZh
Y2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQoreworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisg
ICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9y
bURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZh
Y2VXYXlsYW5kOjpjcmVhdGUod2ViUGFnZSk7CisjZW5kaWYKKyNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZXR1cm4g
QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUod2ViUGFnZSk7CisjZW5kaWYKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlOjpBY2NlbGVyYXRlZFN1cmZhY2Uo
V2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9zaXpl
KHdlYlBhZ2Uuc2l6ZSgpKQoreworICAgIG1fc2l6ZS5zY2FsZShtX3dlYlBhZ2UuZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZTo6fkFjY2VsZXJhdGVkU3VyZmFj
ZSgpCit7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3sKKyAgICBJbnRTaXplIHNjYWxlZFNpemUoc2l6ZSk7CisgICAgc2NhbGVkU2l6
ZS5zY2FsZShtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgaWYgKHNjYWxlZFNp
emUgPT0gbV9zaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NpemUgPSBzY2Fs
ZWRTaXplOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFj
ZS5oCnNpbWlsYXJpdHkgaW5kZXggNjglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlLmgKaW5kZXggOTMzNGNjMi4uNmI4
MmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZS5oCkBAIC0yNSwzNiArMjUsMjggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBQTEFURk9STShYMTEpCi0KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KIAotdHlwZWRlZiB1bnNpZ25lZCBsb25nIERhbWFnZTsKLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFhEYW1hZ2VOb3RpZmllciB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoWERhbWFnZU5vdGlmaWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj47Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFhEYW1hZ2VOb3RpZmllciYgc2luZ2xldG9uKCk7CitjbGFzcyBXZWJQYWdl
OwogCi0gICAgdm9pZCBhZGQoRGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCByZW1vdmUoRGFtYWdlKTsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1
cmZhY2U+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRTdXJmYWNl
KCk7CiAKLXByaXZhdGU6Ci0gICAgWERhbWFnZU5vdGlmaWVyKCk7CisgICAgdmlydHVhbCB1aW50
NjRfdCB3aW5kb3coKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIDA7IH07CisgICAgdmlydHVhbCBib29sIHJlc2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAKLSAgICBzdGF0aWMgR2RrRmlsdGVyUmV0dXJuIGZpbHRlclhEYW1hZ2VF
dmVudChHZGtYRXZlbnQqLCBHZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciopOwotICAgIGJvb2wg
bm90aWZ5KERhbWFnZSkgY29uc3Q7Citwcm90ZWN0ZWQ6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNl
KFdlYlBhZ2UmKTsKIAotICAgIEhhc2hNYXA8RGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+
IG1fbm90aWZ5RnVuY3Rpb25zOworICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKKyAgICBXZWJDb3Jl
OjpJbnRTaXplIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZmMGI4NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJm
YWNlV2F5bGFuZC5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdheWxh
bmQuaCIKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJXZWJLaXQyV2F5bGFu
ZENsaWVudFByb3RvY29sLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oPgorI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5j
bHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9y
RGlzcGxheT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNw
bGF5ID0gd2xfZGlzcGxheV9jb25uZWN0KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndheWxhbmRD
b21wb3NpdG9yRGlzcGxheU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFkaXNw
bGF5KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQg
aW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBXYXlsYW5kIGRpc3BsYXk6
ICVzIiwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlz
cGxheT4obmV3IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheShkaXNwbGF5KSk7CisgICAgfQorCisg
ICAgdm9pZCBiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSwgV2Vi
UGFnZSYgcGFnZSkKKyAgICB7CisgICAgICAgIGlmICghbV93ZWJraXRndGspCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgd2xfd2Via2l0Z3RrX2JpbmRfc3VyZmFjZV90b19wYWdlKHJl
aW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+KG1fd2Via2l0Z3RrLmdldCgpKSwg
c3VyZmFjZSwgcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1f
ZGlzcGxheSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUo
ZGlzcGxheSk7CisgICAgICAgIFBsYXRmb3JtRGlzcGxheTo6c2V0U2hhcmVkRGlzcGxheUZvckNv
bXBvc2l0aW5nKCp0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZ2lzdHJ5R2xvYmFsKGNvbnN0
IGNoYXIqIGludGVyZmFjZSwgdWludDMyX3QgbmFtZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OnJlZ2lzdHJ5R2xvYmFsKGludGVyZmFjZSwgbmFtZSk7
CisgICAgICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAid2xfd2Via2l0Z3RrIikpCisg
ICAgICAgICAgICBtX3dlYmtpdGd0ay5yZXNldChzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xfcHJveHkq
Pih3bF9yZWdpc3RyeV9iaW5kKG1fcmVnaXN0cnkuZ2V0KCksIG5hbWUsICZ3bF93ZWJraXRndGtf
aW50ZXJmYWNlLCAxKSkpOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9wcm94
eT4gbV93ZWJraXRndGs7Cit9OworCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21w
b3NpdG9yRGlzcGxheT4mIHdheWxhbmRDb21wb3NpdG9yRGlzcGxheSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+
PiB3YXlsYW5kRGlzcGxheShXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OmNyZWF0ZSgpKTsKKyAg
ICByZXR1cm4gd2F5bGFuZERpc3BsYXk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kPiBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpjcmVhdGUoV2ViUGFn
ZSYgd2ViUGFnZSkKK3sKKyAgICByZXR1cm4gd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkgPyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZD4obmV3IEFjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQod2ViUGFnZSkpIDogbnVsbHB0cjsKK30KKworQWNjZWxlcmF0ZWRTdXJm
YWNlV2F5bGFuZDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZChXZWJQYWdlJiB3ZWJQYWdlKQor
ICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UpCisgICAgLCBtX3N1cmZhY2Uod2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5KCktPmNyZWF0ZVN1cmZhY2UoKSkKKyAgICAsIG1fd2luZG93KHds
X2VnbF93aW5kb3dfY3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgc3RkOjptYXgoMSwgbV9zaXplLndp
ZHRoKCkpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpKSkKK3sKKyAgICB3YXlsYW5kQ29t
cG9zaXRvckRpc3BsYXkoKS0+YmluZFN1cmZhY2VUb1BhZ2UobV9zdXJmYWNlLmdldCgpLCBtX3dl
YlBhZ2UpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjp+QWNjZWxlcmF0ZWRTdXJm
YWNlV2F5bGFuZCgpCit7CisgICAgd2xfZWdsX3dpbmRvd19kZXN0cm95KG1fd2luZG93KTsKK30K
KworYm9vbCBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpyZXNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKK3sKKyAgICBpZiAoIUFjY2VsZXJhdGVkU3VyZmFjZTo6cmVzaXplKHNpemUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dpbmRvdywg
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgMCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFO
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNj
ZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDI1MDA1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvV2xVbmlxdWVQdHIuaD4KKyNp
bmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2Ug
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgfkFj
Y2VsZXJhdGVkU3VyZmFjZVdheWxhbmQoKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1fd2luZG93KTsg
fQorICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2Vi
UGFnZS5wYWdlSUQoKTsgfQorICAgIGJvb2wgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKFdl
YlBhZ2UmKTsKKworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBt
X3N1cmZhY2U7CisgICAgc3RydWN0IHdsX2VnbF93aW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlM
QU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAKc2ltaWxhcml0eSBpbmRleCA4
NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcAppbmRleCBkYjMyYWUy
Li5hNTU1N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHAKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VYMTEuaCIK
IAogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogCkBAIC0zOSwyMCArMzks
MTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93OjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKK3N0ZDo6dW5pcXVlX3B0cjxB
Y2NlbGVyYXRlZFN1cmZhY2VYMTE+IEFjY2VsZXJhdGVkU3VyZmFjZVgxMTo6Y3JlYXRlKFdlYlBh
Z2UmIHdlYlBhZ2UpCiB7CiAgICAgaWYgKCFkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5zdXBwb3J0c1hDb21wb3NpdGUoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdz4obmV3IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KHdlYlBh
Z2UpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVgxMT4o
bmV3IEFjY2VsZXJhdGVkU3VyZmFjZVgxMSh3ZWJQYWdlKSk7CiB9CiAKLVJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJiB3ZWJQYWdl
KQotICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCitBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OkFjY2Vs
ZXJhdGVkU3VyZmFjZVgxMShXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRTdXJm
YWNlKHdlYlBhZ2UpCiAgICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDEx
PihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkpCi0gICAgLCBtX3Np
emUod2ViUGFnZS5zaXplKCkpCiB7Ci0gICAgbV9zaXplLnNjYWxlKG1fd2ViUGFnZS5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLQogICAgIFNjcmVlbiogc2NyZWVuID0gRGVmYXVsdFNjcmVlbk9mRGlz
cGxheShtX2Rpc3BsYXkpOwogCiAgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxh
eSk7CkBAIC0xMDksNyArMTA2LDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgbV9waXhtYXAgPSBY
Q29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKIH0K
IAotUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dygpCitBY2NlbGVyYXRlZFN1cmZhY2VYMTE6On5BY2NlbGVyYXRlZFN1cmZhY2VYMTEoKQogewog
ICAgIEFTU0VSVChtX2Rpc3BsYXkpOwogICAgIEFTU0VSVChtX3dpbmRvdyk7CkBAIC0xMjAsMTQg
KzExNywxMCBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93KCkKICAgICBtX3BhcmVudFdpbmRvdy5yZXNldCgpOwogfQogCi12b2lkIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK2Jvb2wg
QWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAg
ICBJbnRTaXplIHNjYWxlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShtX3dlYlBh
Z2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgaWYgKHNjYWxlZFNpemUgPT0gbV9zaXplKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NpemUgPSBzY2FsZWRTaXplOworICAgIGlmICghQWNj
ZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBh
bGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KICAgICBYUmVzaXplV2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgo
MSwgbV9zaXplLmhlaWdodCgpKSk7CkBAIC0xMzYsNiArMTI5LDcgQEAgdm9pZCBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLy8gUmVs
ZWFzZSB0aGUgcHJldmlvdXMgcGl4bWFwIGxhdGVyIHRvIGdpdmUgc29tZSB0aW1lIHRvIHRoZSBV
SSBwcm9jZXNzIHRvIHVwZGF0ZS4KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihz
dGQ6OmNocm9ubzo6c2Vjb25kcyg1KSwgW3BpeG1hcCA9IFdURk1vdmUobV9waXhtYXApXSB7IH0p
OwogICAgIG1fcGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBt
X3dpbmRvdy5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKc2ltaWxhcml0eSBpbmRleCA3NyUK
cmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCmluZGV4IDg0YTU0ZDkuLjBkNzJk
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCkBAIC0yNyw5ICsyNyw4IEBACiAK
ICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKIAotI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIHR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwogdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFBpeG1hcDsKQEAgLTM5LDIyICszOCwyMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViUGFnZTsKIAotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VYMTEgZmluYWwgOiBwdWJs
aWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVy
YXRlZFN1cmZhY2VYMTEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUo
V2ViUGFnZSYpOwotICAgIH5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlWDExPiBjcmVhdGUoV2ViUGFnZSYp
OworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VYMTEoKTsKIAotICAgIFdpbmRvdyB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQotICAgIFBpeG1hcCBwaXhtYXAoKSBjb25z
dCB7IHJldHVybiBtX3BpeG1hcC5nZXQoKTsgfQotICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3dpbmRvdy5nZXQoKTsgfQorICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcGl4bWFwLmdldCgpOyB9CisgICAgYm9vbCByZXNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KFdlYlBhZ2UmKTsKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VYMTEoV2Vi
UGFnZSYpOwogCi0gICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogICAgIERpc3BsYXkqIG1fZGlzcGxh
eSB7IG51bGxwdHIgfTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKICAgICBXZWJDb3Jl
OjpYVW5pcXVlV2luZG93IG1fd2luZG93OwogICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV9w
YXJlbnRXaW5kb3c7CiAgICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwCmluZGV4IDlhMDkyZWQuLjVhMTcwZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIAorI2lu
Y2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAg
LTQ2LDIwICs0Nyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KICNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaWYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1gxMSkKLSNkZWZpbmUgUmVnaW9uIFhSZWdpb24KLSNkZWZpbmUgRm9u
dCBYRm9udAotI2RlZmluZSBDdXJzb3IgWEN1cnNvcgotI2RlZmluZSBTY3JlZW4gWFNjcmVlbgot
I2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKQotI2luY2x1ZGUgIlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgiCi0j
ZW5kaWYKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTEzNyw5ICsxMjYsNyBAQCBSZWY8TGF5ZXJUcmVlSG9zdEd0az4gTGF5ZXJU
cmVlSG9zdEd0azo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCiAKIExheWVyVHJlZUhvc3RHdGs6
OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IExheWVyVHJlZUhvc3Qo
d2ViUGFnZSkKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICAsIG1f
cmVkaXJlY3RlZFdpbmRvdyhSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHdlYlBh
Z2UpKQotI2VuZGlmCisgICAgLCBtX3N1cmZhY2UoQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUo
d2ViUGFnZSkpCiAgICAgLCBtX3JlbmRlckZyYW1lU2NoZWR1bGVyKHN0ZDo6YmluZCgmTGF5ZXJU
cmVlSG9zdEd0azo6cmVuZGVyRnJhbWUsIHRoaXMpKQogewogICAgIG1fcm9vdExheWVyID0gR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKQEAgLTE2
NywzNCArMTU0LDM3IEBAIExheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFn
ZSYgd2ViUGFnZSkKICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLmdldCgpKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0g
ICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgeworICAgIGlmIChtX3N1cmZhY2UpIHsKICAgICAg
ICAgY3JlYXRlVGV4dHVyZU1hcHBlcigpOwotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29u
dGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKKyAgICAgICAgbV9sYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7CiAgICAgfQotI2Vu
ZGlmCiB9CiAKIGJvb2wgTGF5ZXJUcmVlSG9zdEd0azo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsK
LSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB1aW50NjRfdCBuYXRp
dmVIYW5kbGUgPSBtX3JlZGlyZWN0ZWRXaW5kb3cgPyBtX3JlZGlyZWN0ZWRXaW5kb3ctPndpbmRv
dygpIDogbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRDsKLSNlbHNlCi0gICAgdWludDY0X3Qg
bmF0aXZlSGFuZGxlID0gbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRDsKLSNlbmRpZgotCisg
ICAgdWludDY0X3QgbmF0aXZlSGFuZGxlID0gbV9zdXJmYWNlID8gbV9zdXJmYWNlLT53aW5kb3co
KSA6IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7CiAgICAgaWYgKCFuYXRpdmVIYW5kbGUp
IHsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmICghbV9jb250ZXh0KSB7Ci0gICAgICAgIG1fY29udGV4dCA9IEdMQ29u
dGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0PEdMTmF0aXZlV2lu
ZG93VHlwZT4obmF0aXZlSGFuZGxlKSwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKLSAg
ICAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOworCisgICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9y
V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5kb3dUeXBlPihuYXRpdmVIYW5kbGUp
LCAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gRG8gbm90IGRvIGZyYW1lIHN5bmMgd2hlbiByZW5kZXJpbmcgb2Zmc2NyZWVuIGluIHRoZSB3
ZWIgcHJvY2VzcyB0byBlbnN1cmUgdGhhdCBTd2FwQnVmZmVycyBuZXZlciBibG9ja3MuCisgICAg
Ly8gUmVuZGVyaW5nIHRvIHRoZSBhY3R1YWwgc2NyZWVuIHdpbGwgaGFwcGVuIGxhdGVyIGFueXdh
eSBzaW5jZSB0aGUgVUkgcHJvY2VzcyBzY2hlZHVsZXMgYSByZWRyYXcgZm9yIGV2ZXJ5IHVwZGF0
ZSwKKyAgICAvLyB0aGUgY29tcG9zaXRvciB3aWxsIHRha2UgY2FyZSBvZiBzeW5jaW5nIHRvIHZi
bGFuay4KKyAgICBpZiAobV9zdXJmYWNlKQorICAgICAgICBtX2NvbnRleHQtPnN3YXBJbnRlcnZh
bCgwKTsKIAotICAgIHJldHVybiBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IHJldHVybiB0cnVlOwogfQogCiBMYXllclRyZWVIb3N0R3RrOjp+TGF5ZXJUcmVlSG9zdEd0aygp
CkBAIC0yMjksOSArMjE5LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkK
ICAgICBtX2NvbnRleHQgPSBudWxscHRyOwogICAgIExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUo
KTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIG1fcmVkaXJl
Y3RlZFdpbmRvdyA9IG51bGxwdHI7Ci0jZW5kaWYKKyAgICBtX3N1cmZhY2UgPSBudWxscHRyOwog
fQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5KCkKQEAgLTI3MSwyNCArMjU5LDE2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2l6
ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChGbG9hdFJlY3QoMCwgb2xkU2l6
ZS5oZWlnaHQoKSwgbmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpIC0gb2xkU2l6ZS5o
ZWlnaHQoKSkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNw
bGF5KCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAo
bV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAgICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXpl
KG5ld1NpemUpOwotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRp
cmVjdGVkV2luZG93LT5waXhtYXAoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNl
ICYmIG1fc3VyZmFjZS0+cmVzaXplKG5ld1NpemUpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRl
eHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKIAogICAgIGNvbXBvc2l0ZUxh
eWVyc1RvQ29udGV4dChGb3JSZXNpemUpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykgewotICAgICAgICBt
X3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgpKTsKLSAgICAgICAgbV9s
YXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7
Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZSht
X3dlYlBhZ2Uuc2l6ZSgpKSkKKyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9
IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7CiAKICAgICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2Yg
dGhlIHNjYWxlIGZhY3RvciBjaGFuZ2UgdmlhIFdlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9y
LgogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IGQ2OWRlOTcuLjQ0NzQ1MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJU
cmVlSG9zdEd0ay5oCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1j
bGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFj
ZTsKIAogY2xhc3MgTGF5ZXJUcmVlSG9zdEd0ayBmaW5hbCA6IHB1YmxpYyBMYXllclRyZWVIb3N0
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTEwOSw5ICsxMDks
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
PiBtX3RleHR1cmVNYXBwZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4
dD4gbV9jb250ZXh0OwogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVN
YXRyaXg7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBtX3JlZGlyZWN0ZWRXaW5kb3c7
Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBtX3N1cmZh
Y2U7CiAgICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcjsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDE0YjNhMTQu
LjZjNDI1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MzAwLDYgKzMwMCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fYXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UtPnNldERlZmF1bHRPcmlnaW5RdW90YSgyNVVMTCAqIDEwMjQgKiAxMDI0
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBtX3dheWxhbmRDb21wb3Np
dG9yRGlzcGxheU5hbWUgPSBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWU7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMzkyZjY3Ni4uOTYz
NDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE5Nyw2ICsx
OTcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25z
KCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgU3RyaW5nIHdheWxhbmRD
b21wb3NpdG9yRGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3dheWxhbmRDb21wb3NpdG9y
RGlzcGxheU5hbWU7IH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0Kik7CiAgICAgc3RhdGljIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopOwogCkBAIC00
MDIsNiArNDA2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N1cHByZXNzTWVtb3J5UHJlc3N1
cmVIYW5kbGVyIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6VXNlckdlc3R1cmVU
b2tlbiAqLCB1aW50NjRfdD4gbV91c2VyR2VzdHVyZVRva2VuczsKKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgU3RyaW5nIG1fd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZTsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGNk
ODI5M2EuLjk4YmE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0zOTAsMTAgKzM5MCwxNCBA
QCBpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9S
ICJSZWNvbXBpbGUgR1RLKyB3aXRoIFdheWxhbmQgYmFja2VuZCB0byB1c2UgRU5BQkxFX1dBWUxB
TkRfVEFSR0VUIikKICAgICBlbmRpZiAoKQogCi0gICAgaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdF
VCBBTkQgR1RLM19WRVJTSU9OIFZFUlNJT05fTEVTUyAzLjEyKQorICAgIGlmIChHVEszX1ZFUlNJ
T04gVkVSU0lPTl9MRVNTIDMuMTIpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdUSysg
My4xMiBpcyByZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKICAgICBlbmRp
ZiAoKQogCisgICAgaWYgKE5PVCBFR0xfRk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJS
T1IgIkVHTCBpcyByZXF1aXJlZCB0byB1c2UgRU5BQkxFX1dBWUxBTkRfVEFSR0VUIikKKyAgICBl
bmRpZiAoKQorCiAgICAgZmluZF9wYWNrYWdlKFdheWxhbmQgUkVRVUlSRUQpCiBlbmRpZiAoKQog
Cg==
</data>
<flag name="review"
          id="310567"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287260</attachid>
            <date>2016-08-29 02:22:45 -0700</date>
            <delta_ts>2016-08-29 02:26:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>197052</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZWQ5NzI0Li5hZGE2NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3RlZCBk
aXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBjcmVh
dGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBkaXNw
bGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0aGUg
YWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNoIHJl
ZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBjb250
ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNwbGF5
LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0Zm9y
bURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9wZXJh
dGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcgR0wg
Y29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBiZSBn
bG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28gaXQn
cyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRkaXRp
b24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9zc2li
bGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJlIHVz
ZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBwb3Nz
aWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5lY3Rl
ZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAgICAg
d2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9mZnNj
cmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNjcmVl
biB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBzdXJm
YWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0aGF0
IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1vdmVk
IHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5bGFu
ZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFyZWQg
ZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2V0
U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNwbGF5
cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxheXMg
d2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRlcm1p
bWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6Omlu
aXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkgaW5p
dGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFsaXph
dGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxlZCBv
biBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRh
dGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
V2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVBi
dWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3Vy
ZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdh
eWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6
Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xY
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dlYktp
dEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTI1ICBGcmVkZXJpYyBXYW5n
ICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uLUJNUCBv
cGVyYXRvcnMgVSsxRUVGMCBhbmQgVSsxRUVGMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRl
eCA5MzM0Y2ZiLi5lMzIzZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTQ0LDYg
KzE0NCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCiAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKQEAgLTM0OCwyNCArMzUwLDYgQEAgaWYgKEVO
QUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XQVlMQU5E
X1RBUkdFVCkKLSAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgotICAgIGFkZF9jdXN0
b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICAgICBERVBFTkRTICR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVu
dFByb3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBzZXJ2ZXItaGVh
ZGVyIDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRHdGtX
YXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L1dlYktpdEd0a1dheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCi0gICAgICAgIENPTU1BTkQgd2F5bGFu
ZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLmgKLSAg
ICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnhtbCA+
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJv
dG9jb2wuYwotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCi0g
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcAot
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAotICAg
ICkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwotICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29s
LmMKLSAgICApCi0KICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgICAgICR7V0FZTEFORF9JTkNMVURFX0RJUlN9CiAgICAgKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggZGU2MTI0OC4u
ZTkzMDNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwCkBAIC0xOSwxMCArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5B
QkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0KICNpbmNsdWRlICJHTENvbnRleHQuaCIKLQotI2lu
Y2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5o
PgogCiAjaWYgVVNFKEVHTCkKQEAgLTU3LDEyICs1NCw2IEBAIGlubGluZSBUaHJlYWRHbG9iYWxH
TENvbnRleHQqIGN1cnJlbnRDb250ZXh0KCkKICAgICByZXR1cm4gKlRocmVhZEdsb2JhbEdMQ29u
dGV4dDo6c3RhdGljR0xDb250ZXh0OwogfQogCi1HTENvbnRleHQqIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0Piwgc2hhcmluZywgKGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKSkp
OwotICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwotfQotCiAjaWYgUExBVEZPUk0oWDExKQogLy8g
QmVjYXVzZSBvZiBkcml2ZXIgYnVncywgZXhpdGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJlIGFy
ZSBhY3RpdmUgcGJ1ZmZlcnMKIC8vIGNhbiBjcmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFzIGJl
ZW4gb2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgTnZpZGlhIGRyaXZlcnMpLgpAQCAtMTExLDEy
ICsxMDIsMzAgQEAgdm9pZCBHTENvbnRleHQ6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgp
CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oWDExKQogCitzdGF0aWMgYm9vbCBpbml0aWFsaXplT3Bl
bkdMU2hpbXNJZk5lZWRlZCgpCit7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0
YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAg
ICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOworICAgICAgICBpbml0aWFsaXpl
ZCA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBzdWNjZXNzOworI2VuZGlmCit9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0
KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9y
V2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSog
cGxhdGZvcm1EaXNwbGF5KQogewotI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCi0g
ICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9y
bURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9
IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0
KSkKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5ID0gcGxhdGZvcm1E
aXNwbGF5ID8gKnBsYXRmb3JtRGlzcGxheSA6IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpOworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKGRpc3BsYXkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAgICAgICBpZiAoYXV0byBlZ2xDb250
ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgZGlzcGxheSkp
CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTI4LDM0ICsxMzcsNjAgQEAgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93
VHlwZQogI2Vsc2UKICAgICBYSUQgR0xYV2luZG93SGFuZGxlID0gc3RhdGljX2Nhc3Q8WElEPih3
aW5kb3dIYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4
dEdMWDo6Y3JlYXRlQ29udGV4dChHTFhXaW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAg
ICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdMWFdp
bmRvd0hhbmRsZSwgZGlzcGxheSkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGdseENvbnRleHQp
OwogI2VuZGlmCiAjaWYgVVNFKEVHTCkKLSAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250
ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAg
IGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93
SGFuZGxlLCBkaXNwbGF5KSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZWdsQ29udGV4dCk7CiAj
ZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotR0xDb250ZXh0OjpHTENvbnRleHQoKQor
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KFBsYXRmb3JtRGlzcGxheSogcGxhdGZvcm1EaXNwbGF5KQogewotI2lmIFBMQVRGT1JNKFgx
MSkKLSAgICBhZGRBY3RpdmVDb250ZXh0KHRoaXMpOworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5H
TFNoaW1zSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
Y3JlYXRlQ29udGV4dEZvcldpbmRvdygwLCBwbGF0Zm9ybURpc3BsYXkgPyBwbGF0Zm9ybURpc3Bs
YXkgOiAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3Jt
RGlzcGxheSYgZGlzcGxheSkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVl
ZGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisjaWYgVVNFKEdMWCkKKyAgICBpZiAo
ZGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKKyAgICAgICAg
aWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQo
ZGlzcGxheSkpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhDb250ZXh0KTsKKyAgICB9
CiAjZW5kaWYKKworI2lmIFVTRShFR0wpIHx8IFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKGF1
dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlzcGxh
eSkpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRleHQpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0
OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitHTENv
bnRleHQ6OkdMQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkpCisgICAgOiBtX2Rpc3Bs
YXkoZGlzcGxheSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ29udGV4dEZvcldpbmRvdygwLCBzaGFy
aW5nQ29udGV4dCk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIGlmIChkaXNwbGF5LnR5cGUoKSA9
PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgYWRkQWN0aXZlQ29udGV4dCh0
aGlzKTsKKyNlbmRpZgogfQogCiBHTENvbnRleHQ6On5HTENvbnRleHQoKQogewogICAgIGlmICh0
aGlzID09IGN1cnJlbnRDb250ZXh0KCktPmNvbnRleHQoKSkKLSAgICAgICAgY3VycmVudENvbnRl
eHQoKS0+c2V0Q29udGV4dCgwKTsKKyAgICAgICAgY3VycmVudENvbnRleHQoKS0+c2V0Q29udGV4
dChudWxscHRyKTsKICNpZiBQTEFURk9STShYMTEpCi0gICAgcmVtb3ZlQWN0aXZlQ29udGV4dCh0
aGlzKTsKKyAgICBpZiAobV9kaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OlgxMSkKKyAgICAgICAgcmVtb3ZlQWN0aXZlQ29udGV4dCh0aGlzKTsKICNlbmRpZgogfQogCkBA
IC0xNjUsNyArMjAwLDcgQEAgYm9vbCBHTENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLUdMQ29udGV4dCogR0xDb250ZXh0OjpnZXRDdXJyZW50KCkK
K0dMQ29udGV4dCogR0xDb250ZXh0OjpjdXJyZW50KCkKIHsKICAgICByZXR1cm4gY3VycmVudENv
bnRleHQoKS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaAppbmRleCBkNDM5NDU0Li5jODJmMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmlu
ZSBHTENvbnRleHRfaAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRl
ICJXaWRnZXQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogI2lmIFVTRShFR0wpICYmICFQTEFURk9STShHVEspCkBAIC0zOSwy
NyArMzksMjUgQEAgdHlwZWRlZiB1aW50NjRfdCBHTE5hdGl2ZVdpbmRvd1R5cGU7CiB0eXBlZGVm
IHN0cnVjdCBfY2Fpcm9fZGV2aWNlIGNhaXJvX2RldmljZV90OwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShYMTEpCi10eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdMQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoR0xDb250ZXh0KTsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHQp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRl
eHQqIHNoYXJpbmcgPSAwKTsKLSAgICBzdGF0aWMgR0xDb250ZXh0KiBnZXRDdXJyZW50KCk7Ci0g
ICAgc3RhdGljIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQoKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93SGFuZGxlLCBQbGF0Zm9ybURpc3BsYXkqID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoUGxh
dGZvcm1EaXNwbGF5KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0PiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsKKyAgICBzdGF0
aWMgR0xDb250ZXh0KiBjdXJyZW50KCk7CisKKyAgICBQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXko
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KIAotICAgIEdMQ29udGV4dCgpOwogICAgIHZp
cnR1YWwgfkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHdhaXROYXRpdmUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZy
YW1lYnVmZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJT
aXplKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzd2FwSW50ZXJ2YWwoaW50KSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3QgPSAwOwogCkBAIC02NywyNiArNjUs
MjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkg
PSAwOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShYMTEpCi0gICAgc3RhdGljIERpc3BsYXkqIHNo
YXJlZFgxMURpc3BsYXkoKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkWDExRGlzcGxh
eSgpOworI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQorICAgIHZpcnR1YWwgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSA9IDA7CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKFgxMSkKK3ByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4
dChHTENvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29u
dGV4dCopOwogICAgIHN0YXRpYyB2b2lkIGNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpOwot
Ci0jaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0gICAgdmlydHVhbCBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpID0gMDsKICNlbmRpZgogCi0gICAgY2xh
c3MgRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5EYXRhKCkgPSBkZWZhdWx0
OwotICAgIH07Ci0KIHByb3RlY3RlZDoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YT4gbV9jb250
ZXh0RGF0YTsKKyAgICBHTENvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CisKKyAgICBQbGF0Zm9y
bURpc3BsYXkmIG1fZGlzcGxheTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDE1Y2Q0ZGYuLjZhNzMwMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRwog
ewogICAgIHN3aXRjaCAocmVuZGVyU3R5bGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJPZmZzY3JlZW46Ci0gICAgICAgIG1fZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVh
dGVPZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgICAg
IG1fZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCZQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyVG9DdXJyZW50R0xDb250ZXh0Ogog
ICAgICAgICBicmVhazsKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAKIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQoKQogewotICAgIHJldHVy
biBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdMQ29udGV4
dDo6Z2V0Q3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICByZXR1cm4gbV9nbENvbnRl
eHQgPyBtX2dsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBHTENvbnRleHQ6OmN1cnJlbnQo
KS0+cGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIKIAog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAobV9jb250ZXh0LT5tX2F0dHJzLmFu
dGlhbGlhcyAmJiBtX2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8gPT0gbV9jb250ZXh0LT5tX211
bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0
ID0gR0xDb250ZXh0OjpnZXRDdXJyZW50KCk7CisgICAgICAgIEdMQ29udGV4dCogcHJldmlvdXNB
Y3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CiAgICAgICAgIGlmIChwcmV2aW91
c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCAyZTkxYWEzLi4xODUxN2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1
ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8bXV0ZXg+CiAKQEAgLTU5LDYgKzYwLDggQEAKIAogI2lm
IFVTRShFR0wpCiAjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzYsNyArNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5
PiBQbGF0Zm9ybURpc3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCiAjZW5kaWYKICNpZiBQ
TEFURk9STShXQVlMQU5EKQogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkp
KQotICAgICAgICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKCk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KGdka193
YXlsYW5kX2Rpc3BsYXlfZ2V0X3dsX2Rpc3BsYXkoZGlzcGxheSkpOwogI2VuZGlmCiAjZW5kaWYK
ICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCkBAIC0xMDMsNiAr
MTA2LDE4IEBAIFBsYXRmb3JtRGlzcGxheSYgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkKICAgICByZXR1cm4gKmRpc3BsYXk7CiB9CiAKK3N0YXRpYyBQbGF0Zm9ybURpc3BsYXkqIHNf
c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nOworCitQbGF0Zm9ybURpc3BsYXkmIFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkKK3sKKyAgICByZXR1cm4gc19z
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcgPyAqc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRp
bmcgOiBzaGFyZWREaXNwbGF5KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFy
ZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5KQoreworICAg
IHNfc2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nID0gJmRpc3BsYXk7Cit9CisKIFBsYXRmb3Jt
RGlzcGxheTo6UGxhdGZvcm1EaXNwbGF5KCkKICNpZiBVU0UoRUdMKQogICAgIDogbV9lZ2xEaXNw
bGF5KEVHTF9OT19ESVNQTEFZKQpAQCAtMTE3LDcgKzEzMiwyMiBAQCBQbGF0Zm9ybURpc3BsYXk6
On5QbGF0Zm9ybURpc3BsYXkoKQogI2VuZGlmCiB9CiAKKyNpZiAhUExBVEZPUk0oRUZMKQorR0xD
b250ZXh0KiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJpbmdHTENvbnRleHQoKQoreworICAgIGlmICgh
bV9zaGFyaW5nR0xDb250ZXh0KQorICAgICAgICBtX3NoYXJpbmdHTENvbnRleHQgPSBHTENvbnRl
eHQ6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KCp0aGlzKTsKKyAgICByZXR1cm4gbV9zaGFyaW5nR0xD
b250ZXh0LmdldCgpOworfQorI2VuZGlmCisKICNpZiBVU0UoRUdMKQorc3RhdGljIEhhc2hTZXQ8
UGxhdGZvcm1EaXNwbGF5Kj4mIGVnbERpc3BsYXlzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxQbGF0Zm9ybURpc3BsYXkqPj4gZGlzcGxheXM7CisgICAgcmV0dXJuIGRp
c3BsYXlzOworfQorCiBFR0xEaXNwbGF5IFBsYXRmb3JtRGlzcGxheTo6ZWdsRGlzcGxheSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2VnbERpc3BsYXlJbml0aWFsaXplZCkKQEAgLTEyNSwxMiArMTU1
LDIwIEBAIEVHTERpc3BsYXkgUGxhdGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KCkgY29uc3QKICAg
ICByZXR1cm4gbV9lZ2xEaXNwbGF5OwogfQogCitib29sIFBsYXRmb3JtRGlzcGxheTo6ZWdsQ2hl
Y2tWZXJzaW9uKGludCBtYWpvciwgaW50IG1pbm9yKSBjb25zdAoreworICAgIGlmICghbV9lZ2xE
aXNwbGF5SW5pdGlhbGl6ZWQpCisgICAgICAgIGNvbnN0X2Nhc3Q8UGxhdGZvcm1EaXNwbGF5Kj4o
dGhpcyktPmluaXRpYWxpemVFR0xEaXNwbGF5KCk7CisKKyAgICByZXR1cm4gKG1fZWdsTWFqb3JW
ZXJzaW9uID4gbWFqb3IpIHx8ICgobV9lZ2xNYWpvclZlcnNpb24gPT0gbWFqb3IpICYmIChtX2Vn
bE1pbm9yVmVyc2lvbiA+PSBtaW5vcikpOworfQorCiB2b2lkIFBsYXRmb3JtRGlzcGxheTo6aW5p
dGlhbGl6ZUVHTERpc3BsYXkoKQogewogICAgIG1fZWdsRGlzcGxheUluaXRpYWxpemVkID0gdHJ1
ZTsKIAogICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIHsKLS8vIEVHTCBp
cyBvcHRpb25hbGx5IHNvZnQgbGlua2VkIG9uIFdpbmRvd3MuCisgICAgICAgIC8vIEVHTCBpcyBv
cHRpb25hbGx5IHNvZnQgbGlua2VkIG9uIFdpbmRvd3MuCiAjaWYgUExBVEZPUk0oV0lOKQogICAg
ICAgICBhdXRvIGVnbEdldERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5UHRyKCk7CiAgICAgICAgIGlm
ICghZWdsR2V0RGlzcGxheSkKQEAgLTE0MSwzNiArMTc5LDQxIEBAIHZvaWQgUGxhdGZvcm1EaXNw
bGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGVnbEluaXRpYWxpemUobV9lZ2xEaXNwbGF5LCAwLCAwKSA9PSBFR0xfRkFMU0Up
IHsKKyAgICBFR0xpbnQgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb247CisgICAgaWYgKGVnbElu
aXRpYWxpemUobV9lZ2xEaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBF
R0xfRkFMU0UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFR0xEaXNwbGF5IEluaXRpYWxpemF0aW9u
IGZhaWxlZC4iKTsKICAgICAgICAgdGVybWluYXRlRUdMRGlzcGxheSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIHN0YXRpYyBjb25zdCBFR0xl
bnVtIGVnbEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0VTX0FQSTsKLSNlbHNlCi0gICAgc3RhdGlj
IGNvbnN0IEVHTGVudW0gZWdsQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfQVBJOwotI2VuZGlmCi0g
ICAgaWYgKGVnbEJpbmRBUEkoZWdsQVBJVmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7Ci0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBFR0wgQVBJKCVkKS4iLCBlZ2xHZXRFcnJvcigpKTsK
LSAgICAgICAgdGVybWluYXRlRUdMRGlzcGxheSgpOwotICAgICAgICByZXR1cm47CisgICAgbV9l
Z2xNYWpvclZlcnNpb24gPSBtYWpvclZlcnNpb247CisgICAgbV9lZ2xNaW5vclZlcnNpb24gPSBt
aW5vclZlcnNpb247CisKKyAgICBlZ2xEaXNwbGF5cygpLmFkZCh0aGlzKTsKKworICAgIHN0YXRp
YyBib29sIGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghZWds
QXRleGl0SGFuZGxlckluaXRpYWxpemVkKSB7CisgICAgICAgIC8vIEVHTCByZWdpc3RlcnMgYXRl
eGl0IGhhbmRsZXJzIHRvIGNsZWFudXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCisgICAgICAg
IC8vIFNpbmNlIHRoZSBnbG9iYWwgUGxhdGZvcm1EaXNwbGF5IGluc3RhbmNlIGlzIGNyZWF0ZWQg
YmVmb3JlLAorICAgICAgICAvLyB3aGVuIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVzdHJ1Y3RvciBp
cyBjYWxsZWQsIEVHTCBoYXMgYWxyZWFkeSByZW1vdmVkIHRoZQorICAgICAgICAvLyBkaXNwbGF5
IGZyb20gdGhlIGxpc3QsIGNhdXNpbmcgZWdsVGVybWluYXRlKCkgdG8gY3Jhc2guIFNvLCBoZXJl
IHdlIHJlZ2lzdGVyCisgICAgICAgIC8vIG91ciBvd24gYXRleGl0IGhhbmRsZXIsIGFmdGVyIEVH
TCBoYXMgYmVlbiBpbml0aWFsaXplZCBhbmQgYWZ0ZXIgdGhlIGdsb2JhbAorICAgICAgICAvLyBp
bnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIHRvIGVuc3VyZSB3ZSBjYWxsIGVnbFRlcm1pbmF0ZSgp
IGJlZm9yZSB0aGUgb3RoZXIKKyAgICAgICAgLy8gRUdMIGF0ZXhpdCBoYW5kbGVycyBhbmQgdGhl
IFBsYXRmb3JtRGlzcGxheSBkZXN0cnVjdG9yLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzk3My4KKyAgICAgICAgZWdsQXRleGl0SGFu
ZGxlckluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgc3RkOjphdGV4aXQoW10geworICAgICAg
ICAgICAgd2hpbGUgKCFlZ2xEaXNwbGF5cygpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
IGF1dG8qIGRpc3BsYXkgPSBlZ2xEaXNwbGF5cygpLnRha2VBbnkoKTsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5LT50ZXJtaW5hdGVFR0xEaXNwbGF5KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOwogICAgIH0KLQotICAgIC8vIEVHTCByZWdpc3RlcnMgYXRleGl0IGhhbmRsZXJzIHRvIGNs
ZWFudXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCi0gICAgLy8gU2luY2UgdGhlIGdsb2JhbCBQ
bGF0Zm9ybURpc3BsYXkgaW5zdGFuY2UgaXMgY3JlYXRlZCBiZWZvcmUsCi0gICAgLy8gd2hlbiB0
aGUgUGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IgaXMgY2FsbGVkLCBFR0wgaGFzIGFscmVhZHkg
cmVtb3ZlZCB0aGUKLSAgICAvLyBkaXNwbGF5IGZyb20gdGhlIGxpc3QsIGNhdXNpbmcgZWdsVGVy
bWluYXRlKCkgdG8gY3Jhc2guIFNvLCBoZXJlIHdlIHJlZ2lzdGVyCi0gICAgLy8gb3VyIG93biBh
dGV4aXQgaGFuZGxlciwgYWZ0ZXIgRUdMIGhhcyBiZWVuIGluaXRpYWxpemVkIGFuZCBhZnRlciB0
aGUgZ2xvYmFsCi0gICAgLy8gaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCB0byBlbnN1cmUgd2Ug
Y2FsbCBlZ2xUZXJtaW5hdGUoKSBiZWZvcmUgdGhlIG90aGVyCi0gICAgLy8gRUdMIGF0ZXhpdCBo
YW5kbGVycyBhbmQgdGhlIFBsYXRmb3JtRGlzcGxheSBkZXN0cnVjdG9yLgotICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTczLgotICAgIHN0ZDo6
YXRleGl0KFtdIHsgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudGVybWluYXRlRUdM
RGlzcGxheSgpOyB9KTsKIH0KIAogdm9pZCBQbGF0Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERp
c3BsYXkoKQogeworICAgIG1fc2hhcmluZ0dMQ29udGV4dCA9IG51bGxwdHI7CiAgICAgQVNTRVJU
KG1fZWdsRGlzcGxheUluaXRpYWxpemVkKTsKICAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCmluZGV4IDkyMDlmNDUuLjcwMDc3MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5oCkBAIC0zNSwxMCArMzUsMTMgQEAgdHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdMQ29udGV4dDsKKwogY2xhc3MgUGxhdGZvcm1EaXNw
bGF5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybURpc3BsYXkpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5JiBz
aGFyZWREaXNwbGF5KCk7CisgICAgc3RhdGljIFBsYXRmb3JtRGlzcGxheSYgc2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKCk7CiAgICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5KCk7CiAKICAg
ICBlbnVtIGNsYXNzIFR5cGUgewpAQCAtNTUsMTMgKzU4LDIyIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogCisjaWYgIVBMQVRGT1JNKEVGTCkKKyAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGhhdmUgYW55IHBsYXRmb3JtIGlmZGVmLCBidXQgRUZM
IGhhcyBpdHMgb3duIEVHTENvbnRleHQgY2xhc3MKKyAgICAvLyBpbnN0ZWFkIG9mIHVzaW5nIHRo
ZSBHTENvbnRleHQgY29tbW9uIEFQSS4KKyAgICBHTENvbnRleHQqIHNoYXJpbmdHTENvbnRleHQo
KTsKKyNlbmRpZgorCiAjaWYgVVNFKEVHTCkKICAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkoKSBj
b25zdDsKKyAgICBib29sIGVnbENoZWNrVmVyc2lvbihpbnQgbWFqb3IsIGludCBtaW5vcikgY29u
c3Q7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtRGlzcGxheSgpOwogCisgICAg
c3RhdGljIHZvaWQgc2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKFBsYXRmb3JtRGlzcGxh
eSYpOworCiAjaWYgVVNFKEVHTCkKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUVHTERpc3Bs
YXkoKTsKIApAQCAtNzUsNyArODcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRlcm1pbmF0ZUVH
TERpc3BsYXkoKTsKIAogICAgIGJvb2wgbV9lZ2xEaXNwbGF5SW5pdGlhbGl6ZWQgeyBmYWxzZSB9
OworICAgIGludCBtX2VnbE1ham9yVmVyc2lvbiB7IDAgfTsKKyAgICBpbnQgbV9lZ2xNaW5vclZl
cnNpb24geyAwIH07CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBtX3No
YXJpbmdHTENvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCmluZGV4IDhmNDhjMjAuLjNjZDJhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CkBAIC04OCw4ICs4OCw4IEBAIEltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSgpCiAg
ICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAg
R0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQo
KTsKLSAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJy
ZW50KCk7CisgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmco
KS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKG1f
dGV4dHVyZSkKICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKQEAgLTEw
OCw3ICsxMDgsOCBAQCBJbWFnZUJ1ZmZlckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpj
cmVhdGVDb21wb3NpdG9yQnVmZmVyKCkKIHsKLSAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsK
KyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGdsR2VuVGV4dHVyZXMo
MSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CkBAIC0xMTksMTUgKzEyMCwxNCBAQCB2b2lkIEltYWdl
QnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpCiAgICAgZ2xQaXhlbFN0b3JlaShH
TF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCAsIEdMX1JHQkEsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwogCi0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IEdM
Q29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+Y2Fpcm9EZXZpY2UoKTsKLSAgICBtX2NvbXBvc2l0
b3JTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUo
ZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CisgICAgbV9jb21wb3NpdG9yU3VyZmFj
ZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNvbnRleHQt
PmNhaXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9zaXRvclRl
eHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKICAgICBtX2NvbXBvc2l0
b3JDciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NvbXBvc2l0b3JTdXJmYWNlLmdldCgpKSk7
CiAgICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2NvbXBvc2l0b3JDci5nZXQoKSwgQ0FJUk9fQU5U
SUFMSUFTX05PTkUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5l
ZWRlZCgpCiB7Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRl
eHQ6OmdldEN1cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9
IEdMQ29udGV4dDo6Y3VycmVudCgpOwogCiAgICAgaWYgKCFtX2NvbXBvc2l0b3JUZXh0dXJlKSB7
CiAgICAgICAgIGNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKTsKQEAgLTE1OSw3ICsxNTksOCBAQCB2
b2lkIGNsZWFyU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAKIHZvaWQgSW1hZ2VC
dWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiB7Ci0gICAgR0xDb250ZXh0OjpzaGFy
aW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBhdXRvKiBjb250ZXh0ID0g
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xD
b250ZXh0KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBX
ZSBtdXN0IGdlbmVyYXRlIHRoZSB0ZXh0dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBpcyBu
byBDYWlybyBBUEkgZm9yIGV4dHJhY3RpbmcgaXQKICAgICAvLyBmcm9tIGEgcHJlLWV4aXN0aW5n
IHN1cmZhY2UuCkBAIC0xNzQsNyArMTc1LDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0
ZUNhaXJvR0xTdXJmYWNlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwIC8q
IGxldmVsICovLCBHTF9SR0JBLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwIC8q
IGJvcmRlciAqLywgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKLSAgICBHTENvbnRl
eHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CiAgICAgY2Fpcm9fZGV2
aWNlX3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7CiAKICAgICAvLyBUaHJlYWQt
YXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9uLUludGVsIGRyaXZlcnMu
CkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEYKICAgICBBU1NFUlQo
bV90ZXh0dXJlKTsKIAogICAgIC8vIENhaXJvIG1heSBjaGFuZ2UgdGhlIGFjdGl2ZSBjb250ZXh0
LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0ZXIgZmx1c2hpbmcuCi0gICAg
R0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQo
KTsKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3Vy
cmVudCgpOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKICAgICBw
cmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC02MDksNyAr
NjA5LDcgQEAgYm9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEJiwgR0MzRGVudW0gdGFyZ2V0LCBQbGEKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1
c2gobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KDAsIEdMQ29u
dGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4g
Y29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgdWludDMyX3QgZmJvOwogICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZmYm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCBhMmJjNzViLi43OTc5OTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApA
QCAtMjIsNyArMjIsNiBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogCiAjaWYgVVNFKENBSVJPKQog
I2luY2x1ZGUgPGNhaXJvLmg+CkBAIC00MCw2ICszOSwxMSBAQAogI2luY2x1ZGUgPFgxMS9YbGli
Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZC5oIgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjZW5kaWYKKwogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAvLyBjYWlyby1nbC5oIGluY2x1ZGVzIHNv
bWUgZGVmaW5pdGlvbnMgZnJvbSBHTFggdGhhdCBjb25mbGljdCB3aXRoCiAvLyB0aGUgb25lcyBw
cm92aWRlZCBieSB1cy4gU2luY2UgR0xDb250ZXh0RUdMIGRvZXNuJ3QgdXNlIGFueSBHTFgKQEAg
LTUwLDExICs1NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEVHTERpc3Bs
YXkgc2hhcmVkRUdMRGlzcGxheSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKLX0KLQogc3RhdGljIGNvbnN0IEVHTGludCBnQ29u
dGV4dEF0dHJpYnV0ZXNbXSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgRUdMX0NPTlRF
WFRfQ0xJRU5UX1ZFUlNJT04sIDIsCkBAIC02Miw3ICs2MSwxMyBAQCBzdGF0aWMgY29uc3QgRUdM
aW50IGdDb250ZXh0QXR0cmlidXRlc1tdID0gewogICAgIEVHTF9OT05FCiB9OwogCi1zdGF0aWMg
Ym9vbCBnZXRFR0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3Vy
ZmFjZVR5cGUgc3VyZmFjZVR5cGUpCisjaWYgVVNFKE9QRU5HTF9FU18yKQorc3RhdGljIGNvbnN0
IEVHTGVudW0gZ0VHTEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0VTX0FQSTsKKyNlbHNlCitzdGF0
aWMgY29uc3QgRUdMZW51bSBnRUdMQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfQVBJOworI2VuZGlm
CisKK2Jvb2wgR0xDb250ZXh0RUdMOjpnZXRFR0xDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBF
R0xDb25maWcqIGNvbmZpZywgRUdMU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUpCiB7CiAgICAgRUdM
aW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCkBAIC04NywyNyAr
OTIsMjMgQEAgc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENv
bnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2UKICAgICAgICAgYXR0cmlidXRlTGlzdFsx
M10gPSBFR0xfUElYTUFQX0JJVDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHTENvbnRleHRF
R0w6OldpbmRvd1N1cmZhY2U6CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlN1cmZhY2VsZXNzOgog
ICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOwogICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVy
biBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25m
aWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsK
KyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZp
ZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdp
bmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmlu
Z0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4dERhdGEp
CitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRv
d0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxh
dGZvcm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVHTENvbnRl
eHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29u
dGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xf
Tk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZpZyBjb25m
aWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCisgICAg
aWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJp
YnV0ZXMpOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxh
eSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKICAgICBpZiAo
Y29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTExNywxOSArMTE4LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOwotICAgIGds
Q29udGV4dC0+bV9jb250ZXh0RGF0YSA9IFdURk1vdmUoY29udGV4dERhdGEpOwotICAgIHJldHVy
biBnbENvbnRleHQ7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5l
dyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dT
dXJmYWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0Nv
bnRleHQpCiB7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwot
ICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5
KCk7CiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmln
LCBQYnVmZmVyU3VyZmFjZSkpCisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZp
ZywgUGJ1ZmZlclN1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEVHTENv
bnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5n
Q29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKQEAgLTE0MywxOCArMTM5LDM2IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoRUdMQ29udGV4dCBzaGFyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwg
UGJ1ZmZlclN1cmZhY2UpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgUGJ1
ZmZlclN1cmZhY2UpKTsKIH0KIAotI2lmIFBMQVRGT1JNKFgxMSkKLXN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0
IHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURp
c3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxheSBkaXNw
bGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRm
b3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BM
QVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9u
cyA9IGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoIXN0
cnN0cihleHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IikgJiYgIXN0cnN0
cihleHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19vcGVuZ2wiKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29u
ZmlnKCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQorICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3Bs
YXksICZjb25maWcsIFN1cmZhY2VsZXNzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywg
c2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgaWYgKGNvbnRleHQgPT0g
RUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNw
bGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpKTsKK30KKworI2lmIFBM
QVRGT1JNKFgxMSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6
Y3JlYXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0
Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYg
KCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29u
dGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMp
OwpAQCAtMTY3LDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5u
YXRpdmUoKTsKKyAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhVbmlxdWVQaXhtYXAgcGl4
bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNwbGF5LCBEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNw
bGF5KSwgMSwgMSwgZGVwdGgpOwogICAgIGlmICghcGl4bWFwKSB7CiAgICAgICAgIGVnbERlc3Ry
b3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwpAQCAtMTgwLDQ5ICsxOTQsMTA3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4
dChFR0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwg
V1RGTW92ZShwaXhtYXApKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdU
Rk1vdmUocGl4bWFwKSkpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6
OmNyZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBF
R0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgp
KQorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7
CisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAm
Y29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIHN1Y2Nlc3Mg
PSB0cnVlOwotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQot
ICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7Ci0jZW5kaWYKLSAgICAg
ICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0
ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1
dGVzKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gd2xTdXJmYWNl
KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KHBsYXRmb3JtRGlzcGxheSkuY3JlYXRl
U3VyZmFjZSgpKTsKKyAgICBpZiAoIXdsU3VyZmFjZSkgeworICAgICAgICBlZ2xEZXN0cm95Q29u
dGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGlmICghc3VjY2VzcykKKworICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93ID0gd2xf
ZWdsX3dpbmRvd19jcmVhdGUod2xTdXJmYWNlLmdldCgpLCAxLCAxKTsKKyAgICBFR0xTdXJmYWNl
IHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93
LCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xE
ZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgd2xfZWdsX3dpbmRvd19k
ZXN0cm95KHdpbmRvdyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRm
b3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZSh3bFN1cmZhY2UpLCB3aW5kb3cp
KTsKK30KKyNlbmRpZgorCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlz
cGxheSYgcGxhdGZvcm1EaXNwbGF5KQoreworICAgIGlmIChwbGF0Zm9ybURpc3BsYXkuZWdsRGlz
cGxheSgpID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19j
YXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBh
dXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmlu
Z0NvbnRleHQpIDogbnVsbHB0cjsKKyAgICBpZiAoZWdsQmluZEFQSShnRUdMQVBJVmVyc2lvbikg
PT0gRUdMX0ZBTFNFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQg
ZWdsU2hhcmluZ0NvbnRleHQgPSBwbGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpID8g
c3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRl
eHQoKSktPm1fY29udGV4dCA6IEVHTF9OT19DT05URVhUOworICAgIGF1dG8gY29udGV4dCA9IHdp
bmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBwbGF0Zm9ybURpc3BsYXksIGVnbFNo
YXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250
ZXh0ID0gY3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmlu
Z0NvbnRleHQpOworICAgIGlmICghY29udGV4dCkgewogI2lmIFBMQVRGT1JNKFgxMSkKKyAgICAg
ICAgaWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpY
MTEpCisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURp
c3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4
dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorICAgIH0KICAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVn
bFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0
KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworCisgICAgcmV0dXJuIGNvbnRl
eHQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7Cisg
ICAgaWYgKHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGVnbEJpbmRBUEkoZ0VHTEFQSVZlcnNp
b24pID09IEVHTF9GQUxTRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNv
bnRleHQgPSBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyAgICBp
ZiAoIWNvbnRleHQpIHsKKyNpZiBQTEFURk9STShYMTEpCisgICAgICAgIGlmIChwbGF0Zm9ybURp
c3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICAgICAg
Y29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNvbnRleHQg
PSBjcmVhdGVXYXlsYW5kQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOwogI2VuZGlmCisgICAgfQog
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0
KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250
ZXh0KHBsYXRmb3JtRGlzcGxheSk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotR0xDb250
ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK0dMQ29u
dGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4
dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCisgICAg
OiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9z
dXJmYWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICBBU1NFUlQodHlwZSAh
PSBQaXhtYXBTdXJmYWNlKTsKKyAgICBBU1NFUlQodHlwZSA9PSBTdXJmYWNlbGVzcyB8fCBzdXJm
YWNlICE9IEVHTF9OT19TVVJGQUNFKTsKIH0KIAogI2lmIFBMQVRGT1JNKFgxMSkKLUdMQ29udGV4
dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNl
LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENv
bnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRl
eHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQor
ICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAs
IG1fc3VyZmFjZShzdXJmYWNlKQogICAgICwgbV90eXBlKFBpeG1hcFN1cmZhY2UpCiAgICAgLCBt
X3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCkBAIC0yMzAsNiArMzAyLDE4IEBAIEdMQ29udGV4dEVH
TDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBY
VW5pcXVlUGl4bWFwCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCitHTENvbnRl
eHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFj
ZT4mJiB3bFN1cmZhY2UsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2xXaW5kb3cpCisgICAgOiBHTENv
bnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdXJmYWNl
KHN1cmZhY2UpCisgICAgLCBtX3R5cGUoV2luZG93U3VyZmFjZSkKKyAgICAsIG1fd2xTdXJmYWNl
KFdURk1vdmUod2xTdXJmYWNlKSkKKyAgICAsIG1fd2xXaW5kb3cod2xXaW5kb3cpCit7Cit9Cisj
ZW5kaWYKKwogR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKIHsKICNpZiBVU0UoQ0FJUk8p
CkBAIC0yMzcsNyArMzIxLDcgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICAgICAg
ICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBtX2Rpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAg
ICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwogICAgICAgICBlZ2xN
YWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9O
T19DT05URVhUKTsKQEAgLTI0Niw2ICszMzAsMTEgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0
RUdMKCkKIAogICAgIGlmIChtX3N1cmZhY2UpCiAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRp
c3BsYXksIG1fc3VyZmFjZSk7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChtX3ds
V2luZG93KQorICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93bFdpbmRvdyk7CisjZW5k
aWYKIH0KIAogYm9vbCBHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVy
KCkKQEAgLTI1OCw5ICszNDcsMTAgQEAgSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFt
ZUJ1ZmZlclNpemUoKQogICAgIGlmICghY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSkK
ICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IG1f
ZGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYg
KCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURU
SCwgJndpZHRoKQotICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXko
KSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3Vy
ZmFjZShkaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAgICAgICB8fCAh
ZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkp
CiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKQEAgLTI2OCwxOSArMzU4LDE5IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCkKIAogYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3Vy
cmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOworICAgIEFTU0VS
VChtX2NvbnRleHQpOwogCiAgICAgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAg
ICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwg
bV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJy
ZW50KG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRl
eHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VS
VChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9z
dXJmYWNlKTsKKyAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX3N1
cmZhY2UpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6d2FpdE5hdGl2ZSgpCkBAIC0yODgsNiAr
Mzc4LDEyIEBAIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKICAgICBlZ2xXYWl0TmF0
aXZlKEVHTF9DT1JFX05BVElWRV9FTkdJTkUpOwogfQogCit2b2lkIEdMQ29udGV4dEVHTDo6c3dh
cEludGVydmFsKGludCBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9zdXJmYWNlKTsKKyAgICBl
Z2xTd2FwSW50ZXJ2YWwobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgaW50ZXJ2YWwpOworfQorCiAj
aWYgVVNFKENBSVJPKQogY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2Uo
KQogewpAQCAtMjk1LDcgKzM5MSw3IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNh
aXJvRGV2aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2
aWNlX2NyZWF0ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7CisgICAgbV9jYWlyb0Rl
dmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIG1f
Y29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCmluZGV4
IDg2NTc1YTkuLjcwMjUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTI5LDQ5ICsyOSw2OCBAQAogI2luY2x1ZGUg
IlhVbmlxdWVSZXNvdXJjZS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2lu
Y2x1ZGUgIldsVW5pcXVlUHRyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xDb250ZXh0IHsKK2NsYXNzIEdMQ29udGV4dEVH
TCBmaW5hbCA6IHB1YmxpYyBHTENvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdM
Q29udGV4dEVHTCk7CiBwdWJsaWM6Ci0gICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZmZXJT
dXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlw
ZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5
cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6
OkRhdGE+JiYgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBQbGF0Zm9ybURpc3BsYXkm
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmlu
Z0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CiAKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4
dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBH
TENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKLSNl
bmRpZgogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwotICAgIHZpcnR1YWwgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0Rl
ZmF1bHRGcmFtZWJ1ZmZlcigpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZm
ZXJTaXplKCk7CisKKyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIG92ZXJyaWRlOworICAg
IHZvaWQgc3dhcEJ1ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXROYXRpdmUoKSBvdmVy
cmlkZTsKKyAgICBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkgb3ZlcnJpZGU7
CisgICAgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzd2FwSW50ZXJ2YWwoaW50KSBvdmVycmlkZTsKICNpZiBVU0UoQ0FJUk8pCi0gICAgdmlydHVh
bCBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsKKyAgICBjYWlyb19kZXZpY2VfdCogY2Fp
cm9EZXZpY2UoKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBpc0VHTENvbnRl
eHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VHTENvbnRleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF8zRCkKLSAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250
ZXh0KCk7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSBv
dmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKKyAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1
cmZhY2UsIFBpeG1hcFN1cmZhY2UsIFN1cmZhY2VsZXNzIH07CisKKyAgICBHTENvbnRleHRFR0wo
UGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUp
OwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAg
ICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwg
WFVuaXF1ZVBpeG1hcCYmKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgR0xD
b250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFdsVW5p
cXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmLCBFR0xOYXRpdmVXaW5kb3dUeXBlKTsKKyNlbmRp
ZgorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRv
d0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5
JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0
KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09O
VEVYVCk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRl
eHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisjZW5kaWYKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVh
dGVXYXlsYW5kQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0ID0gRUdMX05PX0NPTlRFWFQpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBhZGRBY3Rp
dmVDb250ZXh0KEdMQ29udGV4dEVHTCopOwotICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRF
R0xEaXNwbGF5KHZvaWQpOworICAgIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xEaXNwbGF5
LCBFR0xDb25maWcqLCBFR0xTdXJmYWNlVHlwZSk7CiAKLSAgICBFR0xDb250ZXh0IG1fY29udGV4
dDsKLSAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dCB7
IEVHTF9OT19DT05URVhUIH07CisgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2UgeyBFR0xfTk9fU1VS
RkFDRSB9OwogICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKICNpZiBQTEFURk9STShYMTEpCiAg
ICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IG1fd2xTdXJmYWNlOworICAgIHN0
cnVjdCB3bF9lZ2xfd2luZG93KiBtX3dsV2luZG93IHsgbnVsbHB0ciB9OworI2VuZGlmCiAjaWYg
VVNFKENBSVJPKQogICAgIGNhaXJvX2RldmljZV90KiBtX2NhaXJvRGV2aWNlIHsgbnVsbHB0ciB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguY3BwCmluZGV4IDE0YmI1MzkuLmRmYmI5NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCkBA
IC0zMiw5ICszMiwzMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2lu
ZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorI2lmICFkZWZpbmVkKFBGTkdMWFNXQVBJ
TlRFUlZBTFNHSVBST0MpCit0eXBlZGVmIGludCAoKlBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0Mp
IChpbnQpOworI2VuZGlmCisKK3N0YXRpYyBQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DIGdsWFN3
YXBJbnRlcnZhbFNHSTsKKworc3RhdGljIGJvb2wgaGFzU0dJU3dhcENvbnRyb2xFeHRlbnNpb24o
RGlzcGxheSogZGlzcGxheSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuICEhZ2xYU3dhcEludGVydmFs
U0dJOworCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lv
bnMgPSBnbFhRdWVyeUV4dGVuc2lvbnNTdHJpbmcoZGlzcGxheSwgMCk7CisgICAgaWYgKCFzdHJz
dHIoZXh0ZW5zaW9ucywgIkdMWF9TR0lfc3dhcF9jb250cm9sIikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGdsWFN3YXBJbnRlcnZhbFNHSSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xY
U1dBUElOVEVSVkFMU0dJUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oImdsWFN3YXBJbnRlcnZhbFNHSSIpKSk7CisgICAgcmV0dXJu
ICEhZ2xYU3dhcEludGVydmFsU0dJOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xY
PiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1E
aXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0g
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3Bs
YXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZl
KCk7CiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAoIVhHZXRXaW5k
b3dBdHRyaWJ1dGVzKGRpc3BsYXksIHdpbmRvdywgJmF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTQ1LDE1ICs2NiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIGludCBudW1SZXR1cm5lZCA9IDA7CiAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlz
dWFsSW5mb0xpc3QoWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlzdWFs
SW5mbywgJm51bVJldHVybmVkKSk7CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0
ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29u
dGV4dCktPm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7Ci0gICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LmdldCgpLCBn
bHhTaGFyaW5nQ29udGV4dCwgVHJ1ZSkpOworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQo
Z2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5nZXQoKSwgc2hhcmluZ0Nv
bnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNv
bnRleHQpLCB3aW5kb3cpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xY
PihuZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwgd2lu
ZG93KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6
Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQo
UGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAg
ICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKQEAgLTY3LDcgKzg3LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQYnVm
ZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICB9OwogCiAgICAgaW50IHJldHVybmVkRWxl
bWVudHM7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3Bs
YXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxh
eSkubmF0aXZlKCk7CiAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gY29uZmlncyhnbFhDaG9v
c2VGQkNvbmZpZyhkaXNwbGF5LCAwLCBmYkNvbmZpZ0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1l
bnRzKSk7CiAgICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTgyLDEwICsxMDIsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xD
b250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBidWZmZXIp
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4
dEdMWChwbGF0Zm9ybURpc3BsYXksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGJ1ZmZlcikp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVh
dGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoUGxhdGZv
cm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7
CiAgICAgc3RhdGljIGludCB2aXN1YWxBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEdMWF9SR0JB
LApAQCAtOTYsNyArMTE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250
ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmkKICAgICAgICAgMAog
ICAgIH07CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlz
cGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZvcm1EaXNw
bGF5KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKGds
WENob29zZVZpc3VhbChkaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkpLCB2aXN1YWxBdHRy
aWJ1dGVzKSk7CiAgICAgaWYgKCF2aXN1YWxJbmZvKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTExMyw0NiArMTMzLDQ2IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpCiAgICAgaWYgKCFn
bHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBpeG1hcCks
IFdURk1vdmUoZ2x4UGl4bWFwKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRHTFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5LCBXVEZNb3ZlKGNvbnRleHQp
LCBXVEZNb3ZlKHBpeG1hcCksIFdURk1vdmUoZ2x4UGl4bWFwKSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3Bs
YXkmIHBsYXRmb3JtRGlzcGxheSkKIHsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZh
bHNlOwotICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIGlmICghaW5pdGlhbGl6
ZWQpIHsKLSAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOwotICAgICAg
ICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hh
cmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCkt
Pm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7Ci0gICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8g
Y3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7Ci0g
ICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQo
Z2x4U2hhcmluZ0NvbnRleHQpOworICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRleHQgPSBw
bGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0
R0xYKj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSktPm1fY29udGV4dC5nZXQo
KSA6IG51bGxwdHI7CisgICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29u
dGV4dCh3aW5kb3csIHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpIDogbnVsbHB0
cjsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250
ZXh0KGdseFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJD
b250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpOwogICAgIGlmICghY29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQ
aXhtYXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFhVbmlxdWVH
TFhDb250ZXh0JiYgY29udGV4dCwgWElEIHdpbmRvdykKLSAgICA6IG1fY29udGV4dChXVEZNb3Zl
KGNvbnRleHQpKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpj
cmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSkKK3sK
KyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXkp
OworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRl
eHQocGxhdGZvcm1EaXNwbGF5KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworR0xDb250ZXh0
R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29u
dGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cpCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAg
ICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV93aW5kb3cod2luZG93KQog
ewogfQogCi1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNv
bnRleHQsIFhVbmlxdWVHTFhQYnVmZmVyJiYgcGJ1ZmZlcikKLSAgICA6IG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5
JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVmZmVy
JiYgcGJ1ZmZlcikKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KFdU
Rk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3BidWZmZXIoV1RGTW92ZShwYnVmZmVyKSkKIHsKIH0K
IAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0
LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQot
ICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitHTENvbnRleHRHTFg6OkdMQ29udGV4
dEdMWChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4
dCwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCwgWFVuaXF1ZUdMWFBpeG1hcCYmIGdseFBpeG1hcCkK
KyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4
dCkpCiAgICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCiAgICAgLCBtX2dseFBpeG1hcChX
VEZNb3ZlKGdseFBpeG1hcCkpCiB7CkBAIC0xNjYsOSArMTg2LDggQEAgR0xDb250ZXh0R0xYOjp+
R0xDb250ZXh0R0xYKCkKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIC8vIFRoaXMgbWF5
IGJlIG5lY2Vzc2FyeSB0byBwcmV2ZW50IGNyYXNoZXMgd2l0aCBOVmlkaWEncyBjbG9zZWQgc291
cmNlIGRyaXZlcnMuIE9yaWdpbmFsbHkKICAgICAgICAgLy8gZnJvbSBNb3ppbGxhJ3MgM0QgY2Fu
dmFzIGltcGxlbWVudGF0aW9uIGF0OiBodHRwOi8vYml0YnVja2V0Lm9yZy9pbG1hcmkvY2FudmFz
M2QvCi0gICAgICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKICAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKLSAgICAgICAgZ2xY
TWFrZUN1cnJlbnQoZGlzcGxheSwgTm9uZSwgTm9uZSk7CisgICAgICAgIGdsWE1ha2VDdXJyZW50
KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgTm9uZSwg
Tm9uZSk7CiAgICAgfQogfQogCkBAIC0xODUsOCArMjA0LDcgQEAgSW50U2l6ZSBHTENvbnRleHRH
TFg6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgIGludCB4LCB5OwogICAgIFdpbmRvdyBy
b290V2luZG93OwogICAgIHVuc2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0LCBib3JkZXJXaWR0aCwg
ZGVwdGg7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIGlmICgh
WEdldEdlb21ldHJ5KGRpc3BsYXksIG1fd2luZG93LCAmcm9vdFdpbmRvdywgJngsICZ5LCAmd2lk
dGgsICZoZWlnaHQsICZib3JkZXJXaWR0aCwgJmRlcHRoKSkKKyAgICBpZiAoIVhHZXRHZW9tZXRy
eShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCksIG1fd2lu
ZG93LCAmcm9vdFdpbmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsICZib3JkZXJXaWR0aCwg
JmRlcHRoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpOwpAQCAtMjAwLDcgKzIxOCw3IEBAIGJvb2wgR0xDb250ZXh0R0xYOjpt
YWtlQ29udGV4dEN1cnJlbnQoKQogICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1f
Y29udGV4dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBEaXNwbGF5KiBkaXNw
bGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKTsKICAgICBpZiAobV93aW5kb3cp
CiAgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3dpbmRvdywgbV9jb250
ZXh0LmdldCgpKTsKIApAQCAtMjEzLDcgKzIzMSw3IEBAIGJvb2wgR0xDb250ZXh0R0xYOjptYWtl
Q29udGV4dEN1cnJlbnQoKQogdm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKIHsKICAg
ICBpZiAobV93aW5kb3cpCi0gICAgICAgIGdsWFN3YXBCdWZmZXJzKGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBt
X3dpbmRvdyk7CisgICAgICAgIGdsWFN3YXBCdWZmZXJzKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgbV93aW5kb3cpOwogfQogCiB2b2lkIEdMQ29udGV4
dEdMWDo6d2FpdE5hdGl2ZSgpCkBAIC0yMjEsMTMgKzIzOSwyMCBAQCB2b2lkIEdMQ29udGV4dEdM
WDo6d2FpdE5hdGl2ZSgpCiAgICAgZ2xYV2FpdFgoKTsKIH0KIAordm9pZCBHTENvbnRleHRHTFg6
OnN3YXBJbnRlcnZhbChpbnQgaW50ZXJ2YWwpCit7CisgICAgaWYgKCFoYXNTR0lTd2FwQ29udHJv
bEV4dGVuc2lvbihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZl
KCkpKQorICAgICAgICByZXR1cm47CisgICAgZ2xYU3dhcEludGVydmFsU0dJKGludGVydmFsKTsK
K30KKwogY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEdMWDo6Y2Fpcm9EZXZpY2UoKQogewogICAg
IGlmIChtX2NhaXJvRGV2aWNlKQogICAgICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKIAogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIENBSVJPX0hBU19HTFhfRlVOQ1RJT05T
Ci0gICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19nbHhfZGV2
aWNlX2NyZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZl
KCksIG1fY29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5oCmluZGV4IDY0N2Y5OTguLjE5ZmMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTMyLDMxICszMiwzNSBA
QCB0eXBlZGVmIHZvaWQqIENvbnRleHRLZXlUeXBlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEdMQ29udGV4dEdMWCA6IHB1YmxpYyBHTENvbnRleHQgeworY2xhc3MgR0xDb250ZXh0
R0xYIGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
R0xDb250ZXh0R0xYKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlV2lu
ZG93Q29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2lu
ZG93LCBQbGF0Zm9ybURpc3BsYXkmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEdMWD4gY3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CiAKLSAgICBH
TENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWElEKTsKLSAgICBHTENvbnRleHRHTFgo
WFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBidWZmZXImJik7Ci0gICAgR0xDb250ZXh0
R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVQaXhtYXAmJiwgWFVuaXF1ZUdMWFBpeG1h
cCYmKTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHRHTFgoKTsKLSAgICB2aXJ0dWFsIGJvb2wgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9E
ZWZhdWx0RnJhbWVidWZmZXIoKTsKLSAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVm
ZmVyU2l6ZSgpOwotICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCk7Ci0g
ICAgdmlydHVhbCBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEJ1
ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXROYXRpdmUoKSBvdmVycmlkZTsKKyAgICBi
b29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkgb3ZlcnJpZGU7CisgICAgSW50U2l6
ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2FwSW50ZXJ2
YWwoaW50KSBvdmVycmlkZTsKKyAgICBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CisgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSBvdmVycmlkZTsKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQ
YnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0
IHNoYXJpbmdDb250ZXh0KTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiwgWFVu
aXF1ZUdMWENvbnRleHQmJiwgWElEKTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5
JiwgWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBidWZmZXImJik7CisgICAgR0xDb250
ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVQaXht
YXAmJiwgWFVuaXF1ZUdMWFBpeG1hcCYmKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3JtRGlz
cGxheSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZv
cm1EaXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0KFBs
YXRmb3JtRGlzcGxheSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKIAog
ICAgIFhVbmlxdWVHTFhDb250ZXh0IG1fY29udGV4dDsKICAgICBYSUQgbV93aW5kb3cgeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggYjI5MjM5ZS4uZmNmZjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMjM1LDggKzIzNSw4IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KCkKICAg
ICBpZiAobV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgY29uc3QgYXV0
byYgc2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBv
c2l0aW5nKCk7CiAgICAgaWYgKCFtX2dsRGlzcGxheSkgewotICAgICAgICBjb25zdCBhdXRvJiBz
aGFyZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CiAjaWYgUExB
VEZPUk0oWDExKQogICAgICAgICBtX2dsRGlzcGxheSA9IEdTVF9HTF9ESVNQTEFZKGdzdF9nbF9k
aXNwbGF5X3gxMV9uZXdfd2l0aF9kaXNwbGF5KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
c2hhcmVkRGlzcGxheSkubmF0aXZlKCkpKTsKICNlbGlmIFBMQVRGT1JNKFdBWUxBTkQpCkBAIC0y
NDQsNyArMjQ0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjplbnN1
cmVHc3RHTENvbnRleHQoKQogI2VuZGlmCiAgICAgfQogCi0gICAgR0xDb250ZXh0KiB3ZWJraXRD
b250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIEdMQ29udGV4dCogd2Vi
a2l0Q29udGV4dCA9IHNoYXJlZERpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpOwogICAgIC8vIEVH
TCBhbmQgR0xYIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG5vIG5lZWQgZm9yIGlmZGVmcyBoZXJl
LgogICAgIEdzdEdMUGxhdGZvcm0gZ2xQbGF0Zm9ybSA9IHdlYmtpdENvbnRleHQtPmlzRUdMQ29u
dGV4dCgpID8gR1NUX0dMX1BMQVRGT1JNX0VHTCA6IEdTVF9HTF9QTEFURk9STV9HTFg7CiAKQEAg
LTcwMiw3ICs3MDIsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIWdzdF92aWRlb19m
cmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0
TWFwRmxhZ3M+KEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250
ZXh0KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7CiAgICAgY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRl
eHQtPmNhaXJvRGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3Bw
CmluZGV4IGQzMzA1ZTEuLjQ3OTI0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXls
YW5kLmNwcApAQCAtMjksMTI2ICsyOSw1NSBAQAogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAKICNp
bmNsdWRlICJHTENvbnRleHRFR0wuaCIKLSNpbmNsdWRlICJXYXlsYW5kU3VyZmFjZS5oIgogI2lu
Y2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHdheWxhbmQtZWds
Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZDo6bV9yZWdpc3RyeUxpc3RlbmVyID0gewotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omds
b2JhbENhbGxiYWNrLAotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2JhbFJlbW92ZUNh
bGxiYWNrCitjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZDo6c19yZWdpc3RyeUxpc3RlbmVyID0geworICAgIC8vIGdsb2JhbENhbGxiYWNrCisg
ICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSwgY29u
c3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCkgeworICAgICAgICBzdGF0aWNfY2FzdDxQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kKj4oZGF0YSktPnJlZ2lzdHJ5R2xvYmFsKGludGVyZmFjZSwgbmFt
ZSk7CisgICAgfSwKKyAgICAvLyBnbG9iYWxSZW1vdmVDYWxsYmFjaworICAgIFtdKHZvaWQqLCBz
dHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCkKKyAgICB7CisgICAgfQogfTsKIAotdm9pZCBQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxDYWxsYmFjayh2b2lkKiBkYXRhLCBzdHJ1Y3Qg
d2xfcmVnaXN0cnkqIHJlZ2lzdHJ5LCB1aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2UsIHVpbnQzMl90KQorUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNwbGF5V2F5
bGFuZChzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKIHsKLSAgICBhdXRvIGRpc3BsYXkgPSBz
dGF0aWNfY2FzdDxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKj4oZGF0YSk7Ci0gICAgaWYgKCFzdGQ6
OnN0cmNtcChpbnRlcmZhY2UsICJ3bF9jb21wb3NpdG9yIikpCi0gICAgICAgIGRpc3BsYXktPm1f
Y29tcG9zaXRvciA9IHN0YXRpY19jYXN0PHN0cnVjdCB3bF9jb21wb3NpdG9yKj4od2xfcmVnaXN0
cnlfYmluZChyZWdpc3RyeSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxKSk7Ci0g
ICAgZWxzZSBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX3dlYmtpdGd0ayIpKQotICAg
ICAgICBkaXNwbGF5LT5tX3dlYmtpdGd0ayA9IHN0YXRpY19jYXN0PHN0cnVjdCB3bF93ZWJraXRn
dGsqPih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfd2Via2l0Z3RrX2ludGVy
ZmFjZSwgMSkpOworICAgIGluaXRpYWxpemUoZGlzcGxheSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZDo6Z2xvYmFsUmVtb3ZlQ2FsbGJhY2sodm9pZCosIHN0cnVjdCB3bF9yZWdp
c3RyeSosIHVpbnQzMl90KQotewotICAgIC8vIEZJWE1FOiBpZiB0aGlzIGNhbiBoYXBwZW4gd2l0
aG91dCB0aGUgVUkgUHJvY2VzcyBnZXR0aW5nIHNodXQgZG93bgotICAgIC8vIHdlIHNob3VsZCBw
cm9iYWJseSBkZXN0cm95IG91ciBjYWNoZWQgZGlzcGxheSBpbnN0YW5jZS4KLX0KLQotc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6
OmNyZWF0ZSgpCitQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZCgpCiB7Ci0gICAgc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheSA9IHdsX2Rpc3BsYXlfY29u
bmVjdChudWxscHRyKTsKLSAgICBpZiAoIXdsRGlzcGxheSkgewotICAgICAgICBXVEZMb2dBbHdh
eXMoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25u
ZWN0IHRvIHRoZSBXYXlsYW5kIHNlcnZlciBzb2NrZXQuIENoZWNrIHlvdXIgV0FZTEFORF9ESVNQ
TEFZIG9yIFdBWUxBTkRfU09DS0VUIGVudmlyb25tZW50IHZhcmlhYmxlcy4iKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBkaXNwbGF5ID0gc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KG5ldyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHds
RGlzcGxheSkpOwotICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKSB7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFp
bGVkIHRvIGNvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGlzcGxheS4iKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpc3BsYXk7CiB9CiAK
LVBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHds
X2Rpc3BsYXkqIHdsRGlzcGxheSkKLSAgICA6IG1fZGlzcGxheSh3bERpc3BsYXkpCi0gICAgLCBt
X3JlZ2lzdHJ5KHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KG1fZGlzcGxheSkpCi0gICAgLCBtX2Vn
bENvbmZpZ0Nob3NlbihmYWxzZSkKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6aW5pdGlh
bGl6ZSh3bF9kaXNwbGF5KiBkaXNwbGF5KQogewotICAgIHdsX3JlZ2lzdHJ5X2FkZF9saXN0ZW5l
cihtX3JlZ2lzdHJ5LCAmbV9yZWdpc3RyeUxpc3RlbmVyLCB0aGlzKTsKKyAgICBtX2Rpc3BsYXkg
PSBkaXNwbGF5OworICAgIG1fcmVnaXN0cnkucmVzZXQod2xfZGlzcGxheV9nZXRfcmVnaXN0cnko
bV9kaXNwbGF5KSk7CisgICAgd2xfcmVnaXN0cnlfYWRkX2xpc3RlbmVyKG1fcmVnaXN0cnkuZ2V0
KCksICZzX3JlZ2lzdHJ5TGlzdGVuZXIsIHRoaXMpOwogICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlw
KG1fZGlzcGxheSk7CiAKLSAgICBzdGF0aWMgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNb
XSA9IHsKLSAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX1dJTkRPV19CSVQsCi0gICAgICAg
IEVHTF9SRURfU0laRSwgMSwKLSAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDEsCi0gICAgICAgIEVH
TF9CTFVFX1NJWkUsIDEsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCAxLAotICAgICAgICBFR0xf
UkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0gICAgICAgIEVHTF9OT05FCi0g
ICAgfTsKLQogICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3BsYXkobV9kaXNwbGF5KTsKICAg
ICBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKG1fZWds
RGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRUdMaW50
IG51bWJlck9mQ29uZmlnczsKLSAgICBpZiAoIWVnbENob29zZUNvbmZpZyhtX2VnbERpc3BsYXks
IGNvbmZpZ0F0dHJpYnV0ZXMsICZtX2VnbENvbmZpZywgMSwgJm51bWJlck9mQ29uZmlncykgfHwg
bnVtYmVyT2ZDb25maWdzICE9IDEpIHsKLSAgICAgICAgZ193YXJuaW5nKCJQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gZmluZCB0aGUgZGVzaXJlZCBFR0wg
Y29uZmlndXJhdGlvbi4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fZWdsQ29u
ZmlnQ2hvc2VuID0gdHJ1ZTsKIH0KIAotUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6flBsYXRmb3Jt
RGlzcGxheVdheWxhbmQoKQordm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpyZWdpc3RyeUds
b2JhbChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IG5hbWUpCiB7Ci0gICAgaWYgKG1f
d2Via2l0Z3RrKQotICAgICAgICB3bF93ZWJraXRndGtfZGVzdHJveShtX3dlYmtpdGd0ayk7Ci0g
ICAgaWYgKG1fY29tcG9zaXRvcikKLSAgICAgICAgd2xfY29tcG9zaXRvcl9kZXN0cm95KG1fY29t
cG9zaXRvcik7Ci0gICAgaWYgKG1fcmVnaXN0cnkpCi0gICAgICAgIHdsX3JlZ2lzdHJ5X2Rlc3Ry
b3kobV9yZWdpc3RyeSk7Ci0gICAgaWYgKG1fZGlzcGxheSkKLSAgICAgICAgd2xfZGlzcGxheV9k
aXNjb25uZWN0KG1fZGlzcGxheSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kU3VyZmFj
ZT4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBz
aXplLCBpbnQgd2lkZ2V0SWQpCi17Ci0gICAgc3RydWN0IHdsX3N1cmZhY2UqIHdsU3VyZmFjZSA9
IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9yKTsKLSAgICAvLyBXZSBr
ZWVwIHRoZSBtaW5pbXVtIHNpemUgYXQgMXgxcHggc2luY2UgTWVzYSByZXR1cm5zIG51bGwgdmFs
dWVzIGluIHdsX2VnbF93aW5kb3dfY3JlYXRlKCkgZm9yIHplcm8gd2lkdGggb3IgaGVpZ2h0Lgot
ICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVh
dGUod2xTdXJmYWNlLCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBzaXpl
LmhlaWdodCgpKSk7Ci0KLSAgICB3bF93ZWJraXRndGtfc2V0X3N1cmZhY2VfZm9yX3dpZGdldCht
X3dlYmtpdGd0aywgd2xTdXJmYWNlLCB3aWRnZXRJZCk7Ci0gICAgd2xfZGlzcGxheV9yb3VuZHRy
aXAobV9kaXNwbGF5KTsKLQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdheWxhbmRTdXJm
YWNlPih3bFN1cmZhY2UsIG5hdGl2ZVdpbmRvdyk7CisgICAgaWYgKCFzdGQ6OnN0cmNtcChpbnRl
cmZhY2UsICJ3bF9jb21wb3NpdG9yIikpCisgICAgICAgIG1fY29tcG9zaXRvci5yZXNldChzdGF0
aWNfY2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3JlZ2lzdHJ5X2JpbmQobV9yZWdpc3Ry
eS5nZXQoKSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxKSkpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVT
aGFyaW5nR0xDb250ZXh0KCkKK1dsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKCkgY29uc3QKIHsKLSAgICBjbGFzcyBPZmZz
Y3JlZW5Db250ZXh0RGF0YSA6IHB1YmxpYyBHTENvbnRleHQ6OkRhdGEgewotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB+T2Zmc2NyZWVuQ29udGV4dERhdGEoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobmF0aXZlV2luZG93KTsKLSAgICAgICAgICAg
IHdsX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cnVj
dCB3bF9zdXJmYWNlKiBzdXJmYWNlOwotICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2
ZVdpbmRvdzsKLSAgICB9OwotCi0gICAgYXV0byBjb250ZXh0RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8T2Zmc2NyZWVuQ29udGV4dERhdGE+KCk7Ci0gICAgY29udGV4dERhdGEtPnN1cmZhY2UgPSB3
bF9jb21wb3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7Ci0gICAgY29udGV4dERh
dGEtPm5hdGl2ZVdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKGNvbnRleHREYXRhLT5zdXJm
YWNlLCAxLCAxKTsKKyAgICBpZiAoIW1fY29tcG9zaXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIG5hdGl2ZVdpbmRvdyA9IGNvbnRleHREYXRhLT5uYXRpdmVXaW5kb3c7
Ci0gICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChuYXRpdmVXaW5k
b3csIG51bGxwdHIsIFdURk1vdmUoY29udGV4dERhdGEpKTsKKyAgICByZXR1cm4gV2xVbmlxdWVQ
dHI8c3RydWN0IHdsX3N1cmZhY2U+KHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21w
b3NpdG9yLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0
Zm9ybURpc3BsYXlXYXlsYW5kLmgKaW5kZXggNGNjOTA0NC4uYzE2NTgyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlX
YXlsYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9Q
bGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgKQEAgLTI5LDQ4ICsyOSwzNCBAQAogI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCiAKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKLSNpbmNsdWRlICJXZWJL
aXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSAiV2xVbmlxdWVQdHIuaCIKICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgotI2luY2x1ZGUg
PHdheWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEdMQ29udGV4dEVHTDsKLWNsYXNzIEludFNpemU7Ci1jbGFzcyBXYXlsYW5k
U3VyZmFjZTsKLQotY2xhc3MgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBmaW5hbDogcHVibGljIFBs
YXRmb3JtRGlzcGxheSB7CitjbGFzcyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIDogcHVibGljIFBs
YXRmb3JtRGlzcGxheSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kPiBjcmVhdGUoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
KHN0cnVjdCB3bF9kaXNwbGF5Kik7CiAgICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZCgpOwogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheTsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVT
dXJmYWNlKGNvbnN0IEludFNpemUmLCBpbnQgd2lkZ2V0SUQpOwotCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOworICAgIFdsVW5pcXVl
UHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBtX3JlZ2lzdHJ5
TGlzdGVuZXI7Ci0gICAgc3RhdGljIHZvaWQgZ2xvYmFsQ2FsbGJhY2sodm9pZCogZGF0YSwgc3Ry
dWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlLCB1
aW50MzJfdCB2ZXJzaW9uKTsKLSAgICBzdGF0aWMgdm9pZCBnbG9iYWxSZW1vdmVDYWxsYmFjayh2
b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1lKTsKKyAgICBzdGF0
aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIHNfcmVnaXN0cnlMaXN0ZW5lcjsK
IAotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyAgICBU
eXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OldheWxhbmQ7IH0KIAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjaGVjayBhbHNvIGZvciBt
X3dlYmtpdGd0ayBvbmNlIHRoZSBVSVByb2Nlc3MgZW1iZWRkZWQgV2F5bGFuZCBzdWJjb21wb3Np
dGVyIGlzIGltcGxlbWVudGVkLgotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIG1f
Y29tcG9zaXRvciAmJiBtX2VnbERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgbV9lZ2xDb25m
aWdDaG9zZW47IH0KK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCkgPSBk
ZWZhdWx0OworICAgIHZvaWQgaW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOwogCi0gICAg
VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBl
OjpXYXlsYW5kOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdHJ5R2xvYmFsKGNvbnN0IGNoYXIq
IGludGVyZmFjZSwgdWludDMyX3QgbmFtZSk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogbV9k
aXNwbGF5OwotICAgIHN0cnVjdCB3bF9yZWdpc3RyeSogbV9yZWdpc3RyeTsKLSAgICBzdHJ1Y3Qg
d2xfY29tcG9zaXRvciogbV9jb21wb3NpdG9yOwotICAgIHN0cnVjdCB3bF93ZWJraXRndGsqIG1f
d2Via2l0Z3RrOwotCi0gICAgRUdMQ29uZmlnIG1fZWdsQ29uZmlnOwotICAgIGJvb2wgbV9lZ2xD
b25maWdDaG9zZW47CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3JlZ2lzdHJ5PiBtX3JlZ2lz
dHJ5OworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9jb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMmFkMmYuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3Vy
Y2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2F5bGFuZEV2ZW50U291cmNlLmgiCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdMaWJTb3VyY2UgewotcHVibGljOgotICAgIHZvaWQg
aW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOwotCi0gICAgZ2Jvb2xlYW4gY2hlY2soKTsK
LSAgICBnYm9vbGVhbiBkaXNwYXRjaCgpOwotCi1wcml2YXRlOgotICAgIEdTb3VyY2UgbV9zb3Vy
Y2U7Ci0gICAgR1BvbGxGRCBtX3BvbGxGaWxlRGVzY3JpcHRvcjsKLSAgICBzdHJ1Y3Qgd2xfZGlz
cGxheSogbV9kaXNwbGF5OwotfTsKLQotdm9pZCBHTGliU291cmNlOjppbml0aWFsaXplKHN0cnVj
dCB3bF9kaXNwbGF5KiBkaXNwbGF5KQotewotICAgIG1fZGlzcGxheSA9IGRpc3BsYXk7Ci0gICAg
c3RydWN0IHdsX2V2ZW50X2xvb3AqIGxvb3AgPSB3bF9kaXNwbGF5X2dldF9ldmVudF9sb29wKGRp
c3BsYXkpOwotICAgIG1fcG9sbEZpbGVEZXNjcmlwdG9yLmZkID0gd2xfZXZlbnRfbG9vcF9nZXRf
ZmQobG9vcCk7Ci0gICAgbV9wb2xsRmlsZURlc2NyaXB0b3IuZXZlbnRzID0gR19JT19JTiB8IEdf
SU9fRVJSIHwgR19JT19IVVA7Ci0gICAgZ19zb3VyY2VfYWRkX3BvbGwoJm1fc291cmNlLCAmbV9w
b2xsRmlsZURlc2NyaXB0b3IpOwotCi0gICAgZ19zb3VyY2Vfc2V0X25hbWUoJm1fc291cmNlLCAi
TmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IGV2ZW50IHNvdXJjZSIpOwotICAgIGdf
c291cmNlX3NldF9wcmlvcml0eSgmbV9zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7Ci0gICAg
Z19zb3VyY2Vfc2V0X2Nhbl9yZWN1cnNlKCZtX3NvdXJjZSwgVFJVRSk7Ci0gICAgZ19zb3VyY2Vf
YXR0YWNoKCZtX3NvdXJjZSwgbnVsbHB0cik7Ci19Ci0KLWdib29sZWFuIEdMaWJTb3VyY2U6OmNo
ZWNrKCkKLXsKLSAgICByZXR1cm4gbV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50czsKLX0KLQot
Z2Jvb2xlYW4gR0xpYlNvdXJjZTo6ZGlzcGF0Y2goKQotewotICAgIGlmIChtX3BvbGxGaWxlRGVz
Y3JpcHRvci5yZXZlbnRzICYgR19JT19JTikgewotICAgICAgICBzdHJ1Y3Qgd2xfZXZlbnRfbG9v
cCogbG9vcCA9IHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AobV9kaXNwbGF5KTsKLSAgICAgICAg
d2xfZXZlbnRfbG9vcF9kaXNwYXRjaChsb29wLCAtMSk7Ci0gICAgICAgIHdsX2Rpc3BsYXlfZmx1
c2hfY2xpZW50cyhtX2Rpc3BsYXkpOwotICAgICAgICBtX3BvbGxGaWxlRGVzY3JpcHRvci5yZXZl
bnRzID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50cyAm
IChHX0lPX0VSUiB8IEdfSU9fSFVQKSkKLSAgICAgICAgZ193YXJuaW5nKCJXYXlsYW5kIERpc3Bs
YXkgRXZlbnQgU291cmNlOiBsb3N0IGNvbm5lY3Rpb24gdG8gbmVzdGVkIFdheWxhbmQgY29tcG9z
aXRvciIpOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBwcmVwYXJl
Q2FsbGJhY2soR1NvdXJjZSosIGdpbnQqIHRpbWVvdXQpCi17Ci0gICAgKnRpbWVvdXQgPSAtMTsK
LSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBjaGVja0NhbGxiYWNrKEdT
b3VyY2UqIGJhc2UpCi17Ci0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PEdMaWJT
b3VyY2UqPihiYXNlKTsKLSAgICByZXR1cm4gc291cmNlLT5jaGVjaygpOwotfQotCi1zdGF0aWMg
Z2Jvb2xlYW4gZGlzcGF0Y2hDYWxsYmFjayhHU291cmNlKiBiYXNlLCBHU291cmNlRnVuYywgZ3Bv
aW50ZXIpCi17Ci0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PEdMaWJTb3VyY2Uq
PihiYXNlKTsKLSAgICByZXR1cm4gc291cmNlLT5kaXNwYXRjaCgpOwotfQotCi1zdGF0aWMgR1Nv
dXJjZUZ1bmNzIHdheWxhbmRHTGliU291cmNlRnVuY3MgPSB7Ci0gICAgcHJlcGFyZUNhbGxiYWNr
LAotICAgIGNoZWNrQ2FsbGJhY2ssCi0gICAgZGlzcGF0Y2hDYWxsYmFjaywKLSAgICBudWxscHRy
LCAvLyBmaW5hbGl6ZQotICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfY2FsbGJhY2sKLSAgICBudWxs
cHRyLCAvLyBjbG9zdXJlX21hcnNoYWxsCi19OwotCi1HU291cmNlKiBXYXlsYW5kRXZlbnRTb3Vy
Y2U6OmNyZWF0ZURpc3BsYXlFdmVudFNvdXJjZShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkK
LXsKLSAgICBHU291cmNlKiBiYXNlID0gZ19zb3VyY2VfbmV3KCZ3YXlsYW5kR0xpYlNvdXJjZUZ1
bmNzLCBzaXplb2YoR0xpYlNvdXJjZSkpOwotCi0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJl
dF9jYXN0PEdMaWJTb3VyY2UqPihiYXNlKTsKLSAgICBzb3VyY2UtPmluaXRpYWxpemUoZGlzcGxh
eSk7Ci0KLSAgICByZXR1cm4gYmFzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MWFiMTkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldheWxhbmRTdXJmYWNl
LmgiCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi0jaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgi
Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVdheWxhbmQu
aCIKLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBm
cmFtZUNhbGxiYWNrKHZvaWQqLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGNhbGxiYWNrLCB1aW50MzJf
dCkKLXsKLSAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2Fs
bGJhY2spOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGZy
YW1lTGlzdGVuZXIgPSB7Ci0gICAgZnJhbWVDYWxsYmFjawotfTsKLQotV2F5bGFuZFN1cmZhY2U6
OldheWxhbmRTdXJmYWNlKHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UsIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgbmF0aXZlV2luZG93KQotICAgIDogbV93bFN1cmZhY2Uod2xTdXJmYWNlKQotICAg
ICwgbV9uYXRpdmVXaW5kb3cobmF0aXZlV2luZG93KQotewotfQotCi1XYXlsYW5kU3VyZmFjZTo6
fldheWxhbmRTdXJmYWNlKCkKLXsKLSAgICAvLyBUaGUgc3VyZmFjZSBjb3VsZG4ndCBoYXZlIGJl
ZW4gY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UgaWYgV2F5bGFuZERpc3BsYXkgd2Fzbid0IHBy
b3Blcmx5IGluaXRpYWxpemVkLgotICAgIGNvbnN0IFBsYXRmb3JtRGlzcGxheVdheWxhbmQmIHdh
eWxhbmREaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOwotICAgIEFTU0VSVCh3YXlsYW5kRGlzcGxheS5uYXRp
dmUoKSk7Ci0gICAgZWdsTWFrZUN1cnJlbnQod2F5bGFuZERpc3BsYXkubmF0aXZlKCksIEVHTF9O
T19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotCi0gICAgd2xfZWds
X3dpbmRvd19kZXN0cm95KG1fbmF0aXZlV2luZG93KTsKLSAgICB3bF9zdXJmYWNlX2Rlc3Ryb3ko
bV93bFN1cmZhY2UpOwotfQotCi12b2lkIFdheWxhbmRTdXJmYWNlOjpyZXNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKLXsKLSAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX25hdGl2ZVdpbmRvdywg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29udGV4dCgpCi17Ci0gICAg
cmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChtX25hdGl2ZVdpbmRvdywg
R0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKLX0KLQotdm9pZCBXYXlsYW5kU3VyZmFjZTo6
cmVxdWVzdEZyYW1lKCkKLXsKLSAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGZyYW1lQ2FsbGJhY2sg
PSB3bF9zdXJmYWNlX2ZyYW1lKG1fd2xTdXJmYWNlKTsKLSAgICB3bF9jYWxsYmFja19hZGRfbGlz
dGVuZXIoZnJhbWVDYWxsYmFjaywgJmZyYW1lTGlzdGVuZXIsIHRoaXMpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZDJkYWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dsVW5pcXVl
UHRyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNs
dWRlIDx3YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorI2luY2x1ZGUgPHdheWxhbmQtc2VydmVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBXbFB0ckRlbGV0ZXIgeworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFdsVW5p
cXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFdsUHRyRGVsZXRlcjxUPj47CisKKyNkZWZpbmUg
Rk9SX0VBQ0hfV0FZTEFORF9ERUxFVEVSKG1hY3JvKSBcCisgICAgbWFjcm8oc3RydWN0IHdsX2Rp
c3BsYXksIHdsX2Rpc3BsYXlfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9nbG9iYWws
IHdsX2dsb2JhbF9kZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX3N1cmZhY2UsIHdsX3N1
cmZhY2VfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9jb21wb3NpdG9yLCB3bF9jb21w
b3NpdG9yX2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfcmVnaXN0cnksIHdsX3JlZ2lz
dHJ5X2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfcHJveHksIHdsX3Byb3h5X2Rlc3Ry
b3kpCisKKyNkZWZpbmUgREVGSU5FX1dBWUxBTkRfREVMRVRFUih0eXBlTmFtZSwgZGVsZXRlckZ1
bmMpIFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBXbFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAg
ICB7IFwKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCB7IGRl
bGV0ZXJGdW5jKHB0cik7IH0gXAorICAgIH07CisKK0ZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUihE
RUZJTkVfV0FZTEFORF9ERUxFVEVSKQorI3VuZGVmIEZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUgor
I3VuZGVmIERFRklORV9XQVlMQU5EX0RFTEVURVIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0YjFjZjZi
Li5kYzIwZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDgtMTYg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGRvZXMgbm90IHdvcmsgaW4gV2F5bGFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRvIHRo
ZSBuZXcgR0xDb250ZXh0IEFQSS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKToKKwogMjAxNi0wOC0yMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVz
ZSBEb2N1bWVudCYgaW5zdGVhZCBvZiBEb2N1bWVudCogd2hlbiBnZXR0aW5nIGNvb2tpZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCA5YTI2ZDkyLi4xNzgxN2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSgpCiAKICAgICAv
LyBUaGUgY3JlYXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5H
TCBjb250ZXh0LgogICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICBtX2NvbnRleHQgPSBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKSk7CisgICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhtX3dpbmRvdyk7CiAKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjgyLDcgKzI4Miw3IEBAIGJvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBDcmVhdGUgR0wgY29udGV4dC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KHRlc3RXaW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRl
Q29udGV4dEZvcldpbmRvdyh0ZXN0V2luZG93KTsKIAogICAgIGlmICghY29udGV4dCkgewogICAg
ICAgICA6OkRlc3Ryb3lXaW5kb3codGVzdFdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmNjZDVkNS4u
YmFiMzAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NSBAQAorMjAxNi0wOC0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgZG9lcyBub3Qgd29yayBpbiBXYXlsYW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBpbml0aWFs
IGltcGxlbWVudGF0aW9uIG9mIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHN1cHBvcnQgaW4gV2F5
bGFuZCBmb3IgdGhlIEdUSysgcG9ydC4gSXQncyBiYXNlZAorICAgICAgICBvbiBwcmV2aW91cyBw
YXRjaGVzIHdyaXR0ZW4gYnkgSWFnbyBUb3JhbCwgxb1hbiBEb2JlcsWhZWssIEVtYW51ZWxlIEFp
bmEgYW5kIEVtaWxpbyBQb3p1ZWxvIE1vbmZvcnQuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIFdl
YktpdEdUSysgV2F5bGFuZCBpbnRlcmZhY2UgcHJldmlvdXNseSBhZGRlZCBmb3IgdGhpcyB0byBX
ZWJDb3JlIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBXZWJLaXQyCisgICAgICAgIGxheWVyLCBzaW5j
ZSBpdCdzIGFjdHVhbGx5IHNwZWNpZmljIHRvIFdlYktpdDIsIGFuZCBpdCdzIG5vdyBhY3R1YWxs
eSB1c2VkLiBUaGUgVUkgcHJvY2VzcyBydW5zIGEgbmVzdGVkIFdheWxhbmQKKyAgICAgICAgY29t
cG9zaXRvciB0aGF0IHdlYiBwcm9jZXNzZXMgY29ubmVjdCB0by4gV2ViIHByb2Nlc3NlcyBjcmVh
dGUgYSBXYXlsYW5kIHN1cmZhY2UgaW4gdGhlIG5lc3RlZCBjb21wb3NpdG9yIGZvcgorICAgICAg
ICB0aGUgd2ViIHBhZ2UsIGFuZCB1c2luZyB0aGUgV2ViS2l0R1RLKyBXYXlsYW5kIHByb3RvY29s
IGludGVyZmFjZSB0aGV5IHRlbGwgdGhlIG5lc3RlZCBjb21wb3NpdG9yIHRoZSB3ZWIgcGFnZQor
ICAgICAgICBhc3NvY2lhdGVkIHRvIHRoZSBzdXJmYWNlLiBBIFdheWxhbmQgd2luZG93IGlzIGNy
ZWF0ZWQgZm9yIHRoYXQgc3VyZmFjZSB0aGF0IGlzIHRoZW4gdXNlZCBhcyB0aGUgbmF0aXZlIHdp
bmRvdworICAgICAgICBoYW5kbGUgZm9yIGNvbXBvc2l0aW5nLiBUbyBjb21tdW5pY2F0ZSB3aXRo
IHRoZSBuZXN0ZWQgY29tcG9zaXRvciBhbmQgdG8gZW5zdXJlIGFsbCBHTCBvcGVyYXRpb25zIGhh
cHBlbiBpbiB0aGUKKyAgICAgICAgbmVzdGVkIGNvbXBvc2l0b3IgZGlzcGxheSwgdGhlIHdlYiBw
cm9jZXNzIGNyZWF0ZXMgYSBXYXlsYW5kIGRpc3BsYXkgdGhhdCBjb25uZWN0cyB0byB0aGUgbmVz
dGVkIGNvbXBvc2l0b3IsCisgICAgICAgIHVzZXMgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBpbnRl
cmZhY2UgYW5kIGl0J3Mgc2V0IGFzIHRoZSBnbG9iYWwgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBv
c2l0aW5nLgorCisgICAgICAgIFRoZSBuZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNyZWF0ZXMg
YSBuZXcgZGlzcGxheSB3aXRoIGEgdW5pcXVlIG5hbWUgdGhhdCBpcyBzZW50IHRvIHRoZSB3ZWIg
cHJvY2Vzc2VzIGF0CisgICAgICAgIHN0YXJ0IHVwLiBJdCBpbXBsZW1lbnRzIHRoZSBXYXlsYW5k
IHN1cmZhY2UgaW50ZXJmYWNlIHRvIGhhbmRsZSB0aGUgV2F5bGFuZCBidWZmZXJzIGNyZWF0ZWQg
Zm9yIGV2ZXJ5IHN1cmZhY2UKKyAgICAgICAgYW5kIHNjaGVkdWxpbmcgcmVkcmF3cyBvbiB0aGUg
d2ViIHBhZ2VzIHdoZW4gdXBkYXRlcyBhcmUgYXZhaWxhYmxlLiBJdCB1c2VzIHRoZSBXZWJLaXRH
VEsrIFdheWxhbmQgaW50ZXJmYWNlIHRvCisgICAgICAgIGFzc29jaWF0ZSB0aGUgc3VyZmFjZXMg
dG8gYSBwYXJ0aWN1bGFyIHdlYiBwYWdlLiBBIHRleHR1cmUgaXMgY3JlYXRlZCBmb3IgZXZlcnkg
c3VyZmFjZSBhbmQgdXBkYXRlZCB3aXRoIHRoZQorICAgICAgICBXYXlsYW5kIGJ1ZmZlciBjb250
ZW50cyB1c2luZyBhbiBFR0xJbWFnZUtIUiBhbmQgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMmQgQVBJ
LgorCisgICAgICAgIFRvIGFic3RyYWN0IHRoZSBwbGF0Zm9ybSBkaWZmZXJlbmNlcyBhbmQgYXZv
aWQgaWZkZWZzIGFzIG11Y2ggYXMgcG9zc2libGUsIG5ldyBhYnN0cmFjdCBjbGFzc2VzIGhhdmUg
YmVlbiBhZGRlZAorICAgICAgICB0byByZXByZXNlbnQgdGhlIHN1cmZhY2VzIHVzZWQgaW4gYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcuIEFjY2VsZXJhdGVkU3VyZmFjZSBpcyB1c2VkIGJ5IHRoZSB3
ZWIgcHJvY2VzcyBhbmQKKyAgICAgICAgcmVwcmVzZW50cyB0aGUgc3VyZmFjZSB3aGVyZSBjb250
ZW50cyBhcmUgcmVuZGVyZWQgaW50by4gVGhlIFgxMSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgcmVk
aXJlY3RlZCBYQ29tcG9zaXRlCisgICAgICAgIHdpbmRvdywgYW5kIHRoZSBXYXlsYW5kIGltcGxl
bWVudGF0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIFdheWxhbmQgc3VyZmFjZSBh
ZGRlZCB0byBXZWJDb3JlIGJ1dCBuZXZlcgorICAgICAgICB1c2VkLiBJbiB0aGUgVUkgcHJvY2Vz
cyB0aGUgd2ViIHZpZXcgY3JlYXRlcyBhbiBhYnN0cmFjdCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZSB0aGF0IGlzIHVzZWQgdG8gcmVuZGVyIHRoZQorICAgICAgICBBY2NlbGVyYXRlZFN1cmZhY2Ug
aW50byB0aGUgd2ViIHZpZXcgdXNpbmcgY2Fpcm8uIFRoZSBYMTEgaW1wbGVtZW50YXRpb24gY3Jl
YXRlcyB0aGUgY2Fpcm8gc3VyZmFjZSBmb3IgdGhlCisgICAgICAgIHJlZGlyZWN0ZWQgWENvbXBv
c2l0ZSB3aW5kb3cgcGl4bWFwIGFuZCB1c2VzIFhEYW1hZ2UgZXh0ZW5zaW9uIHRvIHNjaGVkdWxl
IHJlZHJhd3MuIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uCisgICAgICAgIGFza3MgdGhlIG5l
c3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgZm9yIHRoZSB0ZXh0dXJlIGFzc29jaWF0ZWQgdG8gdGhl
IHdlYiB2aWV3IHBhZ2UuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm93
IGFsd2F5cyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gYm90aCBYMTEgYW5kIFdheWxhbmQsIHVubGVz
cyBpdCdzIGV4cGxpY2l0bHkKKyAgICAgICAgZGlzYWJsZWQgYnkgdGhlIHVzZXIgdXNpbmcgdGhl
IFdFQktJVF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9y
IGlmIGFueSBleHRlbnNpb24gb3IKKyAgICAgICAgZmVhdHVyZSByZXF1aXJlZCBieSBYMTEgb3Ig
V2F5bGFuZCBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VGhyZWFkZWRDb21wb3NpdG9yOjpnbENvbnRleHQpOiBQYXNzIHRoZSBzaGFyZWQgZGlzcGxh
eSBmb3IgY29tcG9zaXRpbmcgdG8gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KCkK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEVuY29k
ZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBEZWNvZGUgd2F5bGFuZCBjb21wb3Np
dG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oOiBBZGQgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZSBpbml0aWFsIHBh
cmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UpOgorICAgICAgICAod2Via2l0
V2ViVmlld0Jhc2VEcmF3KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVcGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB0aGUgd2F5
bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZSBpbml0aWFsIHBhcmFtZXRlci4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6fkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6
OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6dXBk
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjp+QWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kOjpwYWludCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVgxMS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdl
Tm90aWZpZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6
YWRkKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlmaWVyOjpyZW1vdmUpOgorICAgICAg
ICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OmZpbHRlclhEYW1hZ2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6bm90aWZ5KToKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlWDExOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp+QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVYMTEpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6
OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
WDExLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRv
bik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6QnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmRlc3Ryb3lMaXN0
ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZl
cjo6dXNlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6dW51
c2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpjcmVhdGVJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnNpemUp
OgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6U3VyZmFjZSk6
CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjp+U3VyZmFjZSk6
CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjptYWtlUGVuZGlu
Z0J1ZmZlckN1cnJlbnQpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZTo6YXR0YWNoQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6
OlN1cmZhY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3Np
dG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OmNvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6
OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKFdlYktpdDo6Y3Jl
YXRlV2F5bGFuZExvb3BTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRv
cjo6V2F5bGFuZENvbXBvc2l0b3IpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRv
cjo6Z2V0VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpiaW5k
U3VyZmFjZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6dW5y
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6
OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZTo6c2V0V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpp
c1J1bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6ZGlzcGxheU5h
bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNj
ZWxlcmF0ZWRTdXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
U3VyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpB
Y2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6
On5BY2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZh
Y2U6OnJlc2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRl
ZFN1cmZhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6
d2luZG93KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpzdXJmYWNlSUQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpBY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZDo6fkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpyZXNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmNwcC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlWDEx
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OkFjY2Vs
ZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZVgx
MTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
U3VyZmFjZVgxMTo6cmVzaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0Fj
Y2VsZXJhdGVkU3VyZmFjZVgxMS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGspOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpSZW5kZXJGcmFtZVNj
aGVkdWxlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXll
clRyZWVIb3N0R3RrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0aWFs
aXplIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3YXlsYW5k
Q29tcG9zaXRvckRpc3BsYXlOYW1lKTogUmV0dXJuIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlz
cGxheSBuYW1lLgorCiAyMDE2LTA4LTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICBXVFIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2V0QXV0b21h
dGljTGlua0RldGVjdGlvbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzQz
ZTk2Yi4uMDk4MGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTI5NSwxMyArMjk1
LDE2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9nc3RyZWFt
ZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKICAgICBV
SVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKIAorICAgIFVJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9B
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcAog
ICAgIFVJUHJvY2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL2d0
ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFu
c2xhdG9yLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCi0gICAgVUlQ
cm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1dlYkNvbG9yUGlja2VyR3RrLmNwcAog
ICAgIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKICAgICBVSVByb2Nl
c3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGllbnRHdGsuY3BwCkBAIC0zNTAsOCArMzUzLDEwIEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2dzdHJl
YW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2UuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVy
YXRlZFN1cmZhY2VXYXlsYW5kLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxl
cmF0ZWRTdXJmYWNlWDExLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxp
c3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3Rr
LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtMzY4LDYgKzM3
Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L0luc3BlY3RvckdSZXNvdXJjZUJ1bmRsZS5jCiAgICAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJJbnNwZWN0b3JHUmVzb3Vy
Y2VCdW5kbGUuYwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQy
UmVzb3VyY2VzR1Jlc291cmNlQnVuZGxlLmMKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQy
R1RLX0RJUn0vV2ViS2l0MldheWxhbmRDbGllbnRQcm90b2NvbC5jCiAKICAgICAke0RFUklWRURf
U09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9L1dlYktpdEVudW1UeXBlcy5jcHAKICAgICAke0RF
UklWRURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9L1dlYktpdE1hcnNoYWwuY3BwCkBAIC02
ODQsNiArNjkwLDE3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBWRVJCQVRJTQogKQogCitp
ZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQorICAgICMgV2F5bGFuZCBwcm90b2NvbCBleHRlbnNp
b24uCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYworICAg
ICAgICBERVBFTkRTICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90
b2NvbC54bWwKKyAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgc2VydmVyLWhlYWRlciA8
ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwgPiAk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MldheWxhbmRTZXJ2ZXJQcm90
b2NvbC5oCisgICAgICAgIENPTU1BTkQgd2F5bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIgPCAk
e1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sID4gJHtE
RVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9j
b2wuaAorICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBjb2RlIDwgJHtXRUJLSVQyX0RJ
Un0vU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9TT1VS
Q0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmMKKyAgICAp
CitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgc2V0KFBs
dWdpblByb2Nlc3NHVEsyX0VYRUNVVEFCTEVfTkFNRSBXZWJLaXRQbHVnaW5Qcm9jZXNzMikKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcAppbmRleCAzNDUyNDI4Li41NGE2MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAogI2lu
Y2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiAj
aWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtNDEsMTQgKzQyLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4g
VGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50KiBjbGllbnQsIHVpbnQ2NF90IG5hdGl2
ZVN1cmZhY2VIYW5kbGUpCitSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0
b3I6OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRsZSwg
U2hvdWxkRG9GcmFtZVN5bmMgZG9GcmFtZVN5bmMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGhyZWFkZWRDb21wb3NpdG9yKGNsaWVudCwgbmF0aXZlU3VyZmFjZUhhbmRsZSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVhZGVkQ29tcG9zaXRvcihjbGllbnQsIG5hdGl2ZVN1
cmZhY2VIYW5kbGUsIGRvRnJhbWVTeW5jKSk7CiB9CiAKLVRocmVhZGVkQ29tcG9zaXRvcjo6VGhy
ZWFkZWRDb21wb3NpdG9yKENsaWVudCogY2xpZW50LCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFu
ZGxlKQorVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50KiBjbGll
bnQsIHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUsIFNob3VsZERvRnJhbWVTeW5jIGRvRnJh
bWVTeW5jKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9uYXRpdmVTdXJmYWNlSGFu
ZGxlKG5hdGl2ZVN1cmZhY2VIYW5kbGUpCisgICAgLCBtX2RvRnJhbWVTeW5jKGRvRnJhbWVTeW5j
KQogICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3Aoc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGlu
Z1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKIHsKICAgICBtX2NvbXBv
c2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKQEAgLTE2NCwzNCArMTY2LDI1IEBAIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpCiAgICAgbV9jb21wb3NpdGluZ1J1bkxv
b3AtPnN0YXJ0VXBkYXRlVGltZXIoQ29tcG9zaXRpbmdSdW5Mb29wOjpJbW1lZGlhdGUpOwogfQog
Ci1ib29sIFRocmVhZGVkQ29tcG9zaXRvcjo6dHJ5RW5zdXJlR0xDb250ZXh0KCkKK2Jvb2wgVGhy
ZWFkZWRDb21wb3NpdG9yOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIGlmICghZ2xDb250
ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIGdsQ29udGV4
dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICAvLyBUaGUgd2luZG93IHNpemUgbWF5IGJl
IG91dCBvZiBzeW5jIHdpdGggdGhlIHBhZ2Ugc2l6ZSBhdCB0aGlzIHBvaW50LCBhbmQgZ2V0dGlu
ZwotICAgIC8vIHRoZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGluY29ycmVjdCwgbWVhbnMgdGhhdCB0
aGUgY29udGVudCB3aWxsIGJlIG1pc3BsYWNlZC4gVGh1cwotICAgIC8vIHdlIHNldCB0aGUgdmll
d3BvcnQgcGFyYW1ldGVycyBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cgc2l6ZS4KLSAgICBJbnRT
aXplIGNvbnRleHRTaXplID0gZ2xDb250ZXh0KCktPmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsK
LSAgICBpZiAobV92aWV3cG9ydFNpemUgIT0gY29udGV4dFNpemUpIHsKLSAgICAgICAgZ2xWaWV3
cG9ydCgwLCAwLCBjb250ZXh0U2l6ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgICAgIG1fdmlld3BvcnRTaXplID0gY29udGV4dFNpemU7Ci0gICAgfQorICAgIGlmICghbV9u
YXRpdmVTdXJmYWNlSGFuZGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KKyAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5k
b3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1fbmF0aXZlU3VyZmFjZUhh
bmRsZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsK
KyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1HTENvbnRleHQq
IFRocmVhZGVkQ29tcG9zaXRvcjo6Z2xDb250ZXh0KCkKLXsKLSAgICBpZiAobV9jb250ZXh0KQot
ICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtX25h
dGl2ZVN1cmZhY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChtX2Rv
RnJhbWVTeW5jID09IFNob3VsZERvRnJhbWVTeW5jOjpObykKKyAgICAgICAgbV9jb250ZXh0LT5z
d2FwSW50ZXJ2YWwoMCk7CiAKLSAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRl
eHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1fbmF0aXZl
U3VyZmFjZUhhbmRsZSksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmZvcmNlUmVwYWludCgpCkBAIC0yMTYsOSArMjA5LDE4IEBAIHZvaWQgVGhyZWFk
ZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIGlmICghbV9zY2VuZSB8fCAhbV9z
Y2VuZS0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0cnlFbnN1cmVH
TENvbnRleHQoKSkKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICAvLyBUaGUgd2luZG93IHNpemUgbWF5IGJlIG91dCBvZiBzeW5jIHdpdGggdGhl
IHBhZ2Ugc2l6ZSBhdCB0aGlzIHBvaW50LCBhbmQgZ2V0dGluZworICAgIC8vIHRoZSB2aWV3cG9y
dCBwYXJhbWV0ZXJzIGluY29ycmVjdCwgbWVhbnMgdGhhdCB0aGUgY29udGVudCB3aWxsIGJlIG1p
c3BsYWNlZC4gVGh1cywKKyAgICAvLyB3ZSBzZXQgdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgZGly
ZWN0bHkgZnJvbSB0aGUgd2luZG93IHNpemUuCisgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9IG1f
Y29udGV4dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOworICAgIGlmIChtX3ZpZXdwb3J0U2l6
ZSAhPSBjb250ZXh0U2l6ZSkgeworICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGNvbnRleHRTaXpl
LndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV92aWV3cG9ydFNpemUg
PSBjb250ZXh0U2l6ZTsKKyAgICB9CisKICAgICBGbG9hdFJlY3QgY2xpcFJlY3QoMCwgMCwgbV92
aWV3cG9ydFNpemUud2lkdGgoKSwgbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwogCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdmlld3BvcnRUcmFuc2Zvcm07CkBAIC0yMzIsNyArMjM0LDcgQEAg
dm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgfQogICAgIG1f
c2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCAxLCBjbGlw
UmVjdCwgQ29sb3I6OnRyYW5zcGFyZW50LCAhbV9kcmF3c0JhY2tncm91bmQsIHNjcm9sbFBvc3Rp
b24pOwogCi0gICAgZ2xDb250ZXh0KCktPnN3YXBCdWZmZXJzKCk7CisgICAgbV9jb250ZXh0LT5z
d2FwQnVmZmVycygpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2NlbmVT
dGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4
IDA0MmM2OWYuLjYzNjg0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTU3LDcgKzU3LDkgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gY3JlYXRlKENsaWVudCosIHVpbnQ2NF90IG5hdGl2
ZVN1cmZhY2VIYW5kbGUgPSAwKTsKKyAgICBlbnVtIGNsYXNzIFNob3VsZERvRnJhbWVTeW5jIHsg
Tm8sIFllcyB9OworCisgICAgc3RhdGljIFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IGNyZWF0ZShD
bGllbnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlID0gMCwgU2hvdWxkRG9GcmFtZVN5
bmMgPSBTaG91bGREb0ZyYW1lU3luYzo6WWVzKTsKICAgICB2aXJ0dWFsIH5UaHJlYWRlZENvbXBv
c2l0b3IoKTsKIAogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5n
KHVpbnQ2NF90KTsKQEAgLTc3LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yY2VSZXBh
aW50KCk7CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCosIHVpbnQ2
NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUpOworICAgIFRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQq
LCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0ZyYW1lU3luYyk7CiAKICAg
ICAvLyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQKICAgICB2b2lkIHJlbmRlck5leHRG
cmFtZSgpIG92ZXJyaWRlOwpAQCAtOTAsOCArOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVu
ZGVyTGF5ZXJUcmVlKCk7CiAgICAgdm9pZCBzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpOwog
Ci0gICAgYm9vbCB0cnlFbnN1cmVHTENvbnRleHQoKTsKLSAgICBXZWJDb3JlOjpHTENvbnRleHQq
IGdsQ29udGV4dCgpOworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBDbGll
bnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU+IG1fc2NlbmU7CkBAIC0xMDIsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBt
X2RldmljZVNjYWxlRmFjdG9yIHsgMSB9OwogICAgIGJvb2wgbV9kcmF3c0JhY2tncm91bmQgeyB0
cnVlIH07CiAgICAgdWludDY0X3QgbV9uYXRpdmVTdXJmYWNlSGFuZGxlOworICAgIFNob3VsZERv
RnJhbWVTeW5jIG1fZG9GcmFtZVN5bmM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcG9zaXRp
bmdSdW5Mb29wPiBtX2NvbXBvc2l0aW5nUnVuTG9vcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOWVi
YjQzZC4uMjE5OGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTQ1LDYgKzE0NSwxMCBAQCB2b2lkIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAjaWYgT1MoTElOVVgpCiAgICAgZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZU1vbml0
b3JIYW5kbGU7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgZW5jb2RlciA8
PCB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2VuZGlmCiB9CiAKIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTMwNSw2ICszMDksMTEg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZmYyMDA1Yy4u
YzI2YzRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNzAsNiArMTcwLDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBPUyhMSU5VWCkKICAgICBJUEM6OkF0dGFjaG1lbnQg
bWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXQVlM
QU5EKQorICAgIFN0cmluZyB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnht
bCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwK
c2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1s
CmluZGV4IDEzMWE5M2MuLjEyNDYxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnhtbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1s
CkBAIC0yNyw5ICsyNyw5IEBACiAgIDwvY29weXJpZ2h0PgogCiAgIDxpbnRlcmZhY2UgbmFtZT0i
d2xfd2Via2l0Z3RrIiB2ZXJzaW9uPSIxIj4KLSAgICA8cmVxdWVzdCBuYW1lPSJzZXRfc3VyZmFj
ZV9mb3Jfd2lkZ2V0Ij4KKyAgICA8cmVxdWVzdCBuYW1lPSJiaW5kX3N1cmZhY2VfdG9fcGFnZSI+
CiAgICAgICA8YXJnIG5hbWU9InN1cmZhY2UiIHR5cGU9Im9iamVjdCIgaW50ZXJmYWNlPSJ3bF9z
dXJmYWNlIi8+Ci0gICAgICA8YXJnIG5hbWU9ImlkIiB0eXBlPSJ1aW50Ii8+CisgICAgICA8YXJn
IG5hbWU9InBhZ2VfaWQiIHR5cGU9InVpbnQiLz4KICAgICA8L3JlcXVlc3Q+CiAKICAgPC9pbnRl
cmZhY2U+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYWQzODE0MC4uMDZhZjA1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAKICNpbmNs
dWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJJ
bnB1dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgiCkBA
IC03MiwyMyArNzMsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lmgi
CiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotI2luY2x1
ZGUgIlhEYW1hZ2VOb3RpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5
WDExLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxY
MTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KLSNpbmNsdWRl
IDxjYWlyby14bGliLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxn
ZGsvZ2RreC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotI2luY2x1ZGUgPGdk
ay9nZGt3YXlsYW5kLmg+Ci0jZW5kaWYKLQogLy8gZ3RrX3dpZGdldF9nZXRfc2NhbGVfZmFjdG9y
KCkgYXBwZWFyZWQgaW4gR1RLIDMuMTAsIGJ1dCB3ZSBhbHNvIG5lZWQKIC8vIHRvIG1ha2Ugc3Vy
ZSB3ZSBoYXZlIGNhaXJvIG5ldyBlbm91Z2ggdG8gc3VwcG9ydCBjYWlyb19zdXJmYWNlX3NldF9k
ZXZpY2Vfc2NhbGUKICNkZWZpbmUgSEFWRV9HVEtfU0NBTEVfRkFDVE9SIEhBVkVfQ0FJUk9fU1VS
RkFDRV9TRVRfREVWSUNFX1NDQUxFICYmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQpAQCAt
MjExLDEwICsxOTksNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAg
dW5zaWduZWQgc2NyZWVuU2F2ZXJDb29raWU7CiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVDVEVE
X1hDT01QT1NJVEVfV0lORE9XKQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdTdXJmYWNlOwotICAgIFhVbmlxdWVEYW1hZ2UgYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1N1cmZhY2VEYW1hZ2U7Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmU+IGFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOwogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0FuZERyb3BIYW5kbGVyPiBk
cmFnQW5kRHJvcEhhbmRsZXI7CkBAIC0zNTEsNTAgKzMzNiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmllCiAgICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IGdfc2lnbmFs
X2Nvbm5lY3Rfc3dhcHBlZCh3aW5kb3csICJyZWFsaXplIiwgR19DQUxMQkFDSyh0b3BsZXZlbFdp
bmRvd1JlYWxpemVkKSwgd2ViVmlld0Jhc2UpOwogfQogCi0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdQaXhtYXAoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIFBpeG1hcCBw
aXhtYXApCi17Ci0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUo
KSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBpZiAo
cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UKLSAgICAgICAgJiYgY2Fpcm9feGxp
Yl9zdXJmYWNlX2dldF9kcmF3YWJsZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFj
ZS5nZXQoKSkgPT0gcGl4bWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UpIHsKLSAgICAgICAgaWYgKHByaXYtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlKSB7Ci0gICAgICAgICAgICBYRGFtYWdlTm90aWZp
ZXI6OnNpbmdsZXRvbigpLnJlbW92ZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFj
ZURhbWFnZS5nZXQoKSk7Ci0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
U3VyZmFjZURhbWFnZS5yZXNldCgpOwotICAgICAgICB9Ci0gICAgICAgIHByaXYtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdTdXJmYWNlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIXBpeG1h
cCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdB
cmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCkpOwotICAgIGlmICghZHJhd2luZ0FyZWEpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEludFNpemUgc2l6ZSA9IGRyYXdpbmdBcmVhLT5zaXplKCk7Ci0gICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBwcml2LT5wYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0g
ICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBEaXNwbGF5KiBkaXNwbGF5
ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IEdES19ESVNQ
TEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsKLSAgICBHZGtWaXN1YWwq
IHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1
bHQoKSk7Ci0gICAgaWYgKCF2aXN1YWwpCi0gICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0
X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAgICBwcml2LT5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9j
cmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUo
cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlRmFj
dG9yLCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1N1cmZhY2VEYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgWERhbWFnZVJl
cG9ydE5vbkVtcHR5KTsKLSAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZChwcml2
LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZS5nZXQoKSwgW3dlYlZpZXddIHsK
LSAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQod2ViVmlldykpOwotICAg
IH0pOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShH
dGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdF
QktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC01NjQsOSArNTA1LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKEdPYmplY3QqIGdvYmplY3QpCiAgICAgZ19jYW5j
ZWxsYWJsZV9jYW5jZWwod2ViVmlldy0+cHJpdi0+c2NyZWVuU2F2ZXJJbmhpYml0Q2FuY2VsbGFi
bGUuZ2V0KCkpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRv
dyh3ZWJWaWV3LCBudWxscHRyKTsKICAgICB3ZWJWaWV3LT5wcml2LT5wYWdlUHJveHktPmNsb3Nl
KCk7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYlZpZXcsIDApOwotI2Vu
ZGlmCisgICAgd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgPSBudWxscHRy
OwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcykt
PmRpc3Bvc2UoZ29iamVjdCk7CiB9CiAKQEAgLTU4NSw1NSArNTI0LDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+
YXV0aGVudGljYXRpb25EaWFsb2cgPSAwOwogfQogCi1zdGF0aWMgYm9vbCB3ZWJraXRXZWJWaWV3
UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlLCBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEsIGNhaXJvX3QqIGNy
LCBHZGtSZWN0YW5nbGUqIGNsaXBSZWN0KQotewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQotICAgIEFTU0VSVChkcmF3aW5nQXJlYSk7Ci0KLSAgICBpZiAoIWRyYXdpbmdB
cmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2ViVmlld0Jhc2UpLT5wcml2OwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSA9IHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlLmdldCgpOwotICAgIGNhaXJv
X3NhdmUoY3IpOwotCi0gICAgaWYgKCFzdXJmYWNlIHx8ICFwcml2LT5wYWdlUHJveHktPmRyYXdz
QmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9IHBy
aXYtPnBhZ2VQcm94eS0+YmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgIGlmIChjb2xvci5oYXNB
bHBoYSgpKSB7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBj
bGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKLSAgICAgICAg
ICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgICAg
ICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29sb3IuYWxw
aGEoKSA+IDApIHsKLSAgICAgICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNvbG9y
KTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09V
UkNFKTsKLSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNsaXBS
ZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICAgICAg
Y2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSkgewot
ICAgICAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNz
IGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0Ci0gICAgICAgIC8vIGFzIGRpcnR5IHRvIGVuc3Vy
ZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9zc2li
bGUuCi0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJmYWNlKTsKLSAgICAgICAg
Y2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0LT53
aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7Ci0gICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFj
ZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUik7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0KLQotICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTSh3ZWJWaWV3QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNyKTsKLSAgICBVTlVTRURf
UEFSQU0oY2xpcFJlY3QpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190
KiBjcikKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VC
X1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAtNjQ1LDcgKzUzNSw5IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogICAg
IGlmICghZ2RrX2NhaXJvX2dldF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwogCi0gICAgaWYgKCF3ZWJraXRXZWJWaWV3UmVuZGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jlc3VsdHMod2ViVmlld0Jhc2UsIGRyYXdpbmdBcmVhLCBjciwgJmNsaXBS
ZWN0KSkgeworICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmUgJiYgZHJhd2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQorICAg
ICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnBhaW50KGNy
LCBjbGlwUmVjdCk7CisgICAgZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6OlJlZ2lvbiB1bnBhaW50
ZWRSZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNlZC4KICAgICAgICAgZHJhd2luZ0FyZWEt
PnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKICAgICB9CkBAIC0xMjg2LDYg
KzExNzgsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFJlZjxBUAogICAgIHByaXYtPnBhZ2VQcm94eSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURk1vdmUoY29uZmln
dXJhdGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAor
ICAgIHByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlID0gQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmU6OmNyZWF0ZSgqcHJpdi0+cGFnZVByb3h5KTsKKwogICAgIHByaXYtPmlucHV0TWV0aG9kRmls
dGVyLnNldFBhZ2UocHJpdi0+cGFnZVByb3h5LmdldCgpKTsKIAogI2lmIEhBVkUoR1RLX1NDQUxF
X0ZBQ1RPUikKQEAgLTE1NjYsMjkgKzE0NjAsMjAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJl
c2V0Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIAog
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JiBsYXllclRyZWVDb250ZXh0KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1h
cCh3ZWJraXRXZWJWaWV3QmFzZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYgKHdl
YmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAgICAg
d2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUo
bGF5ZXJUcmVlQ29udGV4dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jh
c2UsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7Ci0jaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCBsYXllclRyZWVD
b250ZXh0LmNvbnRleHRJRCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3
QmFzZSk7Ci0jZW5kaWYKKyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAogdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHdlYmtpdFdlYlZpZXdCYXNlKTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+
cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNl
LT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKExheWVyVHJlZUNvbnRleHQo
KSk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQpAQCAtMTYxNiw5ICsxNTAxLDkgQEAg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9z
ZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotI2lmIFVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgMCk7Ci0jZWxpZiBQTEFU
Rk9STShYMTEpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAod2Via2l0V2ViVmlld0Jh
c2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJWaWV3
QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShMYXllclRyZWVDb250
ZXh0KCkpOworI2lmIFBMQVRGT1JNKFgxMSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLnR5cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCmluZGV4IGQyYjYyNWIuLjE4MDc4MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHkuY3BwCkBAIC00MSw2ICs0MSwxMSBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisj
aW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTIxNiw2ICsyMjEsMTMgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdB
cmVhUHJveHk6OndhaXRGb3JBbmREaXNwYXRjaERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKCkK
ICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1By
b3h5OjpTdGF0ZTo6TGF1bmNoaW5nKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShX
QVlMQU5EKQorICAgIC8vIE5ldmVyIGJsb2NrIHRoZSBVSSBwcm9jZXNzIGluIFdheWxhbmQgd2hl
biB3YWl0aW5nIGZvciBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBhZnRlciBhIHJlc2l6ZSwK
KyAgICAvLyBiZWNhdXNlIHRoZSBuZXN0ZWQgY29tcG9zaXRvciBuZWVkcyB0byBoYW5kbGUgdGhl
IHdlYiBwcm9jZXNzIHJlcXVlc3RzIHRoYXQgaGFwcGVucyB3aGlsZSByZXNpemluZy4KKyAgICBp
ZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlz
cGxheTo6VHlwZTo6V2F5bGFuZCAmJiBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuaXNS
dW5uaW5nKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IHdhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5IHdpbGwgYWx3YXlzIHJldHVybiB0aGUgb2xkZXN0IERp
ZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlIG1lc3NhZ2UgdGhhdAogICAgIC8vIGhhc24ndCB5ZXQg
YmVlbiBwcm9jZXNzZWQuIEJ1dCBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gc2tpcCBhaGVhZCB0byBz
b21lIG90aGVyIERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlCiAgICAgLy8gbWVzc2FnZSwgaWYg
bXVsdGlwbGUgRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUgbWVzc2FnZXMgYXJlIHdhaXRpbmcg
dG8gYmUgcHJvY2Vzc2VkLiBGb3IgaW5zdGFuY2UsIHdlIGNvdWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlNTZjZjFlLi5mYWU0ZDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEwMCw2ICsx
MDAsMTEgQEAKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZU1vbml0b3IuaCIKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjZW5kaWYKKwogI2lmbmRlZiBOREVC
VUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTYz
OSw2ICs2NDQsMTEgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3
V2ViUHJvY2VzcygpCiAgICAgICAgIHBhcmFtZXRlcnMubWVtb3J5UHJlc3N1cmVNb25pdG9ySGFu
ZGxlID0gTWVtb3J5UHJlc3N1cmVNb25pdG9yOjpzaW5nbGV0b24oKS5jcmVhdGVIYW5kbGUoKTsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFu
ZCkKKyAgICAgICAgcGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lID0gV2F5
bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmRpc3BsYXlOYW1lKCk7CisjZW5kaWYKKwogICAg
IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCgpOwogCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBw
YXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMxNjJhM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisj
aW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgiCisjZW5kaWYKKworI2lm
IFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmU+IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlKQoreworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQp
CisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZSh3
ZWJQYWdlKTsKKyNlbmRpZgorI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQor
ICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMTo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZShXZWJQ
YWdlUHJveHkmIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKK3sKK30KKworYm9v
bCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQoreworICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yID0g
bV93ZWJQYWdlLmJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKSB7
CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCks
IGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY2Fpcm9fc2V0
X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7CisgICAgICAgIGNhaXJvX2ZpbGwo
Y3IpOworICAgIH0KKworICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkgeworICAgICAgICBzZXRT
b3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7CisgICAgICAgIGNhaXJvX3NldF9vcGVyYXRv
cihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKc2ltaWxhcml0
eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggNjlmMjJiMS4uM2RlM2I1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXls
YW5kU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0MiArMjMsMzQgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiAgV2F5bGFuZFN1cmZhY2VfaAotI2RlZmluZSAgV2F5bGFuZFN1
cmZhY2VfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLQotI2lu
Y2x1ZGUgPHdheWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+Cit0eXBl
ZGVmIHN0cnVjdCBfY2Fpcm8gY2Fpcm9fdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
SW50UmVjdDsKK30KIAotY2xhc3MgR0xDb250ZXh0RUdMOwotY2xhc3MgSW50U2l6ZTsKLQotY2xh
c3MgV2F5bGFuZFN1cmZhY2UgewotcHVibGljOgotICAgIFdheWxhbmRTdXJmYWNlKHN0cnVjdCB3
bF9zdXJmYWNlKiwgRUdMTmF0aXZlV2luZG93VHlwZSk7Ci0gICAgfldheWxhbmRTdXJmYWNlKCk7
CituYW1lc3BhY2UgV2ViS2l0IHsKIAotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlKCkg
eyByZXR1cm4gbV93bFN1cmZhY2U7IH0KLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdp
bmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93OyB9CitjbGFzcyBMYXllclRyZWVD
b250ZXh0OworY2xhc3MgV2ViUGFnZVByb3h5OwogCi0gICAgdm9pZCByZXNpemUoY29uc3QgSW50
U2l6ZSYpOworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlR0xDb250ZXh0KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBM
YXllclRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKLSAgICB2b2lkIHJlcXVlc3RGcmFtZSgpOworcHJv
dGVjdGVkOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBhZ2VQcm94eSYpOwogCi1w
cml2YXRlOgotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBtX3dsU3VyZmFjZTsKLSAgICBFR0xOYXRp
dmVXaW5kb3dUeXBlIG1fbmF0aXZlV2luZG93OworICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdl
OwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oV0FZ
TEFORCkKLQotI2VuZGlmIC8vIFdheWxhbmRTdXJmYWNlX2gKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjJmNmJhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTAsMCArMSwx
MTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
LmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0
b3IuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJv
VXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorCisjaWYgVVNF
KE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxX
ZWJDb3JlL09wZW5HTFNoaW1zLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZShX
ZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2lu
Z2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPihuZXcgQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFnZSkK
K3sKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJXZWJQYWdlKG1f
d2ViUGFnZSk7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6fkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZCgpCit7CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmds
ZXRvbigpLnVucmVnaXN0ZXJXZWJQYWdlKG1fd2ViUGFnZSk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCit7CisgICAgR0x1aW50IHRleHR1cmU7CisgICAgSW50U2l6ZSB0ZXh0dXJlU2l6
ZTsKKyAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5nZXRUZXh0dXJlKG1f
d2ViUGFnZSwgdGV4dHVyZSwgdGV4dHVyZVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQo
Y3IsIGNsaXBSZWN0KTsKKworI2lmIDAKKyAgICAvLyBGSVhNRTogVXNlIHRoaXMgd2hlbiBHVEsr
ID49IDMuMTYuIEdUSysgZXhwZWN0cyB0aGUgWSBheGlzIHRvIGJlIGludmVydGVkIHRvIHdoYXQg
d2UgZ2V0LCBzbyB3ZSBuZWVkIHRvIGZsaXAgaXQgc29tZWhvdy4KKyAgICBnZGtfY2Fpcm9fZHJh
d19mcm9tX2dsKGNyLCBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93ZWJQYWdlLnZpZXdXaWRnZXQo
KSksIHRleHR1cmUsIEdMX1RFWFRVUkUsIDEsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBj
bGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisjZWxzZQorICAgIEludFNpemUg
c2l6ZSA9IHRleHR1cmVTaXplOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQ
YWdlLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rv
cik7CisKKyAgICBpZiAoIW1fc3VyZmFjZSB8fCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChtX3N1cmZhY2UuZ2V0KCkpICE9IHNpemUud2lkdGgoKSB8fCBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSAhPSBzaXplLmhlaWdodCgpKQorICAgICAgICBt
X3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JN
QVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBjYWlyb1N1cmZh
Y2VTZXREZXZpY2VTY2FsZShtX3N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9yLCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CisKKyAgICBHTHVpbnQgZmI7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMo
MSwgJmZiKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmIpOworICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKworICAgIGdsUGl4ZWxTdG9yZWkoR0xf
UEFDS19BTElHTk1FTlQsIDQpOworICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RI
LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKSAvIDQpOwor
I2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVNpemUu
d2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgpKSk7CisjZWxzZQor
ICAgIGdsUmVhZFBpeGVscygwLCAwLCB0ZXh0dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5o
ZWlnaHQoKSwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSkpOworI2VuZGlmCisgICAgZ2xQaXhl
bFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIDApOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIDApOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYik7CisK
KyAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGF0
IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0CisgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdlIGFs
d2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJmYWNlLmdldCgpKTsKKyAgICBjYWlyb19y
ZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgp
LCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBt
X3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9f
T1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fZmlsbChjcik7CisjZW5kaWYKKworICAgIGNhaXJv
X3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZC5oCnNpbWlsYXJpdHkgaW5kZXggNjglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmgKcmVuYW1lIHRvIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgK
aW5kZXggYmVkMTY2Mi4uNGM0MjIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDIzICsyMywzMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdh
eWxhbmRFdmVudFNvdXJjZV9oCi0jZGVmaW5lIFdheWxhbmRFdmVudFNvdXJjZV9oCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCiAKICNpZiBQTEFU
Rk9STShXQVlMQU5EKQogCi0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdheWxhbmQtc2Vy
dmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViUGFnZVByb3h5OwogCi1jbGFz
cyBXYXlsYW5kRXZlbnRTb3VyY2UgeworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgR1NvdXJjZSogY3JlYXRlRGlzcGxh
eUV2ZW50U291cmNlKHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ+IGNyZWF0ZShXZWJQYWdlUHJveHkm
KTsKKyAgICB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKCk7CisKK3ByaXZhdGU6Cisg
ICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYpOworCisgICAg
Ym9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwor
CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwogfTsKIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9S
TShXQVlMQU5EKQotCi0jZW5kaWYgLy8gV2F5bGFuZEV2ZW50U291cmNlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyODMwMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTEuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgiCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCisjaW5j
bHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4
dGVuc2lvbnMvWGRhbWFnZS5oPgorI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KKyNpbmNsdWRlIDxn
ZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7CisKK2NsYXNz
IFhEYW1hZ2VOb3RpZmllciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWERhbWFnZU5vdGlm
aWVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVyPjsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgWERhbWFnZU5vdGlmaWVyJiBzaW5nbGV0b24oKQorICAgIHsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4gbm90aWZpZXI7
CisgICAgICAgIHJldHVybiBub3RpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIGFkZChEYW1hZ2Ug
ZGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKKyAgICB7Cisg
ICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICBnZGtf
d2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5j
PigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAgICAgIG1fbm90aWZ5RnVuY3Rpb25z
LmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlbW92ZShEYW1hZ2UgZGFtYWdlKQorICAgIHsKKyAgICAgICAgbV9ub3RpZnlGdW5jdGlvbnMu
cmVtb3ZlKGRhbWFnZSk7CisgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkp
CisgICAgICAgICAgICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnBy
ZXRfY2FzdDxHZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFhEYW1hZ2VOb3RpZmllcigpID0gZGVmYXVsdDsKKworICAgIHN0
YXRpYyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCogZXZlbnQs
IEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKKyAgICB7CisgICAgICAgIGF1
dG8qIHhFdmVudCA9IHN0YXRpY19jYXN0PFhFdmVudCo+KGV2ZW50KTsKKyAgICAgICAgaWYgKHhF
dmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52YWx1ZSgpICsgWERhbWFnZU5vdGlmeSkK
KyAgICAgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJTlVFOworCisgICAgICAgIGF1dG8q
IGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxYRGFtYWdlTm90aWZ5RXZlbnQqPih4RXZl
bnQpOworICAgICAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVudC0+ZGFtYWdlKSkg
eworICAgICAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVudC0+eGFueS5kaXNwbGF5LCBkYW1h
Z2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBHREtfRklM
VEVSX1JFTU9WRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJ
TlVFOworICAgIH0KKworICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0
aW9ucy5nZXQoZGFtYWdlKSkgeworICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBIYXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX25vdGlm
eUZ1bmN0aW9uczsKK307CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMT4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdl
YlBhZ2UpCit7CisgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworICAgIGlmICghZGlzcGxheS5z
dXBwb3J0c1hDb21wb3NpdGUoKSB8fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2Uoc19kYW1hZ2VF
dmVudEJhc2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExPihuZXcgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTEod2ViUGFnZSkpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFnZSkKK3sKK30KKworQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTE6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSgpCit7CisgICAgaWYgKG1fZGFt
YWdlKSB7CisgICAgICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3ZlKG1fZGFt
YWdlLmdldCgpKTsKKyAgICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICB9Cit9CisKK3ZvaWQg
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0
JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIFBpeG1hcCBwaXhtYXAgPSBsYXllclRyZWVDb250
ZXh0LmNvbnRleHRJRDsKKyAgICBpZiAobV9zdXJmYWNlICYmIGNhaXJvX3hsaWJfc3VyZmFjZV9n
ZXRfZHJhd2FibGUobV9zdXJmYWNlLmdldCgpKSA9PSBwaXhtYXApCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAgICAgaWYgKG1fZGFtYWdlKSB7CisgICAgICAg
ICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShtX2RhbWFnZS5nZXQoKSk7
CisgICAgICAgICAgICBtX2RhbWFnZS5yZXNldCgpOworICAgICAgICB9CisgICAgICAgIG1fc3Vy
ZmFjZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFwaXhtYXApCisgICAgICAgIHJldHVy
bjsKKworICAgIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0
PERyYXdpbmdBcmVhUHJveHlJbXBsKj4obV93ZWJQYWdlLmRyYXdpbmdBcmVhKCkpOworICAgIGlm
ICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgc2l6ZSA9IGRy
YXdpbmdBcmVhLT5zaXplKCk7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBh
Z2UuZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9y
KTsKKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBBU1NFUlQo
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCkgPT0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2Rl
ZmF1bHQoKSkpOworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92
aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyAgICBpZiAoIXZpc3VhbCkKKyAgICAg
ICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9k
ZWZhdWx0KCkpOworICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9j
cmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUo
bV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIFhEYW1hZ2VSZXBv
cnROb25FbXB0eSk7CisgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGQobV9kYW1h
Z2UuZ2V0KCksIFt0aGlzXSB7CisgICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhtX3dlYlBh
Z2Uudmlld1dpZGdldCgpKTsKKyAgICB9KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorewor
ICAgIGlmICghbV9zdXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYWlyb19z
YXZlKGNyKTsKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBSZWN0
KTsKKworICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nl
c3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKKyAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUg
d2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxl
LgorICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkpOworICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0Lndp
ZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2Uo
Y3IsIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBD
QUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJvX3Jl
c3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
WDExLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlhN2MyZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTEuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9YVW5pcXVlUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEgZmluYWwgOiBwdWJs
aWMgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MSgpOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKFdlYlBhZ2VQ
cm94eSYpOworCisgICAgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJy
aWRlOworICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBv
dmVycmlkZTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKKyAgICBX
ZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1fZGFtYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3YzczNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBA
IC0wLDAgKzEsNTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9yLmgi
CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2ViS2l0MldheWxhbmRTZXJ2
ZXJQcm90b2NvbC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRGlzcGxheVdheWxhbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgorI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLXByb3RvY29s
Lmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5j
bHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvT3BlbkdMU2hp
bXMuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKyNpZiAhZGVmaW5lZChQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVk
ZWYgRUdMQm9vbGVhbiAoKlBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKSAoRUdMRGlzcGxheSwg
c3RydWN0IHdsX2Rpc3BsYXkqKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZORUdMVU5CSU5E
V0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFVOQklORFdBWUxB
TkRESVNQTEFZV0wpIChFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfZGlzcGxheSopOworI2VuZGlmCisK
KyNpZiAhZGVmaW5lZChQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCkKK3R5cGVkZWYgRUdMQm9v
bGVhbiAoKlBGTkVHTFFVRVJZV0FZTEFOREJVRkZFUldMKSAoRUdMRGlzcGxheSwgc3RydWN0IHds
X3Jlc291cmNlKiwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50KiB2YWx1ZSk7CisjZW5kaWYKKwor
I2lmICFkZWZpbmVkKFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykKK3R5cGVkZWYgRUdMSW1hZ2VL
SFIgKCpQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0MpIChFR0xEaXNwbGF5LCBFR0xDb250ZXh0LCBF
R0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xpbnQqIGF0dHJpYkxpc3Qp
OworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DKQordHlw
ZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXks
IEVHTEltYWdlS0hSKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZOR0xFR0xJTUFHRVRBUkdF
VFRFWFRVUkUyRE9FU1BST0MpCit0eXBlZGVmIHZvaWQgKCpQRk5HTEVHTElNQUdFVEFSR0VUVEVY
VFVSRTJET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMpOworI2VuZGlmCisK
K3N0YXRpYyBQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCBlZ2xCaW5kV2F5bGFuZERpc3BsYXk7
CitzdGF0aWMgUEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCBlZ2xVbmJpbmRXYXlsYW5kRGlz
cGxheTsKK3N0YXRpYyBQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCBlZ2xRdWVyeVdheWxhbmRC
dWZmZXI7CitzdGF0aWMgUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DIGVnbENyZWF0ZUltYWdlOwor
c3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgZWdsRGVzdHJveUltYWdlOworc3RhdGlj
IFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DIGVnbEltYWdlVGFyZ2V0VGV4dHVy
ZTJEOworCitXYXlsYW5kQ29tcG9zaXRvciYgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9yPiB3YXlsYW5k
Q29tcG9zaXRvcjsKKyAgICByZXR1cm4gd2F5bGFuZENvbXBvc2l0b3I7Cit9CisKK1dheWxhbmRD
b21wb3NpdG9yOjpCdWZmZXIqIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRl
KHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKHN0cnVjdCB3bF9saXN0
ZW5lciogbGlzdGVuZXIgPSB3bF9yZXNvdXJjZV9nZXRfZGVzdHJveV9saXN0ZW5lcihyZXNvdXJj
ZSwgZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2spKSB7CisgICAgICAgIFdheWxhbmRDb21wb3NpdG9y
OjpCdWZmZXIqIGJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIHdsX2NvbnRhaW5lcl9vZihsaXN0ZW5l
ciwgYnVmZmVyLCBtX2Rlc3Ryb3lMaXN0ZW5lcik7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBX
YXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKHJlc291cmNlKTsKK30KKworV2F5bGFuZENvbXBvc2l0
b3I6OkJ1ZmZlcjo6QnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCisgICAgOiBt
X3Jlc291cmNlKHJlc291cmNlKQorICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQoreworICAg
IHdsX2xpc3RfaW5pdCgmbV9kZXN0cm95TGlzdGVuZXIubGluayk7CisgICAgbV9kZXN0cm95TGlz
dGVuZXIubm90aWZ5ID0gZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2s7CisgICAgd2xfcmVzb3VyY2Vf
YWRkX2Rlc3Ryb3lfbGlzdGVuZXIobV9yZXNvdXJjZSwgJm1fZGVzdHJveUxpc3RlbmVyKTsKK30K
KworV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZlcigpCit7CisgICAgd2xfbGlzdF9y
ZW1vdmUoJm1fZGVzdHJveUxpc3RlbmVyLmxpbmspOworfQorCit2b2lkIFdheWxhbmRDb21wb3Np
dG9yOjpCdWZmZXI6OmRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKHN0cnVjdCB3bF9saXN0ZW5lciog
bGlzdGVuZXIsIHZvaWQqKQoreworICAgIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIqIGJ1ZmZl
cjsKKyAgICBidWZmZXIgPSB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZlciwgbV9kZXN0
cm95TGlzdGVuZXIpOworICAgIGRlbGV0ZSBidWZmZXI7Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBv
c2l0b3I6OkJ1ZmZlcjo6dXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudCsrOworfQorCit2b2lkIFdh
eWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVudXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudC0tOwor
ICAgIGlmICghbV9idXN5Q291bnQpCisgICAgICAgIHdsX3Jlc291cmNlX3F1ZXVlX2V2ZW50KG1f
cmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNFKTsKK30KKworRUdMSW1hZ2VLSFIgV2F5bGFuZENv
bXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRlSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUltYWdlKFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgRUdMX05PX0NPTlRFWFQsIEVHTF9XQVlMQU5EX0JV
RkZFUl9XTCwgbV9yZXNvdXJjZSwgbnVsbHB0cikpOworfQorCitJbnRTaXplIFdheWxhbmRDb21w
b3NpdG9yOjpCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIEVHTERpc3BsYXkgZWdsRGlzcGxh
eSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKyAgICBp
bnQgd2lkdGgsIGhlaWdodDsKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIoZWdsRGlzcGxheSwg
bV9yZXNvdXJjZSwgRUdMX1dJRFRILCAmd2lkdGgpOworICAgIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZl
cihlZ2xEaXNwbGF5LCBtX3Jlc291cmNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKworICAgIHJl
dHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6
OlN1cmZhY2UoKQorICAgIDogbV9pbWFnZShFR0xfTk9fSU1BR0VfS0hSKQoreworICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtX3RleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFS
RVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6On5T
dXJmYWNlKCkKK3sKKyAgICAvLyBEZXN0cm95IHBlbmRpbmcgZnJhbWUgY2FsbGJhY2tzLgorICAg
IGF1dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChhdXRv
KiByZXNvdXJjZSA6IGxpc3QpCisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3VyY2Up
OworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlci0+dW51c2UoKTsKKworICAg
IGlmIChtX2ltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpCisgICAgICAgIGVnbERlc3Ryb3lJbWFn
ZShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIG1faW1hZ2Up
OworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKK30KKwordm9pZCBXYXls
YW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6bWFrZVBlbmRpbmdCdWZmZXJDdXJyZW50KCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQnVmZmVyID09IG1fYnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyLT51bnVzZSgpOworCisgICAgaWYgKG1f
cGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyLT51c2UoKTsKKworICAgIG1f
YnVmZmVyID0gbV9wZW5kaW5nQnVmZmVyOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpT
dXJmYWNlOjphdHRhY2hCdWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXIpCit7CisgICAg
aWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyID0gbnVsbHB0cjsK
KworICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgYXV0byogY29tcG9zaXRvckJ1ZmZlciA9IFdh
eWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKGJ1ZmZlcik7CisgICAgICAgIG1f
cGVuZGluZ0J1ZmZlciA9IGNvbXBvc2l0b3JCdWZmZXItPmNyZWF0ZVdlYWtQdHIoKTsKKyAgICB9
Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVlc3RGcmFtZShzdHJ1
Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1l
bnRhdGlvbihyZXNvdXJjZSwgbnVsbHB0ciwgdGhpcywgW10oc3RydWN0IHdsX3Jlc291cmNlKiBy
ZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENv
bXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7
CisgICAgICAgIGlmIChzaXplX3QgaXRlbSA9IHN1cmZhY2UtPm1fZnJhbWVDYWxsYmFja0xpc3Qu
ZmluZChyZXNvdXJjZSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBzdXJmYWNlLT5tX2ZyYW1l
Q2FsbGJhY2tMaXN0LnJlbW92ZShpdGVtKTsKKyAgICB9KTsKKyAgICBtX2ZyYW1lQ2FsbGJhY2tM
aXN0LmFwcGVuZChyZXNvdXJjZSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZh
Y2U6OnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQmIHRleHR1cmUsIEludFNpemUm
IHRleHR1cmVTaXplKQoreworICAgIGlmIChtX2ltYWdlID09IEVHTF9OT19JTUFHRV9LSFIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bV90ZXh0dXJlKTsKKyAgICBlZ2xJbWFnZVRhcmdldFRleHR1cmUyRChHTF9URVhUVVJFXzJELCBt
X2ltYWdlKTsKKworICAgIHRleHR1cmUgPSBtX3RleHR1cmU7CisgICAgdGV4dHVyZVNpemUgPSBt
X2J1ZmZlci0+c2l6ZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdheWxhbmRDb21w
b3NpdG9yOjpTdXJmYWNlOjpjb21taXQoKQoreworICAgIEVHTERpc3BsYXkgZWdsRGlzcGxheSA9
IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKyAgICBpZiAo
bV9pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICBlZ2xEZXN0cm95SW1hZ2UoZWds
RGlzcGxheSwgbV9pbWFnZSk7CisgICAgbV9pbWFnZSA9IG1fcGVuZGluZ0J1ZmZlci0+Y3JlYXRl
SW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQoKTsKKyAgICBpZiAo
bV93ZWJQYWdlKQorICAgICAgICBtX3dlYlBhZ2UtPnNldFZpZXdOZWVkc0Rpc3BsYXkoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBtX3dlYlBhZ2UtPnZpZXdTaXplKCkpKTsKKworICAgIGF1dG8g
bGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChhdXRvKiByZXNv
dXJjZSA6IGxpc3QpIHsKKyAgICAgICAgd2xfY2FsbGJhY2tfc2VuZF9kb25lKHJlc291cmNlLCAw
KTsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNvdXJjZSk7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc3VyZmFjZV9pbnRlcmZh
Y2Ugc3VyZmFjZUludGVyZmFjZSA9IHsKKyAgICAvLyBkZXN0cm95Q2FsbGJhY2sKKyAgICBbXShz
dHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkKKyAgICB7Cisg
ICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3VyY2UpOworICAgIH0sCisgICAgLy8gYXR0
YWNoQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3bF9y
ZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogYnVmZmVyLCBpbnQzMl90IHN4
LCBpbnQzMl90IHN5KQorICAgIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0
PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShy
ZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgRUdMaW50IGZvcm1hdDsKKyAgICAgICAgaWYgKCFlZ2xRdWVyeVdheWxhbmRCdWZm
ZXIoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBidWZmZXIs
IEVHTF9URVhUVVJFX0ZPUk1BVCwgJmZvcm1hdCkKKyAgICAgICAgICAgIHx8IChmb3JtYXQgIT0g
RUdMX1RFWFRVUkVfUkdCICYmIGZvcm1hdCAhPSBFR0xfVEVYVFVSRV9SR0JBKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBzdXJmYWNlLT5hdHRhY2hCdWZmZXIoYnVmZmVyKTsKKyAg
ICB9LAorICAgIC8vIGRhbWFnZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0
cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QsIGludDMyX3QsIGludDMyX3QsIGludDMyX3QpIHsg
fSwKKyAgICAvLyBmcmFtZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xpZW50
LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCB1aW50MzJfdCBpZCkKKyAgICB7CisgICAg
ICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFj
ZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgaWYgKCFz
dXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdHJ1Y3Qgd2xfcmVz
b3VyY2UqIGNhbGxiYWNrUmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xf
Y2FsbGJhY2tfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAgICAgICBzdXJmYWNlLT5yZXF1ZXN0
RnJhbWUoY2FsbGJhY2tSZXNvdXJjZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdsX2Ns
aWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgIH0sCisgICAgLy8gc2V0T3BhcXVlUmVn
aW9uQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNl
Kiwgc3RydWN0IHdsX3Jlc291cmNlKikgeyB9LAorICAgIC8vIHNldElucHV0UmVnaW9uQ2FsbGJh
Y2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgc3RydWN0
IHdsX3Jlc291cmNlKikgeyB9LAorICAgIC8vIGNvbW1pdENhbGxiYWNrCisgICAgW10oc3RydWN0
IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQorICAgIHsK
KyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpT
dXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAgICBp
ZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN1cmZhY2Ut
PmNvbW1pdCgpKQorICAgICAgICAgICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzKHdsX2NsaWVu
dF9nZXRfZGlzcGxheShjbGllbnQpKTsKKyAgICB9LAorICAgIC8vIHNldEJ1ZmZlclRyYW5zZm9y
bUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSos
IGludDMyX3QpIHsgfSwKKyAgICAvLyBzZXRCdWZmZXJTY2FsZUNhbGxiYWNrCisgICAgW10oc3Ry
dWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QpIHsgfQorfTsKKwor
c3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jb21wb3NpdG9yX2ludGVyZmFjZSBjb21wb3NpdG9ySW50
ZXJmYWNlID0geworICAgIC8vIGNyZWF0ZVN1cmZhY2VDYWxsYmFjaworICAgIFtdKHN0cnVjdCB3
bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMyX3Qg
aWQpCisgICAgeworICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiBzdXJmYWNlUmVzb3Vy
Y2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfc3VyZmFjZV9pbnRlcmZhY2UsIDEs
IGlkKSkgeworICAgICAgICAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHN1cmZh
Y2VSZXNvdXJjZSwgJnN1cmZhY2VJbnRlcmZhY2UsIG5ldyBXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZSgpLAorICAgICAgICAgICAgICAgIFtdKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxh
bmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJj
ZSkpOworICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3VyZmFjZTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19tZW1v
cnkoY2xpZW50KTsKKyAgICB9LAorICAgIC8vIGNyZWF0ZVJlZ2lvbkNhbGxiYWNrCisgICAgW10o
c3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHVpbnQzMl90KSB7IH0KK307
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2Via2l0Z3RrX2ludGVyZmFjZSB3ZWJraXRndGtJ
bnRlcmZhY2UgPSB7CisgICAgLy8gYmluZFN1cmZhY2VUb1BhZ2VDYWxsYmFjaworICAgIFtdKHN0
cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xf
cmVzb3VyY2UqIHN1cmZhY2VSZXNvdXJjZSwgdWludDMyX3QgcGFnZUlEKQorICAgIHsKKyAgICAg
ICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNl
Kj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJmYWNlUmVzb3VyY2UpKTsKKyAgICAgICAg
aWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIGNvbXBv
c2l0b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dldF91
c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dl
YlBhZ2Uoc3VyZmFjZSwgcGFnZUlEKTsKKyAgICB9Cit9OworCitib29sIFdheWxhbmRDb21wb3Np
dG9yOjppbml0aWFsaXplRUdMKCkKK3sKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkuZWdsQ2hlY2tWZXJzaW9uKDEsIDUpKSB7CisgICAgICAgIGVnbENyZWF0ZUltYWdl
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0M+KGVnbEdldFByb2NB
ZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZSIpKTsKKyAgICAgICAgZWdsRGVzdHJveUltYWdlID0gcmVp
bnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVz
cygiZWdsRGVzdHJveUltYWdlIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGNoYXIq
IGV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKS5lZ2xEaXNwbGF5KCksIEVHTF9FWFRFTlNJT05TKTsKKyAgICAgICAgaWYgKHN0cnN0cihl
eHRlbnNpb25zLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikpIHsKKyAgICAgICAgICAgIGVnbENyZWF0
ZUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0M+KGVnbEdl
dFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIpKTsKKyAgICAgICAgICAgIGVnbERlc3Ry
b3lJbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQz4oZWds
R2V0UHJvY0FkZHJlc3MoImVnbERlc3Ryb3lJbWFnZUtIUiIpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoIWVnbENyZWF0ZUltYWdlIHx8ICFlZ2xEZXN0cm95SW1hZ2UpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBlZ2xDcmVhdGVJbWFnZSBh
bmQgZWdsRGVzdHJveUltYWdlLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1B
R0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRh
cmdldFRleHR1cmUyRE9FUyIpKTsKKyAgICBpZiAoIWVnbEltYWdlVGFyZ2V0VGV4dHVyZTJEKSB7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3IgcmVxdWlyZXMgZ2xFR0xJ
bWFnZVRhcmdldFRleHR1cmUuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFFVRVJZV0FZ
TEFOREJVRkZFUldMPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wi
KSk7CisgICAgaWYgKCFlZ2xRdWVyeVdheWxhbmRCdWZmZXIpIHsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBlZ2xRdWVyeVdheWxhbmRCdWZmZXIuIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlZ2xCaW5kV2F5bGFuZERpc3Bs
YXkgPSByZWludGVycHJldF9jYXN0PFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMPihlZ2xHZXRQ
cm9jQWRkcmVzcygiZWdsQmluZFdheWxhbmREaXNwbGF5V0wiKSk7CisgICAgZWdsVW5iaW5kV2F5
bGFuZERpc3BsYXkgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZ
V0w+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMIikpOworICAg
IGlmICghZWdsQmluZFdheWxhbmREaXNwbGF5IHx8ICFlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheSkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRDb21wb3NpdG9yIHJlcXVpcmVzIGVnbEJp
bmRXYXlsYW5kRGlzcGxheVdMIGFuZCBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMLiIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9lZ2xDb250ZXh0ID0gR0xDb250ZXh0
OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCk7CisgICAgaWYgKCFtX2VnbENvbnRleHQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9lZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3R5cGVkZWYgc3RydWN0IHsKKyAgICBHU291cmNlIHNvdXJjZTsKKyAgICBncG9pbnRlciBmZFRh
ZzsKKyAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheTsKK30gV2F5bGFuZExvb3BTb3VyY2U7
CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB3YXlsYW5kTG9vcFNvdXJjZUNvbmRpdGlvbiA9IEdf
SU9fSU4gfCBHX0lPX0hVUCB8IEdfSU9fRVJSOworCitzdGF0aWMgR1NvdXJjZUZ1bmNzIHdheWxh
bmRMb29wU291cmNlRnVuY3Rpb25zID0geworICAgIC8vIHByZXBhcmUKKyAgICBbXShHU291cmNl
ICpzb3VyY2UsIGludCAqdGltZW91dCkgLT4gZ2Jvb2xlYW4KKyAgICB7CisgICAgICAgICp0aW1l
b3V0ID0gLTE7CisgICAgICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
V2F5bGFuZExvb3BTb3VyY2UqPihzb3VyY2UpOworICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoX2Ns
aWVudHMod2xMb29wU291cmNlLT5kaXNwbGF5KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAg
IH0sCisgICAgbnVsbHB0ciwgLy8gY2hlY2sKKyAgICAvLyBkaXNwYXRjaAorICAgIFtdKEdTb3Vy
Y2UqIHNvdXJjZSwgR1NvdXJjZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBn
Ym9vbGVhbgorICAgIHsKKyAgICAgICAgYXV0byogd2xMb29wU291cmNlID0gcmVpbnRlcnByZXRf
Y2FzdDxXYXlsYW5kTG9vcFNvdXJjZSo+KHNvdXJjZSk7CisgICAgICAgIHVuc2lnbmVkIGV2ZW50
cyA9IGdfc291cmNlX3F1ZXJ5X3VuaXhfZmQoc291cmNlLCB3bExvb3BTb3VyY2UtPmZkVGFnKSAm
IHdheWxhbmRMb29wU291cmNlQ29uZGl0aW9uOworICAgICAgICBpZiAoZXZlbnRzICYgR19JT19I
VVAgfHwgZXZlbnRzICYgR19JT19FUlIpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5
bGFuZCBEaXNwbGF5IEV2ZW50IFNvdXJjZTogbG9zdCBjb25uZWN0aW9uIHRvIG5lc3RlZCBXYXls
YW5kIGNvbXBvc2l0b3IiKTsKKyAgICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRzICYgR19JT19JTikKKyAgICAgICAgICAgIHds
X2V2ZW50X2xvb3BfZGlzcGF0Y2god2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcCh3bExvb3BTb3Vy
Y2UtPmRpc3BsYXkpLCAwKTsKKyAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAg
IH0sCisgICAgbnVsbHB0ciwgLy8gZmluYWxpemUKKyAgICBudWxscHRyLCAvLyBjbG9zdXJlX2Nh
bGxiYWNrCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9tYXJzaGFsbAorfTsKKworc3RhdGljIEdS
ZWZQdHI8R1NvdXJjZT4gY3JlYXRlV2F5bGFuZExvb3BTb3VyY2Uoc3RydWN0IHdsX2Rpc3BsYXkq
IGRpc3BsYXkpCit7CisgICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ19z
b3VyY2VfbmV3KCZ3YXlsYW5kTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKFdheWxhbmRMb29w
U291cmNlKSkpOworICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIk5lc3RlZCBX
YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBldmVudCBzb3VyY2UiKTsKKyAgICBnX3NvdXJjZV9z
ZXRfcHJpb3JpdHkoc291cmNlLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFVTFQgKyAxKTsKKworICAg
IGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3VyY2Uq
Pihzb3VyY2UuZ2V0KCkpOworICAgIHdsTG9vcFNvdXJjZS0+ZGlzcGxheSA9IGRpc3BsYXk7Cisg
ICAgd2xMb29wU291cmNlLT5mZFRhZyA9IGdfc291cmNlX2FkZF91bml4X2ZkKHNvdXJjZS5nZXQo
KSwgd2xfZXZlbnRfbG9vcF9nZXRfZmQod2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChkaXNwbGF5
KSksIHN0YXRpY19jYXN0PEdJT0NvbmRpdGlvbj4od2F5bGFuZExvb3BTb3VyY2VDb25kaXRpb24p
KTsKKyAgICBnX3NvdXJjZV9hdHRhY2goc291cmNlLmdldCgpLCBudWxscHRyKTsKKworICAgIHJl
dHVybiBzb3VyY2U7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpXYXlsYW5kQ29tcG9zaXRvcigp
Cit7CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX2Rpc3BsYXk+IGRpc3BsYXkod2xfZGlzcGxh
eV9jcmVhdGUoKSk7CisgICAgaWYgKCFkaXNwbGF5KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
TmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgb2JqZWN0
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSAi
d2Via2l0Z3RrLXdheWxhbmQtY29tcG9zaXRvci0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpOworICAgIGlmICh3bF9kaXNwbGF5X2FkZF9zb2NrZXQoZGlzcGxheS5nZXQoKSwgZGlzcGxh
eU5hbWUudXRmOCgpLmRhdGEoKSkgPT0gLTEpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBjcmVhdGUgZGlzcGxheSBzb2NrZXQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9i
YWw+IGNvbXBvc2l0b3JHbG9iYWwod2xfZ2xvYmFsX2NyZWF0ZShkaXNwbGF5LmdldCgpLCAmd2xf
Y29tcG9zaXRvcl9pbnRlcmZhY2UsIHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLnZlcnNpb24sIHRo
aXMsCisgICAgICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgdm9pZCogZGF0YSwgdWlu
dDMyX3QgdmVyc2lvbiwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3Qgd2xf
cmVzb3VyY2UqIHJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX2NvbXBv
c2l0b3JfaW50ZXJmYWNlLCBzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KHZlcnNpb24pLCAzKSwg
aWQpKQorICAgICAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihyZXNv
dXJjZSwgJmNvbXBvc2l0b3JJbnRlcmZhY2UsIHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9y
Kj4oZGF0YSksIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHds
X2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgICAgICB9KSk7CisgICAgaWYgKCFj
b21wb3NpdG9yR2xvYmFsKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQg
Y29tcG9zaXRvciBjb3VsZCBub3QgcmVnaXN0ZXIgY29tcG9zaXRvciBnbG9iYWwiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IHdl
YmtpdGd0a0dsb2JhbCh3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXkuZ2V0KCksICZ3bF93ZWJraXRn
dGtfaW50ZXJmYWNlLCAxLCB0aGlzLAorICAgICAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGll
bnQsIHZvaWQqIGRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90IGlkKSB7CisgICAgICAg
ICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9IHdsX3Jlc291cmNlX2NyZWF0
ZShjbGllbnQsICZ3bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAgICAgICAg
ICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHJlc291cmNlLCAmd2Via2l0Z3RrSW50
ZXJmYWNlLCBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KGRhdGEpLCBudWxscHRyKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19tZW1v
cnkoY2xpZW50KTsKKyAgICAgICAgfSkpOworICAgIGlmICghd2Via2l0Z3RrR2xvYmFsKSB7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3Qg
cmVnaXN0ZXIgd2Via2l0Z3RrIGdsb2JhbCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFpbml0aWFsaXplRUdMKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQg
V2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBpbml0aWFsaXplIEVHTCIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFlZ2xCaW5kV2F5bGFuZERpc3BsYXkoUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBkaXNwbGF5LmdldCgpKSkgewor
ICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQgbm90
IGJpbmQgbmVzdGVkIGRpc3BsYXkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZGlzcGxheU5hbWUgPSBXVEZNb3ZlKGRpc3BsYXlOYW1lKTsKKyAgICBtX2Rpc3BsYXkgPSBXVEZN
b3ZlKGRpc3BsYXkpOworICAgIG1fY29tcG9zaXRvckdsb2JhbCA9IFdURk1vdmUoY29tcG9zaXRv
ckdsb2JhbCk7CisgICAgbV93ZWJraXRndGtHbG9iYWwgPSBXVEZNb3ZlKHdlYmtpdGd0a0dsb2Jh
bCk7CisgICAgbV9ldmVudFNvdXJjZSA9IGNyZWF0ZVdheWxhbmRMb29wU291cmNlKG1fZGlzcGxh
eS5nZXQoKSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmdldFRleHR1cmUoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlLCB1bnNpZ25lZCYgdGV4dHVyZSwgSW50U2l6ZSYgdGV4dHVyZVNpemUp
Cit7CisgICAgaWYgKGF1dG8qIHN1cmZhY2UgPSBtX3BhZ2VNYXAuZ2V0KCZ3ZWJQYWdlKSkKKyAg
ICAgICAgcmV0dXJuIHN1cmZhY2UtPnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodGV4dHVyZSwg
dGV4dHVyZVNpemUpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXYXlsYW5kQ29tcG9z
aXRvcjo6YmluZFN1cmZhY2VUb1dlYlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqIHN1
cmZhY2UsIHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBu
dWxscHRyOworICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkpIHsKKyAgICAg
ICAgaWYgKHBhZ2UtPnBhZ2VJRCgpID09IHBhZ2VJRCkgeworICAgICAgICAgICAgd2ViUGFnZSA9
IHBhZ2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXdl
YlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHN1cmZhY2UtPnNldFdlYlBhZ2Uod2ViUGFn
ZSk7CisgICAgbV9wYWdlTWFwLnNldCh3ZWJQYWdlLCBzdXJmYWNlKTsKK30KKwordm9pZCBXYXls
YW5kQ29tcG9zaXRvcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKK3sK
KyAgICBtX3BhZ2VNYXAuYWRkKCZ3ZWJQYWdlLCBudWxscHRyKTsKK30KKwordm9pZCBXYXlsYW5k
Q29tcG9zaXRvcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorewor
ICAgIGlmIChhdXRvKiBzdXJmYWNlID0gbV9wYWdlTWFwLnRha2UoJndlYlBhZ2UpKQorICAgICAg
ICBzdXJmYWNlLT5zZXRXZWJQYWdlKG51bGxwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMGQyOGFhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dsVW5pcXVlUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKwordHlwZWRlZiB2b2lkICpFR0xJbWFnZUtIUjsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgR0xDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXYXlsYW5kQ29tcG9zaXRvciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2F5bGFuZENvbXBvc2l0b3IpOworICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxXYXlsYW5kQ29tcG9zaXRvcj47CitwdWJsaWM6CisgICAgc3RhdGljIFdheWxh
bmRDb21wb3NpdG9yJiBzaW5nbGV0b24oKTsKKworICAgIGNsYXNzIEJ1ZmZlciB7CisgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJ1ZmZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEJ1ZmZlciogZ2V0T3JDcmVhdGUoc3RydWN0IHds
X3Jlc291cmNlKik7CisgICAgICAgIH5CdWZmZXIoKTsKKworICAgICAgICB2b2lkIHVzZSgpOwor
ICAgICAgICB2b2lkIHVudXNlKCk7CisKKyAgICAgICAgRUdMSW1hZ2VLSFIgY3JlYXRlSW1hZ2Uo
KSBjb25zdDsKKyAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CisKKyAgICAg
ICAgV2Vha1B0cjxCdWZmZXI+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0
b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnVmZmVyKHN0
cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95TGlzdGVuZXJD
YWxsYmFjayhzdHJ1Y3Qgd2xfbGlzdGVuZXIqLCB2b2lkKik7CisKKyAgICAgICAgc3RydWN0IHds
X3Jlc291cmNlKiBtX3Jlc291cmNlIHsgbnVsbHB0ciB9OworICAgICAgICBzdHJ1Y3Qgd2xfbGlz
dGVuZXIgbV9kZXN0cm95TGlzdGVuZXI7CisgICAgICAgIHVpbnQzMl90IG1fYnVzeUNvdW50IHsg
MCB9OworICAgICAgICBXZWFrUHRyRmFjdG9yeTxCdWZmZXI+IG1fd2Vha1B0ckZhY3Rvcnk7Cisg
ICAgfTsKKworICAgIGNsYXNzIFN1cmZhY2UgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTdXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAg
ICBTdXJmYWNlKCk7CisgICAgICAgIH5TdXJmYWNlKCk7CisKKyAgICAgICAgdm9pZCBhdHRhY2hC
dWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lKHN0
cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICBib29sIGNvbW1pdCgpOworCisgICAgICAgIHZv
aWQgc2V0V2ViUGFnZShXZWJQYWdlUHJveHkqIHdlYlBhZ2UpIHsgbV93ZWJQYWdlID0gd2ViUGFn
ZTsgfQorICAgICAgICBib29sIHByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQmLCBX
ZWJDb3JlOjpJbnRTaXplJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIG1ha2VQZW5k
aW5nQnVmZmVyQ3VycmVudCgpOworCisgICAgICAgIFdlYWtQdHI8QnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICAgICAgV2Vha1B0cjxCdWZmZXI+IG1fcGVuZGluZ0J1ZmZlcjsKKyAgICAgICAgdW5zaWdu
ZWQgbV90ZXh0dXJlOworICAgICAgICBFR0xJbWFnZUtIUiBtX2ltYWdlOworICAgICAgICBWZWN0
b3I8d2xfcmVzb3VyY2UqPiBtX2ZyYW1lQ2FsbGJhY2tMaXN0OworICAgICAgICBXZWJQYWdlUHJv
eHkqIG1fd2ViUGFnZSB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAgYm9vbCBpc1J1bm5pbmco
KSBjb25zdCB7IHJldHVybiAhIW1fZGlzcGxheTsgfQorICAgIFN0cmluZyBkaXNwbGF5TmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KKworICAgIHZvaWQgYmluZFN1cmZhY2VU
b1dlYlBhZ2UoU3VyZmFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZWdpc3Rlcldl
YlBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdl
UHJveHkmKTsKKworICAgIGJvb2wgZ2V0VGV4dHVyZShXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCYs
IFdlYkNvcmU6OkludFNpemUmKTsKKworcHJpdmF0ZToKKyAgICBXYXlsYW5kQ29tcG9zaXRvcigp
OworCisgICAgYm9vbCBpbml0aWFsaXplRUdMKCk7CisKKyAgICBTdHJpbmcgbV9kaXNwbGF5TmFt
ZTsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZGlzcGxheT4gbV9kaXNwbGF5
OworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IG1fY29tcG9zaXRv
ckdsb2JhbDsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiBtX3dl
YmtpdGd0a0dsb2JhbDsKKyAgICBHUmVmUHRyPEdTb3VyY2U+IG1fZXZlbnRTb3VyY2U7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9lZ2xDb250ZXh0OworICAgIEhh
c2hNYXA8V2ViUGFnZVByb3h5KiwgU3VyZmFjZSo+IG1fcGFnZU1hcDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKaW5kZXggYWUx
NGU5ZS4uM2YwNTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJQcmVmZXJlbmNlc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJQcmVmZXJlbmNlc0d0ay5jcHAKQEAgLTI3LDMxICsyNyw1MiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKKyNpbmNsdWRlICJXYXlsYW5kQ29t
cG9zaXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNl
bmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKCkKIHsKLSNpZiBQ
TEFURk9STShXQVlMQU5EKQotICAgIGlmIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKS50eXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXls
YW5kKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyB1bmRlciBX
YXlsYW5kIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCi0gICAgICAgIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7
Ci0jZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZChmYWxzZSk7CiAjZWxzZQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKyAgICBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyNlbHNlCiAgICAg
aWYgKGdldGVudigiV0VCS0lUX0ZPUkNFX0NPTVBPU0lUSU5HX01PREUiKSkKICAgICAgICAgc2V0
Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0gICAgaWYgKGdldGVudigiV0VCS0lUX0RJU0FC
TEVfQ09NUE9TSVRJTkdfTU9ERSIpKQorI2VuZGlmCisKKyAgICBpZiAoZ2V0ZW52KCJXRUJLSVRf
RElTQUJMRV9DT01QT1NJVElOR19NT0RFIikpIHsKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgewor
ICAgICAgICBhdXRvJiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7CisgICAgICAgIE9wdGlvbmFsPGludD4gZGFt
YWdlQmFzZTsKKyAgICAgICAgaWYgKCFkaXNwbGF5LnN1cHBvcnRzWENvbXBvc2l0ZSgpIHx8ICFk
aXNwbGF5LnN1cHBvcnRzWERhbWFnZShkYW1hZ2VCYXNlKSkKKyAgICAgICAgICAgIHNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICB9CiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAgaWYg
KCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgICAgICAg
ICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgfQorI2VuZGlm
CisKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTkdMKQogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpw
bGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3Rp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMzNmY2MuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhEYW1hZ2VOb3RpZmllci5oIgotCi0jaWYgUExBVEZP
Uk0oWDExKQotCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KLSNpbmNs
dWRlIDxYMTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KLSNp
bmNsdWRlIDxnZGsvZ2RreC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBPcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOwot
Ci1YRGFtYWdlTm90aWZpZXImIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVyPiBub3RpZmllcjsKLSAgICByZXR1
cm4gbm90aWZpZXI7Ci19Ci0KLVhEYW1hZ2VOb3RpZmllcjo6WERhbWFnZU5vdGlmaWVyKCkKLXsK
LSAgICBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5zdXBwb3J0c1hEYW1hZ2Uoc19kYW1hZ2VFdmVudEJhc2UpOwotfQotCi12b2lk
IFhEYW1hZ2VOb3RpZmllcjo6YWRkKERhbWFnZSBkYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiYmIG5vdGlmeUZ1bmN0aW9uKQotewotICAgIGlmICghc19kYW1hZ2VFdmVudEJhc2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIGdka193aW5kb3dfYWRkX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9jYXN0PEdka0Zp
bHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLSAgICBtX25vdGlmeUZ1bmN0
aW9ucy5hZGQoZGFtYWdlLCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7Ci19Ci0KLXZvaWQgWERh
bWFnZU5vdGlmaWVyOjpyZW1vdmUoRGFtYWdlIGRhbWFnZSkKLXsKLSAgICBpZiAoIXNfZGFtYWdl
RXZlbnRCYXNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX25vdGlmeUZ1bmN0aW9ucy5yZW1v
dmUoZGFtYWdlKTsKLSAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQotICAgICAg
ICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtG
aWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Ci19Ci0KLUdka0ZpbHRlclJl
dHVybiBYRGFtYWdlTm90aWZpZXI6OmZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZlbnQqIGV2ZW50
LCBHZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciogbm90aWZpZXIpCi17Ci0gICAgQVNTRVJUKHNf
ZGFtYWdlRXZlbnRCYXNlKTsKLSAgICBhdXRvKiB4RXZlbnQgPSBzdGF0aWNfY2FzdDxYRXZlbnQq
PihldmVudCk7Ci0gICAgaWYgKHhFdmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52YWx1
ZSgpICsgWERhbWFnZU5vdGlmeSkKLSAgICAgICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElOVUU7
Ci0KLSAgICBhdXRvKiBkYW1hZ2VFdmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8WERhbWFnZU5vdGlm
eUV2ZW50Kj4oeEV2ZW50KTsKLSAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVudC0+
ZGFtYWdlKSkgewotICAgICAgICBYRGFtYWdlU3VidHJhY3QoeEV2ZW50LT54YW55LmRpc3BsYXks
IGRhbWFnZUV2ZW50LT5kYW1hZ2UsIE5vbmUsIE5vbmUpOwotICAgICAgICByZXR1cm4gR0RLX0ZJ
TFRFUl9SRU1PVkU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElOVUU7Ci19
Ci0KLWJvb2wgWERhbWFnZU5vdGlmaWVyOjpub3RpZnkoRGFtYWdlIGRhbWFnZSkgY29uc3QKLXsK
LSAgICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9ucy5n
ZXQoZGFtYWdlKSkgewotICAgICAgICBub3RpZnlGdW5jdGlvbigpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggOTM4M2Q4Ny4uOGNlNjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAt
MzAsMTQgKzMwLDEyIEBACiAjaW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKworI2luY2x1
ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAK
LSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSNpbmNsdWRlICJSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDI2ICs1MiwyMyBAQCBUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6flRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkK
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdChXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0KHdlYlBhZ2UpCiAgICAgLCBtX2NvbXBvc2l0b3JDbGllbnQoKnRoaXMpCi0jaWYgVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgLCBtX3JlZGlyZWN0ZWRXaW5kb3coUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZSh3ZWJQYWdlKSkKLSAgICAsIG1fY29tcG9z
aXRvcihUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50LCBtX3Jl
ZGlyZWN0ZWRXaW5kb3cgPyBtX3JlZGlyZWN0ZWRXaW5kb3ctPndpbmRvdygpIDogMCkpCi0jZWxz
ZQotICAgICwgbV9jb21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2NvbXBv
c2l0b3JDbGllbnQpKQotI2VuZGlmCisgICAgLCBtX3N1cmZhY2UoQWNjZWxlcmF0ZWRTdXJmYWNl
OjpjcmVhdGUod2ViUGFnZSkpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykKLSAgICAgICAgbV9sYXllclRyZWVDb250
ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0jZW5kaWYKKyAg
ICBpZiAobV9zdXJmYWNlKSB7CisgICAgICAgIC8vIERvIG5vdCBkbyBmcmFtZSBzeW5jIHdoZW4g
cmVuZGVyaW5nIG9mZnNjcmVlbiBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gZW5zdXJlIHRoYXQgU3dh
cEJ1ZmZlcnMgbmV2ZXIgYmxvY2tzLgorICAgICAgICAvLyBSZW5kZXJpbmcgdG8gdGhlIGFjdHVh
bCBzY3JlZW4gd2lsbCBoYXBwZW4gbGF0ZXIgYW55d2F5IHNpbmNlIHRoZSBVSSBwcm9jZXNzIHNj
aGVkdWxlcyBhIHJlZHJhdyBmb3IgZXZlcnkgdXBkYXRlLAorICAgICAgICAvLyB0aGUgY29tcG9z
aXRvciB3aWxsIHRha2UgY2FyZSBvZiBzeW5jaW5nIHRvIHZibGFuay4KKyAgICAgICAgbV9jb21w
b3NpdG9yID0gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCwg
bV9zdXJmYWNlLT53aW5kb3coKSwgVGhyZWFkZWRDb21wb3NpdG9yOjpTaG91bGREb0ZyYW1lU3lu
Yzo6Tm8pOworICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNl
LT5zdXJmYWNlSUQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jb21wb3NpdG9yID0gVGhyZWFk
ZWRDb21wb3NpdG9yOjpjcmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCk7CiB9CiAKIHZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKQogewogICAgIG1fY29t
cG9zaXRvci0+aW52YWxpZGF0ZSgpOwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52
YWxpZGF0ZSgpOwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIG1f
cmVkaXJlY3RlZFdpbmRvdyA9IG51bGxwdHI7Ci0jZW5kaWYKKyAgICBtX3N1cmZhY2UgPSBudWxs
cHRyOwogfQogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJl
cGFpbnQoKQpAQCAtOTUsMTIgKzkwLDggQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKIAogdm9p
ZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAg
ICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAgICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+
cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOwotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29u
dGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKLSAgICB9Ci0jZW5kaWYKKyAg
ICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpKQor
ICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNl
SUQoKTsKIAogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCk7CiAgICAgbV9jb21wb3NpdG9yLT5zZXREZXZpY2VTY2FsZUZhY3Rvciht
X3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CkBAIC0xMTQsMTIgKzEwNSw5IEBAIHZvaWQg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJl
bmN5Q2hhbmdlZCgpCiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNp
emVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAgICAg
IG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKHNpemUpOwotICAgICAgICBtX2xheWVyVHJlZUNv
bnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKLSAgICB9Ci0j
ZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKHNpemUpKQorICAg
ICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQo
KTsKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShzaXplKTsK
ICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZVZpZXdwb3J0U2l6ZShzaXplKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IGE0MWExMTYuLjg5MGU3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c7CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2U7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBmaW5hbCA6IHB1YmxpYyBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QgewpAQCAtMTA1LDkgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYp
IG92ZXJyaWRlOwogCiAgICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7Ci0j
aWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBtX3JlZGlyZWN0ZWRXaW5kb3c7Ci0jZW5kaWYK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAg
UmVmUHRyPFRocmVhZGVkQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogICAgIGZsb2F0IG1fbGFz
dFNjYWxlRmFjdG9yIHsgMSB9OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fcHJldlNjcm9sbFBv
c2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhhOTg0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlz
cGxheS5oPgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1
cmZhY2VXYXlsYW5kLmgiCisjZW5kaWYKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVgxMS5oIgorI2VuZGlmCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlx
dWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUoV2Vi
UGFnZSYgd2ViUGFnZSkKK3sKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBl
OjpXYXlsYW5kKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6Y3Jl
YXRlKHdlYlBhZ2UpOworI2VuZGlmCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3Vy
ZmFjZVgxMTo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0FjY2VsZXJhdGVkU3VyZmFjZTo6QWNjZWxlcmF0ZWRTdXJmYWNlKFdlYlBhZ2UmIHdlYlBh
Z2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fc2l6ZSh3ZWJQYWdlLnNpemUo
KSkKK3sKKyAgICBtX3NpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwor
fQorCitib29sIEFjY2VsZXJhdGVkU3VyZmFjZTo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUp
Cit7CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKHNpemUpOworICAgIHNjYWxlZFNpemUuc2NhbGUo
bV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIGlmIChzY2FsZWRTaXplID09IG1f
c2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zaXplID0gc2NhbGVkU2l6ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuaApzaW1p
bGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1hEYW1hZ2VOb3RpZmllci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5oCmluZGV4IDkzMzRjYzIuLjE0MGJlNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1
cmZhY2UuaApAQCAtMjUsMzYgKzI1LDI4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZP
Uk0oWDExKQotCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBYRGFtYWdlTm90aWZpZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFhEYW1hZ2VOb3RpZmllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIGZyaWVu
ZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+OwotcHVibGljOgotICAgIHN0
YXRpYyBYRGFtYWdlTm90aWZpZXImIHNpbmdsZXRvbigpOworY2xhc3MgV2ViUGFnZTsKIAotICAg
IHZvaWQgYWRkKERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVt
b3ZlKERhbWFnZSk7CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBj
cmVhdGUoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkU3VyZmFjZSgpID0gZGVm
YXVsdDsKIAotcHJpdmF0ZToKLSAgICBYRGFtYWdlTm90aWZpZXIoKTsKKyAgICB2aXJ0dWFsIHVp
bnQ2NF90IHdpbmRvdygpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gMDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKIAotICAgIHN0YXRpYyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFn
ZUV2ZW50KEdka1hFdmVudCosIEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKik7Ci0gICAgYm9v
bCBub3RpZnkoRGFtYWdlKSBjb25zdDsKK3Byb3RlY3RlZDoKKyAgICBBY2NlbGVyYXRlZFN1cmZh
Y2UoV2ViUGFnZSYpOwogCi0gICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
Pj4gbV9ub3RpZnlGdW5jdGlvbnM7CisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIFdlYkNv
cmU6OkludFNpemUgbV9zaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmYwYjg3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1
cmZhY2VXYXlsYW5kLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2F5
bGFuZC5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYktpdDJXYXls
YW5kQ2xpZW50UHJvdG9jb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNp
bmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIGRp
c3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoIWRp
c3BsYXkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZCBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgZGlzcGxh
eTogJXMiLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlO
YW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5PihuZXcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KGRpc3BsYXkpKTsKKyAgICB9CisK
KyAgICB2b2lkIGJpbmRTdXJmYWNlVG9QYWdlKHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlLCBX
ZWJQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3dlYmtpdGd0aykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB3bF93ZWJraXRndGtfYmluZF9zdXJmYWNlX3RvX3BhZ2Uo
cmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgd2xfd2Via2l0Z3RrKj4obV93ZWJraXRndGsuZ2V0KCkp
LCBzdXJmYWNlLCBwYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAo
bV9kaXNwbGF5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5KHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6
ZShkaXNwbGF5KTsKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKnRoaXMpOworICAgIH0KKworICAgIHZvaWQgcmVnaXN0cnlHbG9iYWwoY29u
c3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCBuYW1lKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwoaW50ZXJmYWNlLCBuYW1l
KTsKKyAgICAgICAgaWYgKCFzdGQ6OnN0cmNtcChpbnRlcmZhY2UsICJ3bF93ZWJraXRndGsiKSkK
KyAgICAgICAgICAgIG1fd2Via2l0Z3RrLnJlc2V0KHN0YXRpY19jYXN0PHN0cnVjdCB3bF9wcm94
eSo+KHdsX3JlZ2lzdHJ5X2JpbmQobV9yZWdpc3RyeS5nZXQoKSwgbmFtZSwgJndsX3dlYmtpdGd0
a19pbnRlcmZhY2UsIDEpKSk7CisgICAgfQorCisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3By
b3h5PiBtX3dlYmtpdGd0azsKK307CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5PiYgd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eT4+IHdheWxhbmREaXNwbGF5KFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRlKCkpOwor
ICAgIHJldHVybiB3YXlsYW5kRGlzcGxheTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJh
dGVkU3VyZmFjZVdheWxhbmQ+IEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OmNyZWF0ZShXZWJQ
YWdlJiB3ZWJQYWdlKQoreworICAgIHJldHVybiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKSA/
IHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kPihuZXcgQWNjZWxlcmF0
ZWRTdXJmYWNlV2F5bGFuZCh3ZWJQYWdlKSkgOiBudWxscHRyOworfQorCitBY2NlbGVyYXRlZFN1
cmZhY2VXYXlsYW5kOjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKFdlYlBhZ2UmIHdlYlBhZ2Up
CisgICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2ViUGFnZSkKKyAgICAsIG1fc3VyZmFjZSh3YXls
YW5kQ29tcG9zaXRvckRpc3BsYXkoKS0+Y3JlYXRlU3VyZmFjZSgpKQorICAgICwgbV93aW5kb3co
d2xfZWdsX3dpbmRvd19jcmVhdGUobV9zdXJmYWNlLmdldCgpLCBzdGQ6Om1heCgxLCBtX3NpemUu
d2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSkpKQoreworICAgIHdheWxhbmRD
b21wb3NpdG9yRGlzcGxheSgpLT5iaW5kU3VyZmFjZVRvUGFnZShtX3N1cmZhY2UuZ2V0KCksIG1f
d2ViUGFnZSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6On5BY2NlbGVyYXRlZFN1
cmZhY2VXYXlsYW5kKCkKK3sKKyAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93aW5kb3cpOwor
fQorCitib29sIEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OnJlc2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQoreworICAgIGlmICghQWNjZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUoc2l6ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2luZG93
LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwLCAwKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXQVlM
QU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMjUwMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIK
KyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9XbFVuaXF1ZVB0ci5oPgor
I2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBB
Y2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFj
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZD4gY3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB+
QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpOworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV93aW5kb3cp
OyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpOyB9CisgICAgYm9vbCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQo
V2ViUGFnZSYpOworCisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+
IG1fc3VyZmFjZTsKKyAgICBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyogbV93aW5kb3cgeyBudWxscHRy
IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdB
WUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcApzaW1pbGFyaXR5IGluZGV4
IDg3JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwCmluZGV4IGRiMzJh
ZTIuLmE1NTU3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcApAQCAtMjQs
NyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVgxMS5o
IgogCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAKQEAgLTM5LDIwICsz
OSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQorc3RkOjp1bmlxdWVfcHRy
PEFjY2VsZXJhdGVkU3VyZmFjZVgxMT4gQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUoV2Vi
UGFnZSYgd2ViUGFnZSkKIHsKICAgICBpZiAoIWRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLnN1cHBvcnRzWENvbXBvc2l0ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93PihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cod2Vi
UGFnZSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlWDEx
PihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlWDExKHdlYlBhZ2UpKTsKIH0KIAotUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KFdlYlBhZ2UmIHdlYlBh
Z2UpCi0gICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKK0FjY2VsZXJhdGVkU3VyZmFjZVgxMTo6QWNj
ZWxlcmF0ZWRTdXJmYWNlWDExKFdlYlBhZ2UmIHdlYlBhZ2UpCisgICAgOiBBY2NlbGVyYXRlZFN1
cmZhY2Uod2ViUGFnZSkKICAgICAsIG1fZGlzcGxheShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSkKLSAgICAsIG1f
c2l6ZSh3ZWJQYWdlLnNpemUoKSkKIHsKLSAgICBtX3NpemUuc2NhbGUobV93ZWJQYWdlLmRldmlj
ZVNjYWxlRmFjdG9yKCkpOwotCiAgICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuT2ZE
aXNwbGF5KG1fZGlzcGxheSk7CiAKICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gbV9kaXNw
bGF5KTsKQEAgLTEwOSw3ICsxMDYsNyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3coV2ViUGFnZSYgd2ViUGFnZSkKICAgICBtX3BpeG1hcCA9
IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwog
fQogCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93KCkKK0FjY2VsZXJhdGVkU3VyZmFjZVgxMTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSgpCiB7
CiAgICAgQVNTRVJUKG1fZGlzcGxheSk7CiAgICAgQVNTRVJUKG1fd2luZG93KTsKQEAgLTEyMCwx
NCArMTE3LDEwIEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3coKQogICAgIG1fcGFyZW50V2luZG93LnJlc2V0KCk7CiB9CiAKLXZvaWQgUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorYm9v
bCBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewot
ICAgIEludFNpemUgc2NhbGVkU2l6ZShzaXplKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1fd2Vi
UGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBpZiAoc2NhbGVkU2l6ZSA9PSBtX3NpemUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2l6ZSA9IHNjYWxlZFNpemU7CisgICAgaWYgKCFB
Y2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0
IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5kb3dzLgogICAgIFhSZXNpemVXaW5kb3cobV9kaXNw
bGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLCBzdGQ6Om1h
eCgxLCBtX3NpemUuaGVpZ2h0KCkpKTsKQEAgLTEzNiw2ICsxMjksNyBAQCB2b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAvLyBS
ZWxlYXNlIHRoZSBwcmV2aW91cyBwaXhtYXAgbGF0ZXIgdG8gZ2l2ZSBzb21lIHRpbWUgdG8gdGhl
IFVJIHByb2Nlc3MgdG8gdXBkYXRlLgogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpLCBbcGl4bWFwID0gV1RGTW92ZShtX3BpeG1hcCldIHsg
fSk7CiAgICAgbV9waXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXks
IG1fd2luZG93LmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaApzaW1pbGFyaXR5IGluZGV4IDc3
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKaW5kZXggODRhNTRkOS4uMGQ3
MmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKQEAgLTI3LDkgKzI3LDggQEAK
IAogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogCi0jaW5jbHVkZSA8V2Vi
Q29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAogdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CiB0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgUGl4bWFwOwpAQCAtMzksMjIgKzM4LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJQYWdlOwogCi1jbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVgxMSBmaW5hbCA6IHB1
YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2Vs
ZXJhdGVkU3VyZmFjZVgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IGNyZWF0
ZShXZWJQYWdlJik7Ci0gICAgflJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCk7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VYMTE+IGNyZWF0ZShXZWJQYWdl
Jik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFjZVgxMSgpOwogCi0gICAgV2luZG93IHdpbmRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9Ci0gICAgUGl4bWFwIHBpeG1hcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGl4bWFwLmdldCgpOyB9Ci0gICAgdm9pZCByZXNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fd2luZG93LmdldCgpOyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9waXhtYXAuZ2V0KCk7IH0KKyAgICBib29sIHJlc2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3coV2ViUGFnZSYpOworICAgIEFjY2VsZXJhdGVkU3VyZmFjZVgxMShX
ZWJQYWdlJik7CiAKLSAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAgICAgRGlzcGxheSogbV9kaXNw
bGF5IHsgbnVsbHB0ciB9OwotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgIFdlYkNv
cmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CiAgICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBt
X3BhcmVudFdpbmRvdzsKICAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJU
cmVlSG9zdEd0ay5jcHAKaW5kZXggOWEwOTJlZC4uNWExNzBlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogCisj
aW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBs
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpA
QCAtNDYsMjAgKzQ3LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQogI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpZiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfWDExKQotI2RlZmluZSBSZWdpb24gWFJlZ2lvbgotI2RlZmluZSBG
b250IFhGb250Ci0jZGVmaW5lIEN1cnNvciBYQ3Vyc29yCi0jZGVmaW5lIFNjcmVlbiBYU2NyZWVu
Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNlbmRpZgotCi0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIK
LSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtMTM3LDkgKzEyNiw3IEBAIFJlZjxMYXllclRyZWVIb3N0R3RrPiBMYXll
clRyZWVIb3N0R3RrOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKIAogTGF5ZXJUcmVlSG9zdEd0
azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9z
dCh3ZWJQYWdlKQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgICwg
bV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUod2Vi
UGFnZSkpCi0jZW5kaWYKKyAgICAsIG1fc3VyZmFjZShBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0
ZSh3ZWJQYWdlKSkKICAgICAsIG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZMYXll
clRyZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSwgdGhpcykpCiB7CiAgICAgbV9yb290TGF5ZXIgPSBH
cmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwpAQCAt
MTY3LDM0ICsxNTQsMzcgQEAgTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQ
YWdlJiB3ZWJQYWdlKQogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
LSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7CisgICAgaWYgKG1fc3VyZmFjZSkgewogICAg
ICAgICBjcmVhdGVUZXh0dXJlTWFwcGVyKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5j
b250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOworICAgICAgICBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKICAgICB9Ci0j
ZW5kaWYKIH0KIAogYm9vbCBMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQoKQog
ewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHVpbnQ2NF90IG5h
dGl2ZUhhbmRsZSA9IG1fcmVkaXJlY3RlZFdpbmRvdyA/IG1fcmVkaXJlY3RlZFdpbmRvdy0+d2lu
ZG93KCkgOiBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEOwotI2Vsc2UKLSAgICB1aW50NjRf
dCBuYXRpdmVIYW5kbGUgPSBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEOwotI2VuZGlmCi0K
KyAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBtX3N1cmZhY2UgPyBtX3N1cmZhY2UtPndpbmRv
dygpIDogbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRDsKICAgICBpZiAoIW5hdGl2ZUhhbmRs
ZSkgewogICAgICAgICBtX2NvbnRleHQgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgbV9jb250ZXh0ID0gR0xD
b250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVX
aW5kb3dUeXBlPihuYXRpdmVIYW5kbGUpLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOwot
ICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CisKKyAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRG
b3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG5hdGl2ZUhhbmRs
ZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKKyAg
ICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBEbyBub3QgZG8gZnJhbWUgc3luYyB3aGVuIHJlbmRlcmluZyBvZmZzY3JlZW4gaW4gdGhl
IHdlYiBwcm9jZXNzIHRvIGVuc3VyZSB0aGF0IFN3YXBCdWZmZXJzIG5ldmVyIGJsb2Nrcy4KKyAg
ICAvLyBSZW5kZXJpbmcgdG8gdGhlIGFjdHVhbCBzY3JlZW4gd2lsbCBoYXBwZW4gbGF0ZXIgYW55
d2F5IHNpbmNlIHRoZSBVSSBwcm9jZXNzIHNjaGVkdWxlcyBhIHJlZHJhdyBmb3IgZXZlcnkgdXBk
YXRlLAorICAgIC8vIHRoZSBjb21wb3NpdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHN5bmNpbmcgdG8g
dmJsYW5rLgorICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIG1fY29udGV4dC0+c3dhcEludGVy
dmFsKDApOwogCi0gICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIExheWVyVHJlZUhvc3RHdGs6On5MYXllclRyZWVIb3N0R3Rr
KCkKQEAgLTIyOSw5ICsyMTksNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUo
KQogICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0
ZSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgbV9yZWRp
cmVjdGVkV2luZG93ID0gbnVsbHB0cjsKLSNlbmRpZgorICAgIG1fc3VyZmFjZSA9IG51bGxwdHI7
CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKQpAQCAtMjcxLDI0ICsyNTksMTYgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpz
aXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBvbGRT
aXplLmhlaWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRTaXpl
LmhlaWdodCgpKSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlm
IChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNp
emUobmV3U2l6ZSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3Jl
ZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1cmZh
Y2UgJiYgbV9zdXJmYWNlLT5yZXNpemUobmV3U2l6ZSkpCisgICAgICAgIG1fbGF5ZXJUcmVlQ29u
dGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgY29tcG9zaXRl
TGF5ZXJzVG9Db250ZXh0KEZvclJlc2l6ZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAgICAg
IG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOwotICAgICAgICBt
X2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAo
KTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXpl
KG1fd2ViUGFnZS5zaXplKCkpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElE
ID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKIAogICAgIC8vIE90aGVyIGxheWVycyBsZWFybiBv
ZiB0aGUgc2NhbGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IuCiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggZDY5ZGU5Ny4uNDQ3NDUwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXll
clRyZWVIb3N0R3RrLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OworY2xhc3MgQWNjZWxlcmF0ZWRTdXJm
YWNlOwogCiBjbGFzcyBMYXllclRyZWVIb3N0R3RrIGZpbmFsIDogcHVibGljIExheWVyVHJlZUhv
c3QsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAtMTA5LDkgKzEw
OSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXI+IG1fdGV4dHVyZU1hcHBlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250
ZXh0PiBtX2NvbnRleHQ7CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY2Fs
ZU1hdHJpeDsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IG1fcmVkaXJlY3RlZFdpbmRv
dzsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IG1fc3Vy
ZmFjZTsKICAgICBSZW5kZXJGcmFtZVNjaGVkdWxlciBtX3JlbmRlckZyYW1lU2NoZWR1bGVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMTRiM2Ex
NC4uNmM0MjVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0zMDAsNiArMzAwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgbV9hcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS0+c2V0RGVmYXVsdE9yaWdpblF1b3RhKDI1VUxMICogMTAyNCAqIDEw
MjQpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIG1fd2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5TmFtZSA9IHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFt
ZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmICghcGFyYW1ldGVycy5tZWRp
YUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3Rv
cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiNWJkOGEyLi42
MGZlZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTk4LDYg
KzE5OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bnMoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBTdHJpbmcgd2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5TmFtZTsgfQorI2VuZGlmCisKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqKTsKICAgICBzdGF0aWMgUmVmUHRyPEFQ
STo6T2JqZWN0PiB0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0Kik7CiAKQEAg
LTQwMSw2ICs0MDUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVz
c3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2VyR2VzdHVy
ZVRva2VuICosIHVpbnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOworCisjaWYgUExBVEZPUk0o
V0FZTEFORCkKKyAgICBTdHJpbmcgbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXgg
MzExNGEzOS4uZjExNTE3NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTM4OSwxMCArMzg5LDE0
IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJS
T1IgIlJlY29tcGlsZSBHVEsrIHdpdGggV2F5bGFuZCBiYWNrZW5kIHRvIHVzZSBFTkFCTEVfV0FZ
TEFORF9UQVJHRVQiKQogICAgIGVuZGlmICgpCiAKLSAgICBpZiAoRU5BQkxFX1dBWUxBTkRfVEFS
R0VUIEFORCBHVEszX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuMTIpCisgICAgaWYgKEdUSzNfVkVS
U0lPTiBWRVJTSU9OX0xFU1MgMy4xMikKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR1RL
KyAzLjEyIGlzIHJlcXVpcmVkIHRvIHVzZSBFTkFCTEVfV0FZTEFORF9UQVJHRVQiKQogICAgIGVu
ZGlmICgpCiAKKyAgICBpZiAoTk9UIEVHTF9GT1VORCkKKyAgICAgICAgbWVzc2FnZShGQVRBTF9F
UlJPUiAiRUdMIGlzIHJlcXVpcmVkIHRvIHVzZSBFTkFCTEVfV0FZTEFORF9UQVJHRVQiKQorICAg
IGVuZGlmICgpCisKICAgICBmaW5kX3BhY2thZ2UoV2F5bGFuZCBSRVFVSVJFRCkKIGVuZGlmICgp
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287261</attachid>
            <date>2016-08-29 02:26:32 -0700</date>
            <delta_ts>2016-08-29 02:26:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-wayland-ac.diff</filename>
            <type>text/plain</type>
            <size>197055</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNDc1MDgxLi4wNmQyNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3
IEBACisyMDE2LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBkb2VzIG5vdCB3b3Jr
IGluIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTgwMworCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgorCisg
ICAgICAgIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uIGluIFdlYktpdDIgdXNlcyBhIG5lc3Rl
ZCBkaXNwbGF5IHJ1bm5pbmcgaW4gdGhlIFVJIHByb2Nlc3Mgc28gdGhhdCBHTCBjb250ZXh0cyBj
cmVhdGVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2VzcyBuZWVkIHRvIGJlIGNyZWF0ZWQgaW4g
dGhlIG5lc3RlZCBkaXNwbGF5LiBXZSBjdXJyZW50bHkgaGF2ZSBhIHNoYXJlZCBwbGF0Zm9ybSBk
aXNwbGF5IHRoYXQKKyAgICAgICAgc2hvdWxkIHJlcHJlc2VudCB0aGUgY29ubmVjdGlvbiB0byB0
aGUgYWN0dWFsIGRpc3BsYXkgYWxsIGFwcGxpY2F0aW9ucyBjb25uZWN0IHRvLiBUaGlzIHBhdGNo
IHJlZmFjdG9ycyB0aGUKKyAgICAgICAgR0xDb250ZXh0IEFQSSB0byBlbnN1cmUgdGhhdCBHTCBj
b250ZXh0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxhciBwbGF0Zm9ybSBkaXNw
bGF5LiBUaGUgY3JlYXRlCisgICAgICAgIG1ldGhvZHMgcmVjZWl2ZSBhbiBvcHRpb25hbCBQbGF0
Zm9ybURpc3BsYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgb2YgYWxsIEdMIG9w
ZXJhdGlvbnMgb2YgdGhlIGNyZWF0ZWQKKyAgICAgICAgR0wgY29udGV4dC4gVGhlIHNoYXJpbmcg
R0wgY29udGV4dCBzaG91bGQgYWxzbyBzaGFyZSB0aGUgc2FtZSBkaXNwbGF5LCBpdCBjYW4ndCBi
ZSBnbG9iYWwgdG8gdGhlIHByb2Nlc3MsIGJ1dCB0bworICAgICAgICB0aGUgZGlzcGxheSwgc28g
aXQncyBub3cgY3JlYXRlZCBvbiBkZW1hbmQgYnkgdGhlIFBsYXRmb3JtRGlzcGxheS4gSW4gYWRk
aXRpb24gdG8gdGhlIGdsb2JhbCBzaGFyZWQgZGlzcGxheSwKKyAgICAgICAgaXQncyBub3cgcG9z
c2libGUgdG8gc2V0IGEgc2hhcmVkIGRpc3BsYXkgZm9yIGNvbXBvc2l0aW5nIHRoYXQgY2FuIGJl
IHVzZWQgd2hlbiBjcmVhdGluZyBHTCBjb250ZXh0cy4gVGhpcyBtYWtlcworICAgICAgICBpdCBw
b3NzaWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgZGlzcGxheSBmb3IgY29tcG9zaXRpbmcsIGNvbm5l
Y3RlZCB0byB0aGUgbmVzdGVkIGRpc3BsYXkgaW4gd2F5bGFuZCwgZXZlbiBpbiBub24KKyAgICAg
ICAgd2F5bGFuZCBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3Vw
cG9ydCBmb3Igc3VyZmFjZWxlc3MgRUdMIGNvbnRleHRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9m
ZnNjcmVlbiBjb250ZXh0cy4gSXQgYWxzbyBhZGRzCisgICAgICAgIHN1cHBvcnQgZm9yIG9mZnNj
cmVlbiB3YXlsYW5kIGNvbnRleHRzLCBhcyBhIGZhbGxiYWNrIGluIHdheWxhbmQgaW4gY2FzZSBz
dXJmYWNlbGVzcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAgICBTb21lIHdheWxhbmQgY29kZSB0
aGF0IGlzIHNwZWNpZmljIHRvIHRoZSBXZWJLaXQyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIG1v
dmVkIHRvIHRoZSBXZWJLaXQyIGxheWVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0OjpjcmVhdGVTaGFyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHQ6OkdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6On5HTENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjdXJyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmFjdGl2ZUNvbnRleHRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HTENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6ZGlzcGxheSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSk6IEFsd2F5cyB1c2UgdGhlIGRlZmF1bHQgd2F5
bGFuZCBkaXNwbGF5IGNyZWF0ZWQgYnkgR1RLKyBmb3IKKyAgICAgICAgdGhlIGdsb2JhbCBzaGFy
ZWQgZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheTo6c2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjplZ2xEaXNw
bGF5cyk6IEhlbHBlciBIYXNoU2V0IHRvIGtlZXAgdHJhY2sgb2YgYWxsIFBsYXRmb3JtRGlzcGxh
eXMgd2l0aCBhbiBFR0wgZGlzcGxheSBpbnRpYWxpemVkIHRvCisgICAgICAgIHByb3Blcmx5IHRl
cm1pbWF0ZSB0aGVtIGF0IGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6
OmluaXRpYWxpemVFR0xEaXNwbGF5KTogUmVtb3ZlIGVnbEJpbmRBUEkoKSBmcm9tIGRpc3BsYXkg
aW5pdGlhbGl6YXRpb24sIHNpbmNlIGl0J3MKKyAgICAgICAgbm90IGEgZGlzcGxheSBpbml0aWFs
aXphdGlvbiBhbmQgaXQncyB0aHJlYWQgc3BlY2lmaWMsIHNvIGl0IG5lZWRzIHRvIGJlIGNhbGxl
ZCBvbiBldmVyeSB0aHJlYWQgd2hlcmUgRUdMIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRhdGE6OmNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6Z2V0RUdMQ29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3Jl
YXRlV2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0
ZVBidWZmZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
U3VyZmFjZWxlc3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3Jl
YXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0
ZVdheWxhbmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRv
d0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVy
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEdMWDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdM
WDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp3YWl0TmF0
aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNw
bGF5V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5k
OjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheVdheWxhbmQ6On5QbGF0Zm9ybURpc3BsYXlXYXlsYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpuYXRpdmUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJm
YWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dl
YktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oOiBNYWtlIGl0IHBvc3NpYmxlIHRv
IHVzZSBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBXYXlsYW5kIG9iamVjdHMuCisgICAgICAgIChXZWJD
b3JlOjpXbFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA4LTI5ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBBZGQgc3VwcG9y
dCBmb3IgQnVmZmVyU291cmNlIGJvZGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5
MzM0Y2ZiLi5lMzIzZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTQ0LDYgKzE0
NCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKQEAgLTM0OCwyNCArMzUwLDYgQEAgaWYgKEVOQUJM
RV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XQVlMQU5EX1RB
UkdFVCkKLSAgICAjIFdheWxhbmQgcHJvdG9jb2wgZXh0ZW5zaW9uLgotICAgIGFkZF9jdXN0b21f
Y29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9X
ZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwotICAgICAgICBERVBFTkRTICR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFBy
b3RvY29sLnhtbAotICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBzZXJ2ZXItaGVhZGVy
IDwgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRHdGtXYXls
YW5kQ2xpZW50UHJvdG9jb2wueG1sID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dl
YktpdEd0a1dheWxhbmRTZXJ2ZXJQcm90b2NvbC5oCi0gICAgICAgIENPTU1BTkQgd2F5bGFuZC1z
Y2FubmVyIGNsaWVudC1oZWFkZXIgPCAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93
YXlsYW5kL1dlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC54bWwgPiAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLmgKLSAgICAg
ICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgY29kZSA8ICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnhtbCA+ICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9j
b2wuYwotICAgICkKLQotICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCi0gICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmNwcAotICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAotICAgICkK
LSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwotICAgICAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLmMK
LSAgICApCi0KICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgICAgICR7V0FZTEFORF9JTkNMVURFX0RJUlN9CiAgICAgKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggZGU2MTI0OC4uZTkz
MDNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCkBAIC0xOSwxMCArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxF
KEdSQVBISUNTX0NPTlRFWFRfM0QpCi0KICNpbmNsdWRlICJHTENvbnRleHQuaCIKLQotI2luY2x1
ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgog
CiAjaWYgVVNFKEVHTCkKQEAgLTU3LDEyICs1NCw2IEBAIGlubGluZSBUaHJlYWRHbG9iYWxHTENv
bnRleHQqIGN1cnJlbnRDb250ZXh0KCkKICAgICByZXR1cm4gKlRocmVhZEdsb2JhbEdMQ29udGV4
dDo6c3RhdGljR0xDb250ZXh0OwogfQogCi1HTENvbnRleHQqIEdMQ29udGV4dDo6c2hhcmluZ0Nv
bnRleHQoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0Piwgc2hhcmluZywgKGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKSkpOwot
ICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwotfQotCiAjaWYgUExBVEZPUk0oWDExKQogLy8gQmVj
YXVzZSBvZiBkcml2ZXIgYnVncywgZXhpdGluZyB0aGUgcHJvZ3JhbSB3aGVuIHRoZXJlIGFyZSBh
Y3RpdmUgcGJ1ZmZlcnMKIC8vIGNhbiBjcmFzaCB0aGUgWCBzZXJ2ZXIgKHRoaXMgaGFzIGJlZW4g
b2JzZXJ2ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgTnZpZGlhIGRyaXZlcnMpLgpAQCAtMTExLDEyICsx
MDIsMzAgQEAgdm9pZCBHTENvbnRleHQ6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCiB9
CiAjZW5kaWYgLy8gUExBVEZPUk0oWDExKQogCitzdGF0aWMgYm9vbCBpbml0aWFsaXplT3BlbkdM
U2hpbXNJZk5lZWRlZCgpCit7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0YXRp
YyBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAg
c3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOworICAgICAgICBpbml0aWFsaXplZCA9
IHRydWU7CisgICAgfQorICAgIHJldHVybiBzdWNjZXNzOworI2VuZGlmCit9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5h
dGl2ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQor
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIFBsYXRmb3JtRGlzcGxheSogcGxh
dGZvcm1EaXNwbGF5KQogewotI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCi0gICAg
aWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdM
Q29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkK
KyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVkKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5ID0gcGxhdGZvcm1EaXNw
bGF5ID8gKnBsYXRmb3JtRGlzcGxheSA6IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
OworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKGRpc3BsYXkudHlwZSgpID09IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0
ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgZGlzcGxheSkpCiAg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZShlZ2xDb250ZXh0KTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtMTI4LDM0ICsxMzcsNjAgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlw
ZQogI2Vsc2UKICAgICBYSUQgR0xYV2luZG93SGFuZGxlID0gc3RhdGljX2Nhc3Q8WElEPih3aW5k
b3dIYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdM
WDo6Y3JlYXRlQ29udGV4dChHTFhXaW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICBp
ZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdMWFdpbmRv
d0hhbmRsZSwgZGlzcGxheSkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGdseENvbnRleHQpOwog
I2VuZGlmCiAjaWYgVVNFKEVHTCkKLSAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0
RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgIGlm
IChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFu
ZGxlLCBkaXNwbGF5KSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZWdsQ29udGV4dCk7CiAjZW5k
aWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotR0xDb250ZXh0OjpHTENvbnRleHQoKQorc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0
KFBsYXRmb3JtRGlzcGxheSogcGxhdGZvcm1EaXNwbGF5KQogewotI2lmIFBMQVRGT1JNKFgxMSkK
LSAgICBhZGRBY3RpdmVDb250ZXh0KHRoaXMpOworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTFNo
aW1zSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY3Jl
YXRlQ29udGV4dEZvcldpbmRvdygwLCBwbGF0Zm9ybURpc3BsYXkgPyBwbGF0Zm9ybURpc3BsYXkg
OiAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlz
cGxheSYgZGlzcGxheSkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xTaGltc0lmTmVlZGVk
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisjaWYgVVNFKEdMWCkKKyAgICBpZiAoZGlz
cGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKKyAgICAgICAgaWYg
KGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlz
cGxheSkpCisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhDb250ZXh0KTsKKyAgICB9CiAj
ZW5kaWYKKworI2lmIFVTRShFR0wpIHx8IFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoZGlzcGxheSkp
CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRleHQpOworI2VuZGlmCisKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0Ojpj
cmVhdGVPZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitHTENvbnRl
eHQ6OkdMQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkpCisgICAgOiBtX2Rpc3BsYXko
ZGlzcGxheSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ29udGV4dEZvcldpbmRvdygwLCBzaGFyaW5n
Q29udGV4dCk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIGlmIChkaXNwbGF5LnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgYWRkQWN0aXZlQ29udGV4dCh0aGlz
KTsKKyNlbmRpZgogfQogCiBHTENvbnRleHQ6On5HTENvbnRleHQoKQogewogICAgIGlmICh0aGlz
ID09IGN1cnJlbnRDb250ZXh0KCktPmNvbnRleHQoKSkKLSAgICAgICAgY3VycmVudENvbnRleHQo
KS0+c2V0Q29udGV4dCgwKTsKKyAgICAgICAgY3VycmVudENvbnRleHQoKS0+c2V0Q29udGV4dChu
dWxscHRyKTsKICNpZiBQTEFURk9STShYMTEpCi0gICAgcmVtb3ZlQWN0aXZlQ29udGV4dCh0aGlz
KTsKKyAgICBpZiAobV9kaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Olgx
MSkKKyAgICAgICAgcmVtb3ZlQWN0aXZlQ29udGV4dCh0aGlzKTsKICNlbmRpZgogfQogCkBAIC0x
NjUsNyArMjAwLDcgQEAgYm9vbCBHTENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLUdMQ29udGV4dCogR0xDb250ZXh0OjpnZXRDdXJyZW50KCkKK0dM
Q29udGV4dCogR0xDb250ZXh0OjpjdXJyZW50KCkKIHsKICAgICByZXR1cm4gY3VycmVudENvbnRl
eHQoKS0+Y29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
TENvbnRleHQuaAppbmRleCBkNDM5NDU0Li5jODJmMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBH
TENvbnRleHRfaAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJX
aWRnZXQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogI2lmIFVTRShFR0wpICYmICFQTEFURk9STShHVEspCkBAIC0zOSwyNyAr
MzksMjUgQEAgdHlwZWRlZiB1aW50NjRfdCBHTE5hdGl2ZVdpbmRvd1R5cGU7CiB0eXBlZGVmIHN0
cnVjdCBfY2Fpcm9fZGV2aWNlIGNhaXJvX2RldmljZV90OwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShYMTEpCi10eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdMQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoR0xDb250ZXh0KTsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHQpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dD4gY3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlT2Zmc2NyZWVuQ29udGV4dChHTENvbnRleHQq
IHNoYXJpbmcgPSAwKTsKLSAgICBzdGF0aWMgR0xDb250ZXh0KiBnZXRDdXJyZW50KCk7Ci0gICAg
c3RhdGljIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93SGFuZGxlLCBQbGF0Zm9ybURpc3BsYXkqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoUGxhdGZv
cm1EaXNwbGF5KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0PiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsKKyAgICBzdGF0aWMg
R0xDb250ZXh0KiBjdXJyZW50KCk7CisKKyAgICBQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXkoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KIAotICAgIEdMQ29udGV4dCgpOwogICAgIHZpcnR1
YWwgfkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
aXROYXRpdmUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1l
YnVmZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXpl
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzd2FwSW50ZXJ2YWwoaW50KSA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNFR0xDb250ZXh0KCkgY29uc3QgPSAwOwogCkBAIC02NywyNiArNjUsMjEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCkgPSAw
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShYMTEpCi0gICAgc3RhdGljIERpc3BsYXkqIHNoYXJl
ZFgxMURpc3BsYXkoKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkWDExRGlzcGxheSgp
OworI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQorICAgIHZpcnR1YWwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSA9IDA7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFgxMSkKK3ByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChH
TENvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVBY3RpdmVDb250ZXh0KEdMQ29udGV4
dCopOwogICAgIHN0YXRpYyB2b2lkIGNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpOwotCi0j
aWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCi0gICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpID0gMDsKICNlbmRpZgogCi0gICAgY2xhc3Mg
RGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5EYXRhKCkgPSBkZWZhdWx0Owot
ICAgIH07Ci0KIHByb3RlY3RlZDoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YT4gbV9jb250ZXh0
RGF0YTsKKyAgICBHTENvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CisKKyAgICBQbGF0Zm9ybURp
c3BsYXkmIG1fZGlzcGxheTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuY3BwCmluZGV4IDE1Y2Q0ZGYuLjZhNzMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRwogewog
ICAgIHN3aXRjaCAocmVuZGVyU3R5bGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJPZmZzY3JlZW46Ci0gICAgICAgIG1fZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVP
ZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgICAgIG1f
Z2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCZQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyVG9DdXJyZW50R0xDb250ZXh0OgogICAg
ICAgICBicmVhazsKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAKIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQoKQogewotICAgIHJldHVybiBt
X2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdMQ29udGV4dDo6
Z2V0Q3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICByZXR1cm4gbV9nbENvbnRleHQg
PyBtX2dsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBHTENvbnRleHQ6OmN1cnJlbnQoKS0+
cGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIKIAogI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAobV9jb250ZXh0LT5tX2F0dHJzLmFudGlh
bGlhcyAmJiBtX2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRp
c2FtcGxlRkJPKSB7Ci0gICAgICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0g
R0xDb250ZXh0OjpnZXRDdXJyZW50KCk7CisgICAgICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3Rp
dmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CiAgICAgICAgIGlmIChwcmV2aW91c0Fj
dGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCiAgICAgICAgICAgICBtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCAyZTkxYWEzLi4xODUxN2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3Bs
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlz
cGxheS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybURpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUg
PGNzdGRsaWI+CiAjaW5jbHVkZSA8bXV0ZXg+CiAKQEAgLTU5LDYgKzYwLDggQEAKIAogI2lmIFVT
RShFR0wpCiAjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzYsNyArNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQ
bGF0Zm9ybURpc3BsYXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShXQVlMQU5EKQogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKQot
ICAgICAgICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlKCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KGdka193YXls
YW5kX2Rpc3BsYXlfZ2V0X3dsX2Rpc3BsYXkoZGlzcGxheSkpOwogI2VuZGlmCiAjZW5kaWYKICNl
bGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCkBAIC0xMDMsNiArMTA2
LDE4IEBAIFBsYXRmb3JtRGlzcGxheSYgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkK
ICAgICByZXR1cm4gKmRpc3BsYXk7CiB9CiAKK3N0YXRpYyBQbGF0Zm9ybURpc3BsYXkqIHNfc2hh
cmVkRGlzcGxheUZvckNvbXBvc2l0aW5nOworCitQbGF0Zm9ybURpc3BsYXkmIFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkKK3sKKyAgICByZXR1cm4gc19zaGFy
ZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcgPyAqc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcg
OiBzaGFyZWREaXNwbGF5KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFyZWRE
aXNwbGF5Rm9yQ29tcG9zaXRpbmcoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5KQoreworICAgIHNf
c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nID0gJmRpc3BsYXk7Cit9CisKIFBsYXRmb3JtRGlz
cGxheTo6UGxhdGZvcm1EaXNwbGF5KCkKICNpZiBVU0UoRUdMKQogICAgIDogbV9lZ2xEaXNwbGF5
KEVHTF9OT19ESVNQTEFZKQpAQCAtMTE3LDcgKzEzMiwyMiBAQCBQbGF0Zm9ybURpc3BsYXk6On5Q
bGF0Zm9ybURpc3BsYXkoKQogI2VuZGlmCiB9CiAKKyNpZiAhUExBVEZPUk0oRUZMKQorR0xDb250
ZXh0KiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJpbmdHTENvbnRleHQoKQoreworICAgIGlmICghbV9z
aGFyaW5nR0xDb250ZXh0KQorICAgICAgICBtX3NoYXJpbmdHTENvbnRleHQgPSBHTENvbnRleHQ6
OmNyZWF0ZVNoYXJpbmdDb250ZXh0KCp0aGlzKTsKKyAgICByZXR1cm4gbV9zaGFyaW5nR0xDb250
ZXh0LmdldCgpOworfQorI2VuZGlmCisKICNpZiBVU0UoRUdMKQorc3RhdGljIEhhc2hTZXQ8UGxh
dGZvcm1EaXNwbGF5Kj4mIGVnbERpc3BsYXlzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxQbGF0Zm9ybURpc3BsYXkqPj4gZGlzcGxheXM7CisgICAgcmV0dXJuIGRpc3Bs
YXlzOworfQorCiBFR0xEaXNwbGF5IFBsYXRmb3JtRGlzcGxheTo6ZWdsRGlzcGxheSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2VnbERpc3BsYXlJbml0aWFsaXplZCkKQEAgLTEyNSwxMiArMTU1LDIw
IEBAIEVHTERpc3BsYXkgUGxhdGZvcm1EaXNwbGF5OjplZ2xEaXNwbGF5KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9lZ2xEaXNwbGF5OwogfQogCitib29sIFBsYXRmb3JtRGlzcGxheTo6ZWdsQ2hlY2tW
ZXJzaW9uKGludCBtYWpvciwgaW50IG1pbm9yKSBjb25zdAoreworICAgIGlmICghbV9lZ2xEaXNw
bGF5SW5pdGlhbGl6ZWQpCisgICAgICAgIGNvbnN0X2Nhc3Q8UGxhdGZvcm1EaXNwbGF5Kj4odGhp
cyktPmluaXRpYWxpemVFR0xEaXNwbGF5KCk7CisKKyAgICByZXR1cm4gKG1fZWdsTWFqb3JWZXJz
aW9uID4gbWFqb3IpIHx8ICgobV9lZ2xNYWpvclZlcnNpb24gPT0gbWFqb3IpICYmIChtX2VnbE1p
bm9yVmVyc2lvbiA+PSBtaW5vcikpOworfQorCiB2b2lkIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlh
bGl6ZUVHTERpc3BsYXkoKQogewogICAgIG1fZWdsRGlzcGxheUluaXRpYWxpemVkID0gdHJ1ZTsK
IAogICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIHsKLS8vIEVHTCBpcyBv
cHRpb25hbGx5IHNvZnQgbGlua2VkIG9uIFdpbmRvd3MuCisgICAgICAgIC8vIEVHTCBpcyBvcHRp
b25hbGx5IHNvZnQgbGlua2VkIG9uIFdpbmRvd3MuCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAg
ICBhdXRvIGVnbEdldERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5UHRyKCk7CiAgICAgICAgIGlmICgh
ZWdsR2V0RGlzcGxheSkKQEAgLTE0MSwzNiArMTc5LDQxIEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5
Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKGVnbEluaXRpYWxpemUobV9lZ2xEaXNwbGF5LCAwLCAwKSA9PSBFR0xfRkFMU0UpIHsK
KyAgICBFR0xpbnQgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb247CisgICAgaWYgKGVnbEluaXRp
YWxpemUobV9lZ2xEaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xf
RkFMU0UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFR0xEaXNwbGF5IEluaXRpYWxpemF0aW9uIGZh
aWxlZC4iKTsKICAgICAgICAgdGVybWluYXRlRUdMRGlzcGxheSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIHN0YXRpYyBjb25zdCBFR0xlbnVt
IGVnbEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0VTX0FQSTsKLSNlbHNlCi0gICAgc3RhdGljIGNv
bnN0IEVHTGVudW0gZWdsQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfQVBJOwotI2VuZGlmCi0gICAg
aWYgKGVnbEJpbmRBUEkoZWdsQVBJVmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7Ci0gICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHNldCBFR0wgQVBJKCVkKS4iLCBlZ2xHZXRFcnJvcigpKTsKLSAg
ICAgICAgdGVybWluYXRlRUdMRGlzcGxheSgpOwotICAgICAgICByZXR1cm47CisgICAgbV9lZ2xN
YWpvclZlcnNpb24gPSBtYWpvclZlcnNpb247CisgICAgbV9lZ2xNaW5vclZlcnNpb24gPSBtaW5v
clZlcnNpb247CisKKyAgICBlZ2xEaXNwbGF5cygpLmFkZCh0aGlzKTsKKworICAgIHN0YXRpYyBi
b29sIGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghZWdsQXRl
eGl0SGFuZGxlckluaXRpYWxpemVkKSB7CisgICAgICAgIC8vIEVHTCByZWdpc3RlcnMgYXRleGl0
IGhhbmRsZXJzIHRvIGNsZWFudXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCisgICAgICAgIC8v
IFNpbmNlIHRoZSBnbG9iYWwgUGxhdGZvcm1EaXNwbGF5IGluc3RhbmNlIGlzIGNyZWF0ZWQgYmVm
b3JlLAorICAgICAgICAvLyB3aGVuIHRoZSBQbGF0Zm9ybURpc3BsYXkgZGVzdHJ1Y3RvciBpcyBj
YWxsZWQsIEVHTCBoYXMgYWxyZWFkeSByZW1vdmVkIHRoZQorICAgICAgICAvLyBkaXNwbGF5IGZy
b20gdGhlIGxpc3QsIGNhdXNpbmcgZWdsVGVybWluYXRlKCkgdG8gY3Jhc2guIFNvLCBoZXJlIHdl
IHJlZ2lzdGVyCisgICAgICAgIC8vIG91ciBvd24gYXRleGl0IGhhbmRsZXIsIGFmdGVyIEVHTCBo
YXMgYmVlbiBpbml0aWFsaXplZCBhbmQgYWZ0ZXIgdGhlIGdsb2JhbAorICAgICAgICAvLyBpbnN0
YW5jZSBoYXMgYmVlbiBjcmVhdGVkIHRvIGVuc3VyZSB3ZSBjYWxsIGVnbFRlcm1pbmF0ZSgpIGJl
Zm9yZSB0aGUgb3RoZXIKKyAgICAgICAgLy8gRUdMIGF0ZXhpdCBoYW5kbGVycyBhbmQgdGhlIFBs
YXRmb3JtRGlzcGxheSBkZXN0cnVjdG9yLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzk3My4KKyAgICAgICAgZWdsQXRleGl0SGFuZGxl
ckluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgc3RkOjphdGV4aXQoW10geworICAgICAgICAg
ICAgd2hpbGUgKCFlZ2xEaXNwbGF5cygpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGF1
dG8qIGRpc3BsYXkgPSBlZ2xEaXNwbGF5cygpLnRha2VBbnkoKTsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5LT50ZXJtaW5hdGVFR0xEaXNwbGF5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OwogICAgIH0KLQotICAgIC8vIEVHTCByZWdpc3RlcnMgYXRleGl0IGhhbmRsZXJzIHRvIGNsZWFu
dXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCi0gICAgLy8gU2luY2UgdGhlIGdsb2JhbCBQbGF0
Zm9ybURpc3BsYXkgaW5zdGFuY2UgaXMgY3JlYXRlZCBiZWZvcmUsCi0gICAgLy8gd2hlbiB0aGUg
UGxhdGZvcm1EaXNwbGF5IGRlc3RydWN0b3IgaXMgY2FsbGVkLCBFR0wgaGFzIGFscmVhZHkgcmVt
b3ZlZCB0aGUKLSAgICAvLyBkaXNwbGF5IGZyb20gdGhlIGxpc3QsIGNhdXNpbmcgZWdsVGVybWlu
YXRlKCkgdG8gY3Jhc2guIFNvLCBoZXJlIHdlIHJlZ2lzdGVyCi0gICAgLy8gb3VyIG93biBhdGV4
aXQgaGFuZGxlciwgYWZ0ZXIgRUdMIGhhcyBiZWVuIGluaXRpYWxpemVkIGFuZCBhZnRlciB0aGUg
Z2xvYmFsCi0gICAgLy8gaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCB0byBlbnN1cmUgd2UgY2Fs
bCBlZ2xUZXJtaW5hdGUoKSBiZWZvcmUgdGhlIG90aGVyCi0gICAgLy8gRUdMIGF0ZXhpdCBoYW5k
bGVycyBhbmQgdGhlIFBsYXRmb3JtRGlzcGxheSBkZXN0cnVjdG9yLgotICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTczLgotICAgIHN0ZDo6YXRl
eGl0KFtdIHsgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudGVybWluYXRlRUdMRGlz
cGxheSgpOyB9KTsKIH0KIAogdm9pZCBQbGF0Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3Bs
YXkoKQogeworICAgIG1fc2hhcmluZ0dMQ29udGV4dCA9IG51bGxwdHI7CiAgICAgQVNTRVJUKG1f
ZWdsRGlzcGxheUluaXRpYWxpemVkKTsKICAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19E
SVNQTEFZKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCmluZGV4IDkyMDlmNDUuLjcwMDc3MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5o
CkBAIC0zNSwxMCArMzUsMTMgQEAgdHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdMQ29udGV4dDsKKwogY2xhc3MgUGxhdGZvcm1EaXNwbGF5
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybURpc3BsYXkpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5JiBzaGFy
ZWREaXNwbGF5KCk7CisgICAgc3RhdGljIFBsYXRmb3JtRGlzcGxheSYgc2hhcmVkRGlzcGxheUZv
ckNvbXBvc2l0aW5nKCk7CiAgICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5KCk7CiAKICAgICBl
bnVtIGNsYXNzIFR5cGUgewpAQCAtNTUsMTMgKzU4LDIyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogCisjaWYgIVBMQVRGT1JNKEVGTCkKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgbm90IGhhdmUgYW55IHBsYXRmb3JtIGlmZGVmLCBidXQgRUZMIGhh
cyBpdHMgb3duIEVHTENvbnRleHQgY2xhc3MKKyAgICAvLyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBH
TENvbnRleHQgY29tbW9uIEFQSS4KKyAgICBHTENvbnRleHQqIHNoYXJpbmdHTENvbnRleHQoKTsK
KyNlbmRpZgorCiAjaWYgVVNFKEVHTCkKICAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkoKSBjb25z
dDsKKyAgICBib29sIGVnbENoZWNrVmVyc2lvbihpbnQgbWFqb3IsIGludCBtaW5vcikgY29uc3Q7
CiAjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtRGlzcGxheSgpOwogCisgICAgc3Rh
dGljIHZvaWQgc2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKFBsYXRmb3JtRGlzcGxheSYp
OworCiAjaWYgVVNFKEVHTCkKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUVHTERpc3BsYXko
KTsKIApAQCAtNzUsNyArODcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRlcm1pbmF0ZUVHTERp
c3BsYXkoKTsKIAogICAgIGJvb2wgbV9lZ2xEaXNwbGF5SW5pdGlhbGl6ZWQgeyBmYWxzZSB9Owor
ICAgIGludCBtX2VnbE1ham9yVmVyc2lvbiB7IDAgfTsKKyAgICBpbnQgbV9lZ2xNaW5vclZlcnNp
b24geyAwIH07CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBtX3NoYXJp
bmdHTENvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCmluZGV4IDhmNDhjMjAuLjNjZDJhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBA
IC04OCw4ICs4OCw4IEBAIEltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSgpCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgR0xD
b250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsK
LSAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50
KCk7CisgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5z
aGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKG1fdGV4
dHVyZSkKICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKQEAgLTEwOCw3
ICsxMDgsOCBAQCBJbWFnZUJ1ZmZlckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVh
dGVDb21wb3NpdG9yQnVmZmVyKCkKIHsKLSAgICBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGF1dG8qIGNvbnRleHQgPSBQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKTsKKyAg
ICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bV9jb21wb3NpdG9yVGV4dHVyZSk7CkBAIC0xMTksMTUgKzEyMCwxNCBAQCB2b2lkIEltYWdlQnVm
ZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpCiAgICAgZ2xQaXhlbFN0b3JlaShHTF9V
TlBBQ0tfQUxJR05NRU5ULCAxKTsKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAs
IEdMX1JHQkEsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIDApOwogCi0gICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IEdMQ29u
dGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+Y2Fpcm9EZXZpY2UoKTsKLSAgICBtX2NvbXBvc2l0b3JT
dXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2
aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CisgICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNvbnRleHQtPmNh
aXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9zaXRvclRleHR1
cmUsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKICAgICBtX2NvbXBvc2l0b3JD
ciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NvbXBvc2l0b3JTdXJmYWNlLmdldCgpKSk7CiAg
ICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2NvbXBvc2l0b3JDci5nZXQoKSwgQ0FJUk9fQU5USUFM
SUFTX05PTkUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCgpCiB7Ci0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6
OmdldEN1cnJlbnQoKTsKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdM
Q29udGV4dDo6Y3VycmVudCgpOwogCiAgICAgaWYgKCFtX2NvbXBvc2l0b3JUZXh0dXJlKSB7CiAg
ICAgICAgIGNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKTsKQEAgLTE1OSw3ICsxNTksOCBAQCB2b2lk
IGNsZWFyU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAKIHZvaWQgSW1hZ2VCdWZm
ZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiB7Ci0gICAgR0xDb250ZXh0OjpzaGFyaW5n
Q29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250
ZXh0KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBXZSBt
dXN0IGdlbmVyYXRlIHRoZSB0ZXh0dXJlIG91cnNlbHZlcywgYmVjYXVzZSB0aGVyZSBpcyBubyBD
YWlybyBBUEkgZm9yIGV4dHJhY3RpbmcgaXQKICAgICAvLyBmcm9tIGEgcHJlLWV4aXN0aW5nIHN1
cmZhY2UuCkBAIC0xNzQsNyArMTc1LDYgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNh
aXJvR0xTdXJmYWNlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwIC8qIGxl
dmVsICovLCBHTF9SR0JBLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwIC8qIGJv
cmRlciAqLywgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKLSAgICBHTENvbnRleHQq
IGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CiAgICAgY2Fpcm9fZGV2aWNl
X3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7CiAKICAgICAvLyBUaHJlYWQtYXdh
cmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9uLUludGVsIGRyaXZlcnMuCkBA
IC01NjMsNyArNTYzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEYKICAgICBBU1NFUlQobV90
ZXh0dXJlKTsKIAogICAgIC8vIENhaXJvIG1heSBjaGFuZ2UgdGhlIGFjdGl2ZSBjb250ZXh0LCBz
byB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0ZXIgZmx1c2hpbmcuCi0gICAgR0xD
b250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsK
KyAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVu
dCgpOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKICAgICBwcmV2
aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC02MDksNyArNjA5
LDcgQEAgYm9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEJiwgR0MzRGVudW0gdGFyZ2V0LCBQbGEKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2go
bV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KDAsIEdMQ29udGV4
dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY29u
dGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CiAgICAgY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgdWludDMyX3QgZmJvOwogICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZmYm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcAppbmRleCBhMmJjNzViLi43OTc5OTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAt
MjIsNyArMjIsNiBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogCiAjaWYgVVNFKENBSVJPKQogI2lu
Y2x1ZGUgPGNhaXJvLmg+CkBAIC00MCw2ICszOSwxMSBAQAogI2luY2x1ZGUgPFgxMS9YbGliLmg+
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNw
bGF5V2F5bGFuZC5oIgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjZW5kaWYKKwogI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAvLyBjYWlyby1nbC5oIGluY2x1ZGVzIHNvbWUg
ZGVmaW5pdGlvbnMgZnJvbSBHTFggdGhhdCBjb25mbGljdCB3aXRoCiAvLyB0aGUgb25lcyBwcm92
aWRlZCBieSB1cy4gU2luY2UgR0xDb250ZXh0RUdMIGRvZXNuJ3QgdXNlIGFueSBHTFgKQEAgLTUw
LDExICs1NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEVHTERpc3BsYXkg
c2hhcmVkRUdMRGlzcGxheSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpLmVnbERpc3BsYXkoKTsKLX0KLQogc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4
dEF0dHJpYnV0ZXNbXSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgRUdMX0NPTlRFWFRf
Q0xJRU5UX1ZFUlNJT04sIDIsCkBAIC02Miw3ICs2MSwxMyBAQCBzdGF0aWMgY29uc3QgRUdMaW50
IGdDb250ZXh0QXR0cmlidXRlc1tdID0gewogICAgIEVHTF9OT05FCiB9OwogCi1zdGF0aWMgYm9v
bCBnZXRFR0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFj
ZVR5cGUgc3VyZmFjZVR5cGUpCisjaWYgVVNFKE9QRU5HTF9FU18yKQorc3RhdGljIGNvbnN0IEVH
TGVudW0gZ0VHTEFQSVZlcnNpb24gPSBFR0xfT1BFTkdMX0VTX0FQSTsKKyNlbHNlCitzdGF0aWMg
Y29uc3QgRUdMZW51bSBnRUdMQVBJVmVyc2lvbiA9IEVHTF9PUEVOR0xfQVBJOworI2VuZGlmCisK
K2Jvb2wgR0xDb250ZXh0RUdMOjpnZXRFR0xDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xD
b25maWcqIGNvbmZpZywgRUdMU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUpCiB7CiAgICAgRUdMaW50
IGF0dHJpYnV0ZUxpc3RbXSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCkBAIC04NywyNyArOTIs
MjMgQEAgc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRl
eHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2UKICAgICAgICAgYXR0cmlidXRlTGlzdFsxM10g
PSBFR0xfUElYTUFQX0JJVDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHTENvbnRleHRFR0w6
OldpbmRvd1N1cmZhY2U6CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlN1cmZhY2VsZXNzOgogICAg
ICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKICAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBl
Z2xDaG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcs
IDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAg
ICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywg
MSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRv
d0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4dERhdGEpCitz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZv
cm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVHTENvbnRleHQg
ZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4
dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9f
RElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBFR0xEaXNwbGF5IGRpc3Bs
YXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZpZyBjb25maWc7
Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCisgICAgaWYg
KCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29u
dGV4dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0
ZXMpOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKICAgICBpZiAoY29u
dGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEx
NywxOSArMTE4LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxH
TENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOwotICAgIGdsQ29u
dGV4dC0+bV9jb250ZXh0RGF0YSA9IFdURk1vdmUoY29udGV4dERhdGEpOwotICAgIHJldHVybiBn
bENvbnRleHQ7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBH
TENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJm
YWNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6
Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQo
UGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCiB7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAg
IGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7
CiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQ
YnVmZmVyU3VyZmFjZSkpCisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywg
UGJ1ZmZlclN1cmZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEVHTENvbnRl
eHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29u
dGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKQEAgLTE0MywxOCArMTM5LDM2IEBAIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQo
RUdMQ29udGV4dCBzaGFyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgUGJ1
ZmZlclN1cmZhY2UpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihu
ZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZl
clN1cmZhY2UpKTsKIH0KIAotI2lmIFBMQVRGT1JNKFgxMSkKLXN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdM
OjpjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3Bs
YXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5
ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3Jt
RGlzcGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9ucyA9
IGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoIXN0cnN0
cihleHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IikgJiYgIXN0cnN0cihl
eHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19vcGVuZ2wiKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKICAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmln
KCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQorICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXks
ICZjb25maWcsIFN1cmZhY2VsZXNzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBF
R0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hh
cmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdM
X05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxhdGZvcm1EaXNwbGF5
LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpKTsKK30KKworI2lmIFBMQVRG
T1JNKFgxMSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0Zm9y
bURpc3BsYXkuZWdsRGlzcGxheSgpOworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKCFn
ZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4
dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwpA
QCAtMTY3LDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBkb3duY2FzdDxQ
bGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRp
dmUoKTsKKyAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwogICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFw
ID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNwbGF5LCBEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5
KSwgMSwgMSwgZGVwdGgpOwogICAgIGlmICghcGl4bWFwKSB7CiAgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwpAQCAtMTgwLDQ5ICsxOTQsMTA3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChF
R0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgV1RG
TW92ZShwaXhtYXApKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4o
bmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFdURk1v
dmUocGl4bWFwKSkpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorI2lmIFBMQVRGT1JN
KFdBWUxBTkQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZvcm1EaXNwbGF5LCBFR0xD
b250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgpKQor
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7Cisg
ICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29u
ZmlnLCBXaW5kb3dTdXJmYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0
cnVlOwotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQotICAg
ICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7Ci0jZW5kaWYKLSAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNv
bnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVz
KTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gd2xTdXJmYWNlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KHBsYXRmb3JtRGlzcGxheSkuY3JlYXRlU3Vy
ZmFjZSgpKTsKKyAgICBpZiAoIXdsU3VyZmFjZSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4
dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IGlmICghc3VjY2VzcykKKworICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93ID0gd2xfZWds
X3dpbmRvd19jcmVhdGUod2xTdXJmYWNlLmdldCgpLCAxLCAxKTsKKyAgICBFR0xTdXJmYWNlIHN1
cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93LCAw
KTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xEZXN0
cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgd2xfZWdsX3dpbmRvd19kZXN0
cm95KHdpbmRvdyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3Jt
RGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZSh3bFN1cmZhY2UpLCB3aW5kb3cpKTsK
K30KKyNlbmRpZgorCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxh
eSYgcGxhdGZvcm1EaXNwbGF5KQoreworICAgIGlmIChwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxh
eSgpID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVH
TENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0
PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBhdXRv
IGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0Nv
bnRleHQpIDogbnVsbHB0cjsKKyAgICBpZiAoZWdsQmluZEFQSShnRUdMQVBJVmVyc2lvbikgPT0g
RUdMX0ZBTFNFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgZWds
U2hhcmluZ0NvbnRleHQgPSBwbGF0Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQo
KSktPm1fY29udGV4dCA6IEVHTF9OT19DT05URVhUOworICAgIGF1dG8gY29udGV4dCA9IHdpbmRv
dyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJp
bmdDb250ZXh0KSA6IG51bGxwdHI7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0
ID0gY3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0Nv
bnRleHQpOworICAgIGlmICghY29udGV4dCkgewogI2lmIFBMQVRGT1JNKFgxMSkKKyAgICAgICAg
aWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEp
CisgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChwbGF0Zm9ybURpc3Bs
YXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisg
ICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4dChw
bGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorICAgIH0KICAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVnbFNo
YXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KHBs
YXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOworCisgICAgcmV0dXJuIGNvbnRleHQ7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRl
U2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCit7CisgICAg
aWYgKHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGVnbEJpbmRBUEkoZ0VHTEFQSVZlcnNpb24p
ID09IEVHTF9GQUxTRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRl
eHQgPSBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyAgICBpZiAo
IWNvbnRleHQpIHsKKyNpZiBQTEFURk9STShYMTEpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3Bs
YXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICAgICAgY29u
dGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQocGxhdGZvcm1EaXNwbGF5KTsKKyNlbmRpZgorI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCisgICAgICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09
IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKKyAgICAgICAgICAgIGNvbnRleHQgPSBj
cmVhdGVXYXlsYW5kQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOwogI2VuZGlmCisgICAgfQogICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVn
bFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0
KHBsYXRmb3JtRGlzcGxheSk7CiAKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotR0xDb250ZXh0
RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2Us
IEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK0dMQ29udGV4
dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdMQ29udGV4dCBj
b250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCisgICAgOiBH
TENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdXJm
YWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBQ
aXhtYXBTdXJmYWNlKTsKKyAgICBBU1NFUlQodHlwZSA9PSBTdXJmYWNlbGVzcyB8fCBzdXJmYWNl
ICE9IEVHTF9OT19TVVJGQUNFKTsKIH0KIAogI2lmIFBMQVRGT1JNKFgxMSkKLUdMQ29udGV4dEVH
TDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRl
eHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQorICAg
IDogR0xDb250ZXh0KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
c3VyZmFjZShzdXJmYWNlKQogICAgICwgbV90eXBlKFBpeG1hcFN1cmZhY2UpCiAgICAgLCBtX3Bp
eG1hcChXVEZNb3ZlKHBpeG1hcCkpCkBAIC0yMzAsNiArMzAyLDE4IEBAIEdMQ29udGV4dEVHTDo6
R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5p
cXVlUGl4bWFwCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCitHTENvbnRleHRF
R0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29u
dGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4m
JiB3bFN1cmZhY2UsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2xXaW5kb3cpCisgICAgOiBHTENvbnRl
eHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdXJmYWNlKHN1
cmZhY2UpCisgICAgLCBtX3R5cGUoV2luZG93U3VyZmFjZSkKKyAgICAsIG1fd2xTdXJmYWNlKFdU
Rk1vdmUod2xTdXJmYWNlKSkKKyAgICAsIG1fd2xXaW5kb3cod2xXaW5kb3cpCit7Cit9CisjZW5k
aWYKKwogR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKIHsKICNpZiBVU0UoQ0FJUk8pCkBA
IC0yMzcsNyArMzIxLDcgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICAgICAgICAg
Y2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAotICAgIEVHTERp
c3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBFR0xEaXNwbGF5IGRpc3Bs
YXkgPSBtX2Rpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwogICAgICAgICBlZ2xNYWtl
Q3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19D
T05URVhUKTsKQEAgLTI0Niw2ICszMzAsMTEgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdM
KCkKIAogICAgIGlmIChtX3N1cmZhY2UpCiAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3Bs
YXksIG1fc3VyZmFjZSk7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChtX3dsV2lu
ZG93KQorICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93bFdpbmRvdyk7CisjZW5kaWYK
IH0KIAogYm9vbCBHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkK
QEAgLTI1OCw5ICszNDcsMTAgQEAgSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1
ZmZlclNpemUoKQogICAgIGlmICghY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSkKICAg
ICAgICAgcmV0dXJuIEludFNpemUoKTsKIAorICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IG1fZGlz
cGxheS5lZ2xEaXNwbGF5KCk7CiAgICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYgKCFl
Z2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURUSCwg
JndpZHRoKQotICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwg
bV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFj
ZShkaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAgICAgICB8fCAhZWds
UXVlcnlTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCiAg
ICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKQEAgLTI2OCwxOSArMzU4LDE5IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0
RnJhbWVCdWZmZXJTaXplKCkKIAogYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVu
dCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOworICAgIEFTU0VSVCht
X2NvbnRleHQpOwogCiAgICAgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBp
ZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9z
dXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50
KG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQp
OwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVCht
X3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJm
YWNlKTsKKyAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBtX3N1cmZh
Y2UpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6d2FpdE5hdGl2ZSgpCkBAIC0yODgsNiArMzc4
LDEyIEBAIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKICAgICBlZ2xXYWl0TmF0aXZl
KEVHTF9DT1JFX05BVElWRV9FTkdJTkUpOwogfQogCit2b2lkIEdMQ29udGV4dEVHTDo6c3dhcElu
dGVydmFsKGludCBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9zdXJmYWNlKTsKKyAgICBlZ2xT
d2FwSW50ZXJ2YWwobV9kaXNwbGF5LmVnbERpc3BsYXkoKSwgaW50ZXJ2YWwpOworfQorCiAjaWYg
VVNFKENBSVJPKQogY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQog
ewpAQCAtMjk1LDcgKzM5MSw3IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJv
RGV2aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNl
X2NyZWF0ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7CisgICAgbV9jYWlyb0Rldmlj
ZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKG1fZGlzcGxheS5lZ2xEaXNwbGF5KCksIG1fY29u
dGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCmluZGV4IDg2
NTc1YTkuLjcwMjUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTI5LDQ5ICsyOSw2OCBAQAogI2luY2x1ZGUgIlhV
bmlxdWVSZXNvdXJjZS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1
ZGUgIldsVW5pcXVlUHRyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xDb250ZXh0IHsKK2NsYXNzIEdMQ29udGV4dEVHTCBm
aW5hbCA6IHB1YmxpYyBHTENvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29u
dGV4dEVHTCk7CiBwdWJsaWM6Ci0gICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZmZXJTdXJm
YWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUs
IEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRh
dGE+JiYgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBQbGF0Zm9ybURpc3BsYXkmKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmluZ0Nv
bnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CiAKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwg
RUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBHTENv
bnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKLSNlbmRp
ZgogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwotICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2FpdE5hdGl2ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXJUb0RlZmF1
bHRGcmFtZWJ1ZmZlcigpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJT
aXplKCk7CisKKyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIG92ZXJyaWRlOworICAgIHZv
aWQgc3dhcEJ1ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXROYXRpdmUoKSBvdmVycmlk
ZTsKKyAgICBib29sIGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkgb3ZlcnJpZGU7Cisg
ICAgSW50U2l6ZSBkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
d2FwSW50ZXJ2YWwoaW50KSBvdmVycmlkZTsKICNpZiBVU0UoQ0FJUk8pCi0gICAgdmlydHVhbCBj
YWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKTsKKyAgICBjYWlyb19kZXZpY2VfdCogY2Fpcm9E
ZXZpY2UoKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBpc0VHTENvbnRleHQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VHTENvbnRleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8z
RCkKLSAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0
KCk7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSBvdmVy
cmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
KTsKKyAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZh
Y2UsIFBpeG1hcFN1cmZhY2UsIFN1cmZhY2VsZXNzIH07CisKKyAgICBHTENvbnRleHRFR0woUGxh
dGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOwog
I2lmIFBMQVRGT1JNKFgxMSkKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBH
TENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVu
aXF1ZVBpeG1hcCYmKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgR0xDb250
ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIFdsVW5pcXVl
UHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmLCBFR0xOYXRpdmVXaW5kb3dUeXBlKTsKKyNlbmRpZgor
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0Nv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBz
aGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jiwg
RUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU3VyZmFjZWxlc3NDb250ZXh0KFBs
YXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVY
VCk7CisjaWYgUExBVEZPUk0oWDExKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQg
c2hhcmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShX
QVlMQU5EKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVX
YXlsYW5kQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
ID0gRUdMX05PX0NPTlRFWFQpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVD
b250ZXh0KEdMQ29udGV4dEVHTCopOwotICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xE
aXNwbGF5KHZvaWQpOworICAgIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xEaXNwbGF5LCBF
R0xDb25maWcqLCBFR0xTdXJmYWNlVHlwZSk7CiAKLSAgICBFR0xDb250ZXh0IG1fY29udGV4dDsK
LSAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dCB7IEVH
TF9OT19DT05URVhUIH07CisgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2UgeyBFR0xfTk9fU1VSRkFD
RSB9OwogICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKICNpZiBQTEFURk9STShYMTEpCiAgICAg
WFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisg
ICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IG1fd2xTdXJmYWNlOworICAgIHN0cnVj
dCB3bF9lZ2xfd2luZG93KiBtX3dsV2luZG93IHsgbnVsbHB0ciB9OworI2VuZGlmCiAjaWYgVVNF
KENBSVJPKQogICAgIGNhaXJvX2RldmljZV90KiBtX2NhaXJvRGV2aWNlIHsgbnVsbHB0ciB9Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgv
R0xDb250ZXh0R0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9H
TENvbnRleHRHTFguY3BwCmluZGV4IDE0YmI1MzkuLmRmYmI5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCkBAIC0z
Miw5ICszMiwzMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93
LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorI2lmICFkZWZpbmVkKFBGTkdMWFNXQVBJTlRF
UlZBTFNHSVBST0MpCit0eXBlZGVmIGludCAoKlBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0MpIChp
bnQpOworI2VuZGlmCisKK3N0YXRpYyBQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DIGdsWFN3YXBJ
bnRlcnZhbFNHSTsKKworc3RhdGljIGJvb2wgaGFzU0dJU3dhcENvbnRyb2xFeHRlbnNpb24oRGlz
cGxheSogZGlzcGxheSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuICEhZ2xYU3dhcEludGVydmFsU0dJ
OworCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMg
PSBnbFhRdWVyeUV4dGVuc2lvbnNTdHJpbmcoZGlzcGxheSwgMCk7CisgICAgaWYgKCFzdHJzdHIo
ZXh0ZW5zaW9ucywgIkdMWF9TR0lfc3dhcF9jb250cm9sIikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGdsWFN3YXBJbnRlcnZhbFNHSSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xYU1dB
UElOVEVSVkFMU0dJUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oImdsWFN3YXBJbnRlcnZhbFNHSSIpKSk7CisgICAgcmV0dXJuICEh
Z2xYU3dhcEludGVydmFsU0dJOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBH
TENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgUGxhdGZvcm1EaXNw
bGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAg
RGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkqIGRpc3BsYXkg
PSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZlKCk7
CiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAoIVhHZXRXaW5kb3dB
dHRyaWJ1dGVzKGRpc3BsYXksIHdpbmRvdywgJmF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTQ1LDE1ICs2NiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xY
PiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwogICAg
IGludCBudW1SZXR1cm5lZCA9IDA7CiAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mb0xpc3QoWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5m
bywgJm51bVJldHVybmVkKSk7CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0g
c2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4
dCktPm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7Ci0gICAgWFVuaXF1ZUdMWENvbnRleHQgY29u
dGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LmdldCgpLCBnbHhT
aGFyaW5nQ29udGV4dCwgVHJ1ZSkpOworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xY
Q3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5nZXQoKSwgc2hhcmluZ0NvbnRl
eHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRl
eHQpLCB3aW5kb3cpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPihu
ZXcgR0xDb250ZXh0R0xYKHBsYXRmb3JtRGlzcGxheSwgV1RGTW92ZShjb250ZXh0KSwgd2luZG93
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3Jl
YXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxh
dGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAg
ICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKQEAgLTY3LDcgKzg3LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVy
Q29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICB9OwogCiAgICAgaW50IHJldHVybmVkRWxlbWVu
dHM7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSku
bmF0aXZlKCk7CiAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gY29uZmlncyhnbFhDaG9vc2VG
QkNvbmZpZyhkaXNwbGF5LCAwLCBmYkNvbmZpZ0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1lbnRz
KSk7CiAgICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTgyLDEwICsxMDIsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250
ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBidWZmZXIpKTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4dEdM
WChwbGF0Zm9ybURpc3BsYXksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGJ1ZmZlcikpKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQ
aXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoUGxhdGZvcm1E
aXNwbGF5JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7CiAg
ICAgc3RhdGljIGludCB2aXN1YWxBdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgIEdMWF9SR0JBLApA
QCAtOTYsNyArMTE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0
R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmkKICAgICAgICAgMAogICAg
IH07CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDEx
PihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZvcm1EaXNwbGF5
KS5uYXRpdmUoKTsKICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKGdsWENo
b29zZVZpc3VhbChkaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkpLCB2aXN1YWxBdHRyaWJ1
dGVzKSk7CiAgICAgaWYgKCF2aXN1YWxJbmZvKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTExMyw0NiArMTMzLDQ2IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4
dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpCiAgICAgaWYgKCFnbHhQ
aXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKHBpeG1hcCksIFdU
Rk1vdmUoZ2x4UGl4bWFwKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+KG5ldyBHTENvbnRleHRHTFgocGxhdGZvcm1EaXNwbGF5LCBXVEZNb3ZlKGNvbnRleHQpLCBX
VEZNb3ZlKHBpeG1hcCksIFdURk1vdmUoZ2x4UGl4bWFwKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+
IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkm
IHBsYXRmb3JtRGlzcGxheSkKIHsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OwotICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKLSAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOwotICAgICAgICBp
bml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmlu
Z0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1f
Y29udGV4dC5nZXQoKSA6IG51bGxwdHI7Ci0gICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3Jl
YXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7Ci0gICAg
aWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZ2x4
U2hhcmluZ0NvbnRleHQpOworICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRleHQgPSBwbGF0
Zm9ybURpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xY
Kj4ocGxhdGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSktPm1fY29udGV4dC5nZXQoKSA6
IG51bGxwdHI7CisgICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4
dCh3aW5kb3csIHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsK
ICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0
KGdseFNoYXJpbmdDb250ZXh0KTsKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250
ZXh0KHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpOwogICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXht
YXBDb250ZXh0KHBsYXRmb3JtRGlzcGxheSwgZ2x4U2hhcmluZ0NvbnRleHQpOwogCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhD
b250ZXh0JiYgY29udGV4dCwgWElEIHdpbmRvdykKLSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNv
bnRleHQpKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVh
dGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSkKK3sKKyAg
ICBhdXRvIGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOwor
ICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQo
cGxhdGZvcm1EaXNwbGF5KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworR0xDb250ZXh0R0xY
OjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4
dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cpCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAs
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV93aW5kb3cod2luZG93KQogewog
fQogCi1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRl
eHQsIFhVbmlxdWVHTFhQYnVmZmVyJiYgcGJ1ZmZlcikKLSAgICA6IG1fY29udGV4dChXVEZNb3Zl
KGNvbnRleHQpKQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiBk
aXNwbGF5LCBYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVmZmVyJiYg
cGJ1ZmZlcikKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KFdURk1v
dmUoY29udGV4dCkpCiAgICAgLCBtX3BidWZmZXIoV1RGTW92ZShwYnVmZmVyKSkKIHsKIH0KIAot
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQotICAg
IDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitHTENvbnRleHRHTFg6OkdMQ29udGV4dEdM
WChQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXksIFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwg
WFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCwgWFVuaXF1ZUdMWFBpeG1hcCYmIGdseFBpeG1hcCkKKyAg
ICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkp
CiAgICAgLCBtX3BpeG1hcChXVEZNb3ZlKHBpeG1hcCkpCiAgICAgLCBtX2dseFBpeG1hcChXVEZN
b3ZlKGdseFBpeG1hcCkpCiB7CkBAIC0xNjYsOSArMTg2LDggQEAgR0xDb250ZXh0R0xYOjp+R0xD
b250ZXh0R0xYKCkKICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgIC8vIFRoaXMgbWF5IGJl
IG5lY2Vzc2FyeSB0byBwcmV2ZW50IGNyYXNoZXMgd2l0aCBOVmlkaWEncyBjbG9zZWQgc291cmNl
IGRyaXZlcnMuIE9yaWdpbmFsbHkKICAgICAgICAgLy8gZnJvbSBNb3ppbGxhJ3MgM0QgY2FudmFz
IGltcGxlbWVudGF0aW9uIGF0OiBodHRwOi8vYml0YnVja2V0Lm9yZy9pbG1hcmkvY2FudmFzM2Qv
Ci0gICAgICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKICAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKLSAgICAgICAgZ2xYTWFr
ZUN1cnJlbnQoZGlzcGxheSwgTm9uZSwgTm9uZSk7CisgICAgICAgIGdsWE1ha2VDdXJyZW50KGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgTm9uZSwgTm9u
ZSk7CiAgICAgfQogfQogCkBAIC0xODUsOCArMjA0LDcgQEAgSW50U2l6ZSBHTENvbnRleHRHTFg6
OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgIGludCB4LCB5OwogICAgIFdpbmRvdyByb290
V2luZG93OwogICAgIHVuc2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0LCBib3JkZXJXaWR0aCwgZGVw
dGg7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIGlmICghWEdl
dEdlb21ldHJ5KGRpc3BsYXksIG1fd2luZG93LCAmcm9vdFdpbmRvdywgJngsICZ5LCAmd2lkdGgs
ICZoZWlnaHQsICZib3JkZXJXaWR0aCwgJmRlcHRoKSkKKyAgICBpZiAoIVhHZXRHZW9tZXRyeShk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCksIG1fd2luZG93
LCAmcm9vdFdpbmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsICZib3JkZXJXaWR0aCwgJmRl
cHRoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpOwpAQCAtMjAwLDcgKzIxOCw3IEBAIGJvb2wgR0xDb250ZXh0R0xYOjptYWtl
Q29udGV4dEN1cnJlbnQoKQogICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29u
dGV4dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5
ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4obV9kaXNwbGF5KS5uYXRpdmUoKTsKICAgICBpZiAobV93aW5kb3cpCiAg
ICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0
LmdldCgpKTsKIApAQCAtMjEzLDcgKzIzMSw3IEBAIGJvb2wgR0xDb250ZXh0R0xYOjptYWtlQ29u
dGV4dEN1cnJlbnQoKQogdm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKIHsKICAgICBp
ZiAobV93aW5kb3cpCi0gICAgICAgIGdsWFN3YXBCdWZmZXJzKGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3dp
bmRvdyk7CisgICAgICAgIGdsWFN3YXBCdWZmZXJzKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4obV9kaXNwbGF5KS5uYXRpdmUoKSwgbV93aW5kb3cpOwogfQogCiB2b2lkIEdMQ29udGV4dEdM
WDo6d2FpdE5hdGl2ZSgpCkBAIC0yMjEsMTMgKzIzOSwyMCBAQCB2b2lkIEdMQ29udGV4dEdMWDo6
d2FpdE5hdGl2ZSgpCiAgICAgZ2xYV2FpdFgoKTsKIH0KIAordm9pZCBHTENvbnRleHRHTFg6OnN3
YXBJbnRlcnZhbChpbnQgaW50ZXJ2YWwpCit7CisgICAgaWYgKCFoYXNTR0lTd2FwQ29udHJvbEV4
dGVuc2lvbihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCkp
KQorICAgICAgICByZXR1cm47CisgICAgZ2xYU3dhcEludGVydmFsU0dJKGludGVydmFsKTsKK30K
KwogY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEdMWDo6Y2Fpcm9EZXZpY2UoKQogewogICAgIGlm
IChtX2NhaXJvRGV2aWNlKQogICAgICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKIAogI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIENBSVJPX0hBU19HTFhfRlVOQ1RJT05TCi0g
ICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
LCBtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19nbHhfZGV2aWNl
X2NyZWF0ZShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KG1fZGlzcGxheSkubmF0aXZlKCks
IG1fY29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdM
WC5oCmluZGV4IDY0N2Y5OTguLjE5ZmMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTMyLDMxICszMiwzNSBAQCB0
eXBlZGVmIHZvaWQqIENvbnRleHRLZXlUeXBlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEdMQ29udGV4dEdMWCA6IHB1YmxpYyBHTENvbnRleHQgeworY2xhc3MgR0xDb250ZXh0R0xY
IGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xD
b250ZXh0R0xYKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlV2luZG93
Q29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93
LCBQbGF0Zm9ybURpc3BsYXkmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEdMWD4gY3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5Jik7CiAKLSAgICBHTENv
bnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWElEKTsKLSAgICBHTENvbnRleHRHTFgoWFVu
aXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBidWZmZXImJik7Ci0gICAgR0xDb250ZXh0R0xY
KFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVQaXhtYXAmJiwgWFVuaXF1ZUdMWFBpeG1hcCYm
KTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHRHTFgoKTsKLSAgICB2aXJ0dWFsIGJvb2wgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHdhaXROYXRpdmUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZh
dWx0RnJhbWVidWZmZXIoKTsKLSAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVy
U2l6ZSgpOwotICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCk7Ci0gICAg
dmlydHVhbCBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEJ1ZmZl
cnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXROYXRpdmUoKSBvdmVycmlkZTsKKyAgICBib29s
IGNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBk
ZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2FwSW50ZXJ2YWwo
aW50KSBvdmVycmlkZTsKKyAgICBjYWlyb19kZXZpY2VfdCogY2Fpcm9EZXZpY2UoKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzRUdMQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLSAgICB2aXJ0dWFsIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CisgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQYnVm
ZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5JiwgWFVuaXF1
ZUdMWENvbnRleHQmJiwgWElEKTsKKyAgICBHTENvbnRleHRHTFgoUGxhdGZvcm1EaXNwbGF5Jiwg
WFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBidWZmZXImJik7CisgICAgR0xDb250ZXh0
R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVQaXhtYXAm
JiwgWFVuaXF1ZUdMWFBpeG1hcCYmKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIFBsYXRmb3JtRGlzcGxh
eSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1E
aXNwbGF5JiwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRm
b3JtRGlzcGxheSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKIAogICAg
IFhVbmlxdWVHTFhDb250ZXh0IG1fY29udGV4dDsKICAgICBYSUQgbV93aW5kb3cgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
aW5kZXggYjI5MjM5ZS4uZmNmZjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMjM1LDggKzIzNSw4IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KCkKICAgICBp
ZiAobV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgY29uc3QgYXV0byYg
c2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0
aW5nKCk7CiAgICAgaWYgKCFtX2dsRGlzcGxheSkgewotICAgICAgICBjb25zdCBhdXRvJiBzaGFy
ZWREaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCk7CiAjaWYgUExBVEZP
Uk0oWDExKQogICAgICAgICBtX2dsRGlzcGxheSA9IEdTVF9HTF9ESVNQTEFZKGdzdF9nbF9kaXNw
bGF5X3gxMV9uZXdfd2l0aF9kaXNwbGF5KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hh
cmVkRGlzcGxheSkubmF0aXZlKCkpKTsKICNlbGlmIFBMQVRGT1JNKFdBWUxBTkQpCkBAIC0yNDQs
NyArMjQ0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjplbnN1cmVH
c3RHTENvbnRleHQoKQogI2VuZGlmCiAgICAgfQogCi0gICAgR0xDb250ZXh0KiB3ZWJraXRDb250
ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIEdMQ29udGV4dCogd2Via2l0
Q29udGV4dCA9IHNoYXJlZERpc3BsYXkuc2hhcmluZ0dMQ29udGV4dCgpOwogICAgIC8vIEVHTCBh
bmQgR0xYIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG5vIG5lZWQgZm9yIGlmZGVmcyBoZXJlLgog
ICAgIEdzdEdMUGxhdGZvcm0gZ2xQbGF0Zm9ybSA9IHdlYmtpdENvbnRleHQtPmlzRUdMQ29udGV4
dCgpID8gR1NUX0dMX1BMQVRGT1JNX0VHTCA6IEdTVF9HTF9QTEFURk9STV9HTFg7CiAKQEAgLTcw
Miw3ICs3MDIsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIWdzdF92aWRlb19mcmFt
ZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0TWFw
RmxhZ3M+KEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7CiAgICAgY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQt
PmNhaXJvRGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCmlu
ZGV4IGQzMzA1ZTEuLjQ3OTI0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5k
LmNwcApAQCAtMjksMTI2ICsyOSw1NSBAQAogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAKICNpbmNs
dWRlICJHTENvbnRleHRFR0wuaCIKLSNpbmNsdWRlICJXYXlsYW5kU3VyZmFjZS5oIgogI2luY2x1
ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6
bV9yZWdpc3RyeUxpc3RlbmVyID0gewotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2Jh
bENhbGxiYWNrLAotICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6Omdsb2JhbFJlbW92ZUNhbGxi
YWNrCitjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6c19yZWdpc3RyeUxpc3RlbmVyID0geworICAgIC8vIGdsb2JhbENhbGxiYWNrCisgICAg
W10odm9pZCogZGF0YSwgc3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCkgeworICAgICAgICBzdGF0aWNfY2FzdDxQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kKj4oZGF0YSktPnJlZ2lzdHJ5R2xvYmFsKGludGVyZmFjZSwgbmFtZSk7
CisgICAgfSwKKyAgICAvLyBnbG9iYWxSZW1vdmVDYWxsYmFjaworICAgIFtdKHZvaWQqLCBzdHJ1
Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCkKKyAgICB7CisgICAgfQogfTsKIAotdm9pZCBQbGF0
Zm9ybURpc3BsYXlXYXlsYW5kOjpnbG9iYWxDYWxsYmFjayh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xf
cmVnaXN0cnkqIHJlZ2lzdHJ5LCB1aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2Us
IHVpbnQzMl90KQorUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6UGxhdGZvcm1EaXNwbGF5V2F5bGFu
ZChzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKIHsKLSAgICBhdXRvIGRpc3BsYXkgPSBzdGF0
aWNfY2FzdDxQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKj4oZGF0YSk7Ci0gICAgaWYgKCFzdGQ6OnN0
cmNtcChpbnRlcmZhY2UsICJ3bF9jb21wb3NpdG9yIikpCi0gICAgICAgIGRpc3BsYXktPm1fY29t
cG9zaXRvciA9IHN0YXRpY19jYXN0PHN0cnVjdCB3bF9jb21wb3NpdG9yKj4od2xfcmVnaXN0cnlf
YmluZChyZWdpc3RyeSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxKSk7Ci0gICAg
ZWxzZSBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgIndsX3dlYmtpdGd0ayIpKQotICAgICAg
ICBkaXNwbGF5LT5tX3dlYmtpdGd0ayA9IHN0YXRpY19jYXN0PHN0cnVjdCB3bF93ZWJraXRndGsq
Pih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfd2Via2l0Z3RrX2ludGVyZmFj
ZSwgMSkpOworICAgIGluaXRpYWxpemUoZGlzcGxheSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1EaXNw
bGF5V2F5bGFuZDo6Z2xvYmFsUmVtb3ZlQ2FsbGJhY2sodm9pZCosIHN0cnVjdCB3bF9yZWdpc3Ry
eSosIHVpbnQzMl90KQotewotICAgIC8vIEZJWE1FOiBpZiB0aGlzIGNhbiBoYXBwZW4gd2l0aG91
dCB0aGUgVUkgUHJvY2VzcyBnZXR0aW5nIHNodXQgZG93bgotICAgIC8vIHdlIHNob3VsZCBwcm9i
YWJseSBkZXN0cm95IG91ciBjYWNoZWQgZGlzcGxheSBpbnN0YW5jZS4KLX0KLQotc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNy
ZWF0ZSgpCitQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjp+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgp
CiB7Ci0gICAgc3RydWN0IHdsX2Rpc3BsYXkqIHdsRGlzcGxheSA9IHdsX2Rpc3BsYXlfY29ubmVj
dChudWxscHRyKTsKLSAgICBpZiAoIXdsRGlzcGxheSkgewotICAgICAgICBXVEZMb2dBbHdheXMo
IlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5pdGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25uZWN0
IHRvIHRoZSBXYXlsYW5kIHNlcnZlciBzb2NrZXQuIENoZWNrIHlvdXIgV0FZTEFORF9ESVNQTEFZ
IG9yIFdBWUxBTkRfU09DS0VUIGVudmlyb25tZW50IHZhcmlhYmxlcy4iKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBkaXNwbGF5ID0gc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KG5ldyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHdsRGlz
cGxheSkpOwotICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBpbml0aWFsaXphdGlvbjogZmFpbGVk
IHRvIGNvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGlzcGxheS4iKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpc3BsYXk7CiB9CiAKLVBs
YXRmb3JtRGlzcGxheVdheWxhbmQ6OlBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rp
c3BsYXkqIHdsRGlzcGxheSkKLSAgICA6IG1fZGlzcGxheSh3bERpc3BsYXkpCi0gICAgLCBtX3Jl
Z2lzdHJ5KHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KG1fZGlzcGxheSkpCi0gICAgLCBtX2VnbENv
bmZpZ0Nob3NlbihmYWxzZSkKK3ZvaWQgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6aW5pdGlhbGl6
ZSh3bF9kaXNwbGF5KiBkaXNwbGF5KQogewotICAgIHdsX3JlZ2lzdHJ5X2FkZF9saXN0ZW5lciht
X3JlZ2lzdHJ5LCAmbV9yZWdpc3RyeUxpc3RlbmVyLCB0aGlzKTsKKyAgICBtX2Rpc3BsYXkgPSBk
aXNwbGF5OworICAgIG1fcmVnaXN0cnkucmVzZXQod2xfZGlzcGxheV9nZXRfcmVnaXN0cnkobV9k
aXNwbGF5KSk7CisgICAgd2xfcmVnaXN0cnlfYWRkX2xpc3RlbmVyKG1fcmVnaXN0cnkuZ2V0KCks
ICZzX3JlZ2lzdHJ5TGlzdGVuZXIsIHRoaXMpOwogICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1f
ZGlzcGxheSk7CiAKLSAgICBzdGF0aWMgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9
IHsKLSAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX1dJTkRPV19CSVQsCi0gICAgICAgIEVH
TF9SRURfU0laRSwgMSwKLSAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDEsCi0gICAgICAgIEVHTF9C
TFVFX1NJWkUsIDEsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCAxLAotICAgICAgICBFR0xfUkVO
REVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0gICAgICAgIEVHTF9OT05FCi0gICAg
fTsKLQogICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3BsYXkobV9kaXNwbGF5KTsKICAgICBQ
bGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKG1fZWdsRGlz
cGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRUdMaW50IG51
bWJlck9mQ29uZmlnczsKLSAgICBpZiAoIWVnbENob29zZUNvbmZpZyhtX2VnbERpc3BsYXksIGNv
bmZpZ0F0dHJpYnV0ZXMsICZtX2VnbENvbmZpZywgMSwgJm51bWJlck9mQ29uZmlncykgfHwgbnVt
YmVyT2ZDb25maWdzICE9IDEpIHsKLSAgICAgICAgZ193YXJuaW5nKCJQbGF0Zm9ybURpc3BsYXlX
YXlsYW5kIGluaXRpYWxpemF0aW9uOiBmYWlsZWQgdG8gZmluZCB0aGUgZGVzaXJlZCBFR0wgY29u
ZmlndXJhdGlvbi4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fZWdsQ29uZmln
Q2hvc2VuID0gdHJ1ZTsKIH0KIAotUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6flBsYXRmb3JtRGlz
cGxheVdheWxhbmQoKQordm9pZCBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpyZWdpc3RyeUdsb2Jh
bChjb25zdCBjaGFyKiBpbnRlcmZhY2UsIHVpbnQzMl90IG5hbWUpCiB7Ci0gICAgaWYgKG1fd2Vi
a2l0Z3RrKQotICAgICAgICB3bF93ZWJraXRndGtfZGVzdHJveShtX3dlYmtpdGd0ayk7Ci0gICAg
aWYgKG1fY29tcG9zaXRvcikKLSAgICAgICAgd2xfY29tcG9zaXRvcl9kZXN0cm95KG1fY29tcG9z
aXRvcik7Ci0gICAgaWYgKG1fcmVnaXN0cnkpCi0gICAgICAgIHdsX3JlZ2lzdHJ5X2Rlc3Ryb3ko
bV9yZWdpc3RyeSk7Ci0gICAgaWYgKG1fZGlzcGxheSkKLSAgICAgICAgd2xfZGlzcGxheV9kaXNj
b25uZWN0KG1fZGlzcGxheSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kU3VyZmFjZT4g
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
LCBpbnQgd2lkZ2V0SWQpCi17Ci0gICAgc3RydWN0IHdsX3N1cmZhY2UqIHdsU3VyZmFjZSA9IHds
X2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9yKTsKLSAgICAvLyBXZSBrZWVw
IHRoZSBtaW5pbXVtIHNpemUgYXQgMXgxcHggc2luY2UgTWVzYSByZXR1cm5zIG51bGwgdmFsdWVz
IGluIHdsX2VnbF93aW5kb3dfY3JlYXRlKCkgZm9yIHplcm8gd2lkdGggb3IgaGVpZ2h0LgotICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUo
d2xTdXJmYWNlLCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBzaXplLmhl
aWdodCgpKSk7Ci0KLSAgICB3bF93ZWJraXRndGtfc2V0X3N1cmZhY2VfZm9yX3dpZGdldChtX3dl
YmtpdGd0aywgd2xTdXJmYWNlLCB3aWRnZXRJZCk7Ci0gICAgd2xfZGlzcGxheV9yb3VuZHRyaXAo
bV9kaXNwbGF5KTsKLQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdheWxhbmRTdXJmYWNl
Pih3bFN1cmZhY2UsIG5hdGl2ZVdpbmRvdyk7CisgICAgaWYgKCFzdGQ6OnN0cmNtcChpbnRlcmZh
Y2UsICJ3bF9jb21wb3NpdG9yIikpCisgICAgICAgIG1fY29tcG9zaXRvci5yZXNldChzdGF0aWNf
Y2FzdDxzdHJ1Y3Qgd2xfY29tcG9zaXRvcio+KHdsX3JlZ2lzdHJ5X2JpbmQobV9yZWdpc3RyeS5n
ZXQoKSwgbmFtZSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxKSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTaGFy
aW5nR0xDb250ZXh0KCkKK1dsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKCkgY29uc3QKIHsKLSAgICBjbGFzcyBPZmZzY3Jl
ZW5Db250ZXh0RGF0YSA6IHB1YmxpYyBHTENvbnRleHQ6OkRhdGEgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgdmlydHVhbCB+T2Zmc2NyZWVuQ29udGV4dERhdGEoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobmF0aXZlV2luZG93KTsKLSAgICAgICAgICAgIHds
X3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0cnVjdCB3
bF9zdXJmYWNlKiBzdXJmYWNlOwotICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdp
bmRvdzsKLSAgICB9OwotCi0gICAgYXV0byBjb250ZXh0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
T2Zmc2NyZWVuQ29udGV4dERhdGE+KCk7Ci0gICAgY29udGV4dERhdGEtPnN1cmZhY2UgPSB3bF9j
b21wb3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7Ci0gICAgY29udGV4dERhdGEt
Pm5hdGl2ZVdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKGNvbnRleHREYXRhLT5zdXJmYWNl
LCAxLCAxKTsKKyAgICBpZiAoIW1fY29tcG9zaXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIG5hdGl2ZVdpbmRvdyA9IGNvbnRleHREYXRhLT5uYXRpdmVXaW5kb3c7Ci0g
ICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChuYXRpdmVXaW5kb3cs
IG51bGxwdHIsIFdURk1vdmUoY29udGV4dERhdGEpKTsKKyAgICByZXR1cm4gV2xVbmlxdWVQdHI8
c3RydWN0IHdsX3N1cmZhY2U+KHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3Np
dG9yLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9y
bURpc3BsYXlXYXlsYW5kLmgKaW5kZXggNGNjOTA0NC4uYzE2NTgyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXls
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0
Zm9ybURpc3BsYXlXYXlsYW5kLmgKQEAgLTI5LDQ4ICsyOSwzNCBAQAogI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCiAKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKLSNpbmNsdWRlICJXZWJLaXRH
dGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSAi
V2xVbmlxdWVQdHIuaCIKICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgotI2luY2x1ZGUgPHdh
eWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEdMQ29udGV4dEVHTDsKLWNsYXNzIEludFNpemU7Ci1jbGFzcyBXYXlsYW5kU3Vy
ZmFjZTsKLQotY2xhc3MgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBmaW5hbDogcHVibGljIFBsYXRm
b3JtRGlzcGxheSB7CitjbGFzcyBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kIDogcHVibGljIFBsYXRm
b3JtRGlzcGxheSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kPiBjcmVhdGUoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKHN0
cnVjdCB3bF9kaXNwbGF5Kik7CiAgICAgdmlydHVhbCB+UGxhdGZvcm1EaXNwbGF5V2F5bGFuZCgp
OwogCiAgICAgc3RydWN0IHdsX2Rpc3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGxheTsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJm
YWNlKGNvbnN0IEludFNpemUmLCBpbnQgd2lkZ2V0SUQpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOworICAgIFdsVW5pcXVlUHRy
PHN0cnVjdCB3bF9zdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBtX3JlZ2lzdHJ5TGlz
dGVuZXI7Ci0gICAgc3RhdGljIHZvaWQgZ2xvYmFsQ2FsbGJhY2sodm9pZCogZGF0YSwgc3RydWN0
IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50
MzJfdCB2ZXJzaW9uKTsKLSAgICBzdGF0aWMgdm9pZCBnbG9iYWxSZW1vdmVDYWxsYmFjayh2b2lk
KiBkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkqLCB1aW50MzJfdCBuYW1lKTsKKyAgICBzdGF0aWMg
Y29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIHNfcmVnaXN0cnlMaXN0ZW5lcjsKIAot
ICAgIFBsYXRmb3JtRGlzcGxheVdheWxhbmQoc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Oldh
eWxhbmQ7IH0KIAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjaGVjayBhbHNvIGZvciBtX3dl
YmtpdGd0ayBvbmNlIHRoZSBVSVByb2Nlc3MgZW1iZWRkZWQgV2F5bGFuZCBzdWJjb21wb3NpdGVy
IGlzIGltcGxlbWVudGVkLgotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIG1fY29t
cG9zaXRvciAmJiBtX2VnbERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgbV9lZ2xDb25maWdD
aG9zZW47IH0KK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kKCkgPSBkZWZh
dWx0OworICAgIHZvaWQgaW5pdGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOwogCi0gICAgVHlw
ZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpX
YXlsYW5kOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdHJ5R2xvYmFsKGNvbnN0IGNoYXIqIGlu
dGVyZmFjZSwgdWludDMyX3QgbmFtZSk7CiAKICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogbV9kaXNw
bGF5OwotICAgIHN0cnVjdCB3bF9yZWdpc3RyeSogbV9yZWdpc3RyeTsKLSAgICBzdHJ1Y3Qgd2xf
Y29tcG9zaXRvciogbV9jb21wb3NpdG9yOwotICAgIHN0cnVjdCB3bF93ZWJraXRndGsqIG1fd2Vi
a2l0Z3RrOwotCi0gICAgRUdMQ29uZmlnIG1fZWdsQ29uZmlnOwotICAgIGJvb2wgbV9lZ2xDb25m
aWdDaG9zZW47CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3JlZ2lzdHJ5PiBtX3JlZ2lzdHJ5
OworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9jb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRFdmVudFNvdXJjZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMmFkMmYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2Uu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2F5bGFuZEV2ZW50U291cmNlLmgiCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdMaWJTb3VyY2UgewotcHVibGljOgotICAgIHZvaWQgaW5p
dGlhbGl6ZShzdHJ1Y3Qgd2xfZGlzcGxheSopOwotCi0gICAgZ2Jvb2xlYW4gY2hlY2soKTsKLSAg
ICBnYm9vbGVhbiBkaXNwYXRjaCgpOwotCi1wcml2YXRlOgotICAgIEdTb3VyY2UgbV9zb3VyY2U7
Ci0gICAgR1BvbGxGRCBtX3BvbGxGaWxlRGVzY3JpcHRvcjsKLSAgICBzdHJ1Y3Qgd2xfZGlzcGxh
eSogbV9kaXNwbGF5OwotfTsKLQotdm9pZCBHTGliU291cmNlOjppbml0aWFsaXplKHN0cnVjdCB3
bF9kaXNwbGF5KiBkaXNwbGF5KQotewotICAgIG1fZGlzcGxheSA9IGRpc3BsYXk7Ci0gICAgc3Ry
dWN0IHdsX2V2ZW50X2xvb3AqIGxvb3AgPSB3bF9kaXNwbGF5X2dldF9ldmVudF9sb29wKGRpc3Bs
YXkpOwotICAgIG1fcG9sbEZpbGVEZXNjcmlwdG9yLmZkID0gd2xfZXZlbnRfbG9vcF9nZXRfZmQo
bG9vcCk7Ci0gICAgbV9wb2xsRmlsZURlc2NyaXB0b3IuZXZlbnRzID0gR19JT19JTiB8IEdfSU9f
RVJSIHwgR19JT19IVVA7Ci0gICAgZ19zb3VyY2VfYWRkX3BvbGwoJm1fc291cmNlLCAmbV9wb2xs
RmlsZURlc2NyaXB0b3IpOwotCi0gICAgZ19zb3VyY2Vfc2V0X25hbWUoJm1fc291cmNlLCAiTmVz
dGVkIFdheWxhbmQgY29tcG9zaXRvciBkaXNwbGF5IGV2ZW50IHNvdXJjZSIpOwotICAgIGdfc291
cmNlX3NldF9wcmlvcml0eSgmbV9zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7Ci0gICAgZ19z
b3VyY2Vfc2V0X2Nhbl9yZWN1cnNlKCZtX3NvdXJjZSwgVFJVRSk7Ci0gICAgZ19zb3VyY2VfYXR0
YWNoKCZtX3NvdXJjZSwgbnVsbHB0cik7Ci19Ci0KLWdib29sZWFuIEdMaWJTb3VyY2U6OmNoZWNr
KCkKLXsKLSAgICByZXR1cm4gbV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50czsKLX0KLQotZ2Jv
b2xlYW4gR0xpYlNvdXJjZTo6ZGlzcGF0Y2goKQotewotICAgIGlmIChtX3BvbGxGaWxlRGVzY3Jp
cHRvci5yZXZlbnRzICYgR19JT19JTikgewotICAgICAgICBzdHJ1Y3Qgd2xfZXZlbnRfbG9vcCog
bG9vcCA9IHdsX2Rpc3BsYXlfZ2V0X2V2ZW50X2xvb3AobV9kaXNwbGF5KTsKLSAgICAgICAgd2xf
ZXZlbnRfbG9vcF9kaXNwYXRjaChsb29wLCAtMSk7Ci0gICAgICAgIHdsX2Rpc3BsYXlfZmx1c2hf
Y2xpZW50cyhtX2Rpc3BsYXkpOwotICAgICAgICBtX3BvbGxGaWxlRGVzY3JpcHRvci5yZXZlbnRz
ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9wb2xsRmlsZURlc2NyaXB0b3IucmV2ZW50cyAmIChH
X0lPX0VSUiB8IEdfSU9fSFVQKSkKLSAgICAgICAgZ193YXJuaW5nKCJXYXlsYW5kIERpc3BsYXkg
RXZlbnQgU291cmNlOiBsb3N0IGNvbm5lY3Rpb24gdG8gbmVzdGVkIFdheWxhbmQgY29tcG9zaXRv
ciIpOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBwcmVwYXJlQ2Fs
bGJhY2soR1NvdXJjZSosIGdpbnQqIHRpbWVvdXQpCi17Ci0gICAgKnRpbWVvdXQgPSAtMTsKLSAg
ICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBjaGVja0NhbGxiYWNrKEdTb3Vy
Y2UqIGJhc2UpCi17Ci0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PEdMaWJTb3Vy
Y2UqPihiYXNlKTsKLSAgICByZXR1cm4gc291cmNlLT5jaGVjaygpOwotfQotCi1zdGF0aWMgZ2Jv
b2xlYW4gZGlzcGF0Y2hDYWxsYmFjayhHU291cmNlKiBiYXNlLCBHU291cmNlRnVuYywgZ3BvaW50
ZXIpCi17Ci0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PEdMaWJTb3VyY2UqPihi
YXNlKTsKLSAgICByZXR1cm4gc291cmNlLT5kaXNwYXRjaCgpOwotfQotCi1zdGF0aWMgR1NvdXJj
ZUZ1bmNzIHdheWxhbmRHTGliU291cmNlRnVuY3MgPSB7Ci0gICAgcHJlcGFyZUNhbGxiYWNrLAot
ICAgIGNoZWNrQ2FsbGJhY2ssCi0gICAgZGlzcGF0Y2hDYWxsYmFjaywKLSAgICBudWxscHRyLCAv
LyBmaW5hbGl6ZQotICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfY2FsbGJhY2sKLSAgICBudWxscHRy
LCAvLyBjbG9zdXJlX21hcnNoYWxsCi19OwotCi1HU291cmNlKiBXYXlsYW5kRXZlbnRTb3VyY2U6
OmNyZWF0ZURpc3BsYXlFdmVudFNvdXJjZShzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheSkKLXsK
LSAgICBHU291cmNlKiBiYXNlID0gZ19zb3VyY2VfbmV3KCZ3YXlsYW5kR0xpYlNvdXJjZUZ1bmNz
LCBzaXplb2YoR0xpYlNvdXJjZSkpOwotCi0gICAgYXV0byBzb3VyY2UgPSByZWludGVycHJldF9j
YXN0PEdMaWJTb3VyY2UqPihiYXNlKTsKLSAgICBzb3VyY2UtPmluaXRpYWxpemUoZGlzcGxheSk7
Ci0KLSAgICByZXR1cm4gYmFzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk3MWFiMTkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldheWxhbmRTdXJmYWNlLmgi
Ci0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotCi0jaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCi0j
aW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVdheWxhbmQuaCIK
LSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBmcmFt
ZUNhbGxiYWNrKHZvaWQqLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGNhbGxiYWNrLCB1aW50MzJfdCkK
LXsKLSAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJh
Y2spOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGZyYW1l
TGlzdGVuZXIgPSB7Ci0gICAgZnJhbWVDYWxsYmFjawotfTsKLQotV2F5bGFuZFN1cmZhY2U6Oldh
eWxhbmRTdXJmYWNlKHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UsIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgbmF0aXZlV2luZG93KQotICAgIDogbV93bFN1cmZhY2Uod2xTdXJmYWNlKQotICAgICwg
bV9uYXRpdmVXaW5kb3cobmF0aXZlV2luZG93KQotewotfQotCi1XYXlsYW5kU3VyZmFjZTo6fldh
eWxhbmRTdXJmYWNlKCkKLXsKLSAgICAvLyBUaGUgc3VyZmFjZSBjb3VsZG4ndCBoYXZlIGJlZW4g
Y3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UgaWYgV2F5bGFuZERpc3BsYXkgd2Fzbid0IHByb3Bl
cmx5IGluaXRpYWxpemVkLgotICAgIGNvbnN0IFBsYXRmb3JtRGlzcGxheVdheWxhbmQmIHdheWxh
bmREaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4oUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkpOwotICAgIEFTU0VSVCh3YXlsYW5kRGlzcGxheS5uYXRpdmUo
KSk7Ci0gICAgZWdsTWFrZUN1cnJlbnQod2F5bGFuZERpc3BsYXkubmF0aXZlKCksIEVHTF9OT19T
VVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotCi0gICAgd2xfZWdsX3dp
bmRvd19kZXN0cm95KG1fbmF0aXZlV2luZG93KTsKLSAgICB3bF9zdXJmYWNlX2Rlc3Ryb3kobV93
bFN1cmZhY2UpOwotfQotCi12b2lkIFdheWxhbmRTdXJmYWNlOjpyZXNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKLXsKLSAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX25hdGl2ZVdpbmRvdywgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29udGV4dCgpCi17Ci0gICAgcmV0
dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChtX25hdGl2ZVdpbmRvdywgR0xD
b250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKLX0KLQotdm9pZCBXYXlsYW5kU3VyZmFjZTo6cmVx
dWVzdEZyYW1lKCkKLXsKLSAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sqIGZyYW1lQ2FsbGJhY2sgPSB3
bF9zdXJmYWNlX2ZyYW1lKG1fd2xTdXJmYWNlKTsKLSAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVu
ZXIoZnJhbWVDYWxsYmFjaywgJmZyYW1lTGlzdGVuZXIsIHRoaXMpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XbFVuaXF1ZVB0ci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZDJkYWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dsVW5pcXVlUHRy
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRl
IDx3YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBX
bFB0ckRlbGV0ZXIgeworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFdsVW5pcXVl
UHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFdsUHRyRGVsZXRlcjxUPj47CisKKyNkZWZpbmUgRk9S
X0VBQ0hfV0FZTEFORF9ERUxFVEVSKG1hY3JvKSBcCisgICAgbWFjcm8oc3RydWN0IHdsX2Rpc3Bs
YXksIHdsX2Rpc3BsYXlfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9nbG9iYWwsIHds
X2dsb2JhbF9kZXN0cm95KSBcCisgICAgbWFjcm8oc3RydWN0IHdsX3N1cmZhY2UsIHdsX3N1cmZh
Y2VfZGVzdHJveSkgXAorICAgIG1hY3JvKHN0cnVjdCB3bF9jb21wb3NpdG9yLCB3bF9jb21wb3Np
dG9yX2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfcmVnaXN0cnksIHdsX3JlZ2lzdHJ5
X2Rlc3Ryb3kpIFwKKyAgICBtYWNybyhzdHJ1Y3Qgd2xfcHJveHksIHdsX3Byb3h5X2Rlc3Ryb3kp
CisKKyNkZWZpbmUgREVGSU5FX1dBWUxBTkRfREVMRVRFUih0eXBlTmFtZSwgZGVsZXRlckZ1bmMp
IFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBXbFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7
IFwKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCB7IGRlbGV0
ZXJGdW5jKHB0cik7IH0gXAorICAgIH07CisKK0ZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUihERUZJ
TkVfV0FZTEFORF9ERUxFVEVSKQorI3VuZGVmIEZPUl9FQUNIX1dBWUxBTkRfREVMRVRFUgorI3Vu
ZGVmIERFRklORV9XQVlMQU5EX0RFTEVURVIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0YjFjZjZiLi45
NzhiNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDgtMTYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGRvZXMgbm90IHdvcmsgaW4gV2F5bGFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgVXBkYXRlIHRvIHRo
ZSBuZXcgR0xDb250ZXh0IEFQSS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKToKKwogMjAxNi0wOC0yMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVz
ZSBEb2N1bWVudCYgaW5zdGVhZCBvZiBEb2N1bWVudCogd2hlbiBnZXR0aW5nIGNvb2tpZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCA5YTI2ZDkyLi4xNzgxN2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSgpCiAKICAgICAv
LyBUaGUgY3JlYXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5H
TCBjb250ZXh0LgogICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICBtX2NvbnRleHQgPSBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKSk7CisgICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhtX3dpbmRvdyk7CiAKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjgyLDcgKzI4Miw3IEBAIGJvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBDcmVhdGUgR0wgY29udGV4dC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KHRlc3RXaW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRl
Q29udGV4dEZvcldpbmRvdyh0ZXN0V2luZG93KTsKIAogICAgIGlmICghY29udGV4dCkgewogICAg
ICAgICA6OkRlc3Ryb3lXaW5kb3codGVzdFdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmNjZDVkNS4u
NGFmNWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NSBAQAorMjAxNi0wOC0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgZG9lcyBub3Qgd29yayBpbiBXYXlsYW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU4MDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKworICAgICAgICBUaGlzIGlzIHRoZSBpbml0
aWFsIGltcGxlbWVudGF0aW9uIG9mIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHN1cHBvcnQgaW4g
V2F5bGFuZCBmb3IgdGhlIEdUSysgcG9ydC4gSXQncyBiYXNlZAorICAgICAgICBvbiBwcmV2aW91
cyBwYXRjaGVzIHdyaXR0ZW4gYnkgSWFnbyBUb3JhbCwgxb1hbiBEb2JlcsWhZWssIEVtYW51ZWxl
IEFpbmEgYW5kIEVtaWxpbyBQb3p1ZWxvIE1vbmZvcnQuCisKKyAgICAgICAgVGhlIGV4aXN0aW5n
IFdlYktpdEdUSysgV2F5bGFuZCBpbnRlcmZhY2UgcHJldmlvdXNseSBhZGRlZCBmb3IgdGhpcyB0
byBXZWJDb3JlIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBXZWJLaXQyCisgICAgICAgIGxheWVyLCBz
aW5jZSBpdCdzIGFjdHVhbGx5IHNwZWNpZmljIHRvIFdlYktpdDIsIGFuZCBpdCdzIG5vdyBhY3R1
YWxseSB1c2VkLiBUaGUgVUkgcHJvY2VzcyBydW5zIGEgbmVzdGVkIFdheWxhbmQKKyAgICAgICAg
Y29tcG9zaXRvciB0aGF0IHdlYiBwcm9jZXNzZXMgY29ubmVjdCB0by4gV2ViIHByb2Nlc3NlcyBj
cmVhdGUgYSBXYXlsYW5kIHN1cmZhY2UgaW4gdGhlIG5lc3RlZCBjb21wb3NpdG9yIGZvcgorICAg
ICAgICB0aGUgd2ViIHBhZ2UsIGFuZCB1c2luZyB0aGUgV2ViS2l0R1RLKyBXYXlsYW5kIHByb3Rv
Y29sIGludGVyZmFjZSB0aGV5IHRlbGwgdGhlIG5lc3RlZCBjb21wb3NpdG9yIHRoZSB3ZWIgcGFn
ZQorICAgICAgICBhc3NvY2lhdGVkIHRvIHRoZSBzdXJmYWNlLiBBIFdheWxhbmQgd2luZG93IGlz
IGNyZWF0ZWQgZm9yIHRoYXQgc3VyZmFjZSB0aGF0IGlzIHRoZW4gdXNlZCBhcyB0aGUgbmF0aXZl
IHdpbmRvdworICAgICAgICBoYW5kbGUgZm9yIGNvbXBvc2l0aW5nLiBUbyBjb21tdW5pY2F0ZSB3
aXRoIHRoZSBuZXN0ZWQgY29tcG9zaXRvciBhbmQgdG8gZW5zdXJlIGFsbCBHTCBvcGVyYXRpb25z
IGhhcHBlbiBpbiB0aGUKKyAgICAgICAgbmVzdGVkIGNvbXBvc2l0b3IgZGlzcGxheSwgdGhlIHdl
YiBwcm9jZXNzIGNyZWF0ZXMgYSBXYXlsYW5kIGRpc3BsYXkgdGhhdCBjb25uZWN0cyB0byB0aGUg
bmVzdGVkIGNvbXBvc2l0b3IsCisgICAgICAgIHVzZXMgdGhlIFdlYktpdEdUSysgV2F5bGFuZCBp
bnRlcmZhY2UgYW5kIGl0J3Mgc2V0IGFzIHRoZSBnbG9iYWwgc2hhcmVkIGRpc3BsYXkgZm9yIGNv
bXBvc2l0aW5nLgorCisgICAgICAgIFRoZSBuZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNyZWF0
ZXMgYSBuZXcgZGlzcGxheSB3aXRoIGEgdW5pcXVlIG5hbWUgdGhhdCBpcyBzZW50IHRvIHRoZSB3
ZWIgcHJvY2Vzc2VzIGF0CisgICAgICAgIHN0YXJ0IHVwLiBJdCBpbXBsZW1lbnRzIHRoZSBXYXls
YW5kIHN1cmZhY2UgaW50ZXJmYWNlIHRvIGhhbmRsZSB0aGUgV2F5bGFuZCBidWZmZXJzIGNyZWF0
ZWQgZm9yIGV2ZXJ5IHN1cmZhY2UKKyAgICAgICAgYW5kIHNjaGVkdWxpbmcgcmVkcmF3cyBvbiB0
aGUgd2ViIHBhZ2VzIHdoZW4gdXBkYXRlcyBhcmUgYXZhaWxhYmxlLiBJdCB1c2VzIHRoZSBXZWJL
aXRHVEsrIFdheWxhbmQgaW50ZXJmYWNlIHRvCisgICAgICAgIGFzc29jaWF0ZSB0aGUgc3VyZmFj
ZXMgdG8gYSBwYXJ0aWN1bGFyIHdlYiBwYWdlLiBBIHRleHR1cmUgaXMgY3JlYXRlZCBmb3IgZXZl
cnkgc3VyZmFjZSBhbmQgdXBkYXRlZCB3aXRoIHRoZQorICAgICAgICBXYXlsYW5kIGJ1ZmZlciBj
b250ZW50cyB1c2luZyBhbiBFR0xJbWFnZUtIUiBhbmQgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMmQg
QVBJLgorCisgICAgICAgIFRvIGFic3RyYWN0IHRoZSBwbGF0Zm9ybSBkaWZmZXJlbmNlcyBhbmQg
YXZvaWQgaWZkZWZzIGFzIG11Y2ggYXMgcG9zc2libGUsIG5ldyBhYnN0cmFjdCBjbGFzc2VzIGhh
dmUgYmVlbiBhZGRlZAorICAgICAgICB0byByZXByZXNlbnQgdGhlIHN1cmZhY2VzIHVzZWQgaW4g
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIEFjY2VsZXJhdGVkU3VyZmFjZSBpcyB1c2VkIGJ5IHRo
ZSB3ZWIgcHJvY2VzcyBhbmQKKyAgICAgICAgcmVwcmVzZW50cyB0aGUgc3VyZmFjZSB3aGVyZSBj
b250ZW50cyBhcmUgcmVuZGVyZWQgaW50by4gVGhlIFgxMSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUg
cmVkaXJlY3RlZCBYQ29tcG9zaXRlCisgICAgICAgIHdpbmRvdywgYW5kIHRoZSBXYXlsYW5kIGlt
cGxlbWVudGF0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIFdheWxhbmQgc3VyZmFj
ZSBhZGRlZCB0byBXZWJDb3JlIGJ1dCBuZXZlcgorICAgICAgICB1c2VkLiBJbiB0aGUgVUkgcHJv
Y2VzcyB0aGUgd2ViIHZpZXcgY3JlYXRlcyBhbiBhYnN0cmFjdCBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZSB0aGF0IGlzIHVzZWQgdG8gcmVuZGVyIHRoZQorICAgICAgICBBY2NlbGVyYXRlZFN1cmZh
Y2UgaW50byB0aGUgd2ViIHZpZXcgdXNpbmcgY2Fpcm8uIFRoZSBYMTEgaW1wbGVtZW50YXRpb24g
Y3JlYXRlcyB0aGUgY2Fpcm8gc3VyZmFjZSBmb3IgdGhlCisgICAgICAgIHJlZGlyZWN0ZWQgWENv
bXBvc2l0ZSB3aW5kb3cgcGl4bWFwIGFuZCB1c2VzIFhEYW1hZ2UgZXh0ZW5zaW9uIHRvIHNjaGVk
dWxlIHJlZHJhd3MuIFRoZSBXYXlsYW5kIGltcGxlbWVudGF0aW9uCisgICAgICAgIGFza3MgdGhl
IG5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgZm9yIHRoZSB0ZXh0dXJlIGFzc29jaWF0ZWQgdG8g
dGhlIHdlYiB2aWV3IHBhZ2UuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMg
bm93IGFsd2F5cyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gYm90aCBYMTEgYW5kIFdheWxhbmQsIHVu
bGVzcyBpdCdzIGV4cGxpY2l0bHkKKyAgICAgICAgZGlzYWJsZWQgYnkgdGhlIHVzZXIgdXNpbmcg
dGhlIFdFQktJVF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGUs
IG9yIGlmIGFueSBleHRlbnNpb24gb3IKKyAgICAgICAgZmVhdHVyZSByZXF1aXJlZCBieSBYMTEg
b3IgV2F5bGFuZCBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpnbENvbnRleHQpOiBQYXNzIHRoZSBzaGFyZWQgZGlz
cGxheSBmb3IgY29tcG9zaXRpbmcgdG8gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93
KCkKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEVu
Y29kZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBEZWNvZGUgd2F5bGFuZCBjb21w
b3NpdG9yIGRpc3BsYXkgbmFtZS4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oOiBBZGQgd2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZSBpbml0aWFs
IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UpOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VEcmF3KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2Vi
UGFnZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVcGRhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB0aGUg
d2F5bGFuZCBjb21wb3NpdG9yIGRpc3BsYXkgbmFtZSBpbml0aWFsIHBhcmFtZXRlci4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6fkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmU6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6
dXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKToKKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjp+QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kOjpwYWludCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpYRGFt
YWdlTm90aWZpZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmll
cjo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlmaWVyOjpyZW1vdmUpOgorICAg
ICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OmZpbHRlclhEYW1hZ2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6bm90aWZ5KToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp+QWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTEpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVY
MTE6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OnNpbmds
ZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9y
Q3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6QnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmRlc3Ryb3lM
aXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1
ZmZlcjo6dXNlKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6
dW51c2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyOjpjcmVh
dGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnNp
emUpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6U3VyZmFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjp+U3VyZmFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlOjptYWtlUGVu
ZGluZ0J1ZmZlckN1cnJlbnQpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
U3VyZmFjZTo6YXR0YWNoQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0
b3I6OlN1cmZhY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjpTdXJmYWNlOjpwcmVwYXJlVGV4dHVyZUZvclBhaW50aW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OmNvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKFdlYktpdDo6
Y3JlYXRlV2F5bGFuZExvb3BTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9z
aXRvcjo6V2F5bGFuZENvbXBvc2l0b3IpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9z
aXRvcjo6Z2V0VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpi
aW5kU3VyZmFjZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9y
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
dW5yZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBv
c2l0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjpCdWZm
ZXI6OmNyZWF0ZVdlYWtQdHIpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
U3VyZmFjZTo6c2V0V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9y
Ojppc1J1bm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6ZGlzcGxh
eU5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpp
bnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
QWNjZWxlcmF0ZWRTdXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNl
OjpBY2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZh
Y2U6On5BY2NlbGVyYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1
cmZhY2U6OnJlc2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVy
YXRlZFN1cmZhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFj
ZTo6d2luZG93KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpzdXJmYWNl
SUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNl
V2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3YXlsYW5kQ29tcG9zaXRvckRp
c3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpBY2NlbGVy
YXRlZFN1cmZhY2VXYXlsYW5kKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNl
V2F5bGFuZDo6fkFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQpOgorICAgICAgICAoV2ViS2l0OjpB
Y2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kOjpyZXNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNl
WDExOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OkFj
Y2VsZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFj
ZVgxMTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkU3VyZmFjZVgxMTo6cmVzaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGspOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpSZW5kZXJGcmFt
ZVNjaGVkdWxlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0
aWFsaXplIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBuYW1lLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3YXls
YW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKTogUmV0dXJuIHRoZSB3YXlsYW5kIGNvbXBvc2l0b3Ig
ZGlzcGxheSBuYW1lLgorCiAyMDE2LTA4LTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFw
cGxlLmNvbT4KIAogICAgICAgICBXVFIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2V0QXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
MzQzZTk2Yi4uMDk4MGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTI5NSwxMyAr
Mjk1LDE2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9nc3Ry
ZWFtZXIvSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKICAg
ICBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKIAorICAgIFVJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCisgICAgVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9B
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0RyYWdBbmRE
cm9wSGFuZGxlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNw
cAogICAgIFVJUHJvY2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNz
L2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdU
cmFuc2xhdG9yLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCi0gICAg
VUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1dlYkNvbG9yUGlja2VyR3RrLmNw
cAogICAgIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKICAgICBVSVBy
b2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGllbnRHdGsuY3BwCkBAIC0zNTAsOCArMzUzLDEwIEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2dz
dHJlYW1lci9XZWJQYWdlR1N0cmVhbWVyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2Nl
bGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNj
ZWxlcmF0ZWRTdXJmYWNlWDExLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRl
ckxpc3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJ
R3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtMzY4LDYg
KzM3Myw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L0luc3BlY3RvckdSZXNvdXJjZUJ1bmRsZS5jCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJJbnNwZWN0b3JHUmVz
b3VyY2VCdW5kbGUuYwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJL
aXQyUmVzb3VyY2VzR1Jlc291cmNlQnVuZGxlLmMKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJL
SVQyR1RLX0RJUn0vV2ViS2l0MldheWxhbmRDbGllbnRQcm90b2NvbC5jCiAKICAgICAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9L1dlYktpdEVudW1UeXBlcy5jcHAKICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0FQSV9ESVJ9L1dlYktpdE1hcnNoYWwuY3BwCkBA
IC02ODQsNiArNjkwLDE3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBWRVJCQVRJTQogKQog
CitpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQorICAgICMgV2F5bGFuZCBwcm90b2NvbCBleHRl
bnNpb24uCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJvdG9jb2wuYwor
ICAgICAgICBERVBFTkRTICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQ
cm90b2NvbC54bWwKKyAgICAgICAgQ09NTUFORCB3YXlsYW5kLXNjYW5uZXIgc2VydmVyLWhlYWRl
ciA8ICR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54bWwg
PiAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0vV2ViS2l0MldheWxhbmRTZXJ2ZXJQ
cm90b2NvbC5oCisgICAgICAgIENPTU1BTkQgd2F5bGFuZC1zY2FubmVyIGNsaWVudC1oZWFkZXIg
PCAke1dFQktJVDJfRElSfS9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wueG1sID4g
JHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19ESVJ9L1dlYktpdDJXYXlsYW5kQ2xpZW50UHJv
dG9jb2wuaAorICAgICAgICBDT01NQU5EIHdheWxhbmQtc2Nhbm5lciBjb2RlIDwgJHtXRUJLSVQy
X0RJUn0vU2hhcmVkL2d0ay9XZWJLaXQyV2F5bGFuZFByb3RvY29sLnhtbCA+ICR7REVSSVZFRF9T
T1VSQ0VTX1dFQktJVDJHVEtfRElSfS9XZWJLaXQyV2F5bGFuZENsaWVudFByb3RvY29sLmMKKyAg
ICApCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgc2V0
KFBsdWdpblByb2Nlc3NHVEsyX0VYRUNVVEFCTEVfTkFNRSBXZWJLaXRQbHVnaW5Qcm9jZXNzMikK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmNwcAppbmRleCAzNDUyNDI4Li41NGE2MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAog
I2luY2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgog
CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtNDEsMTQgKzQyLDE1IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPFRocmVhZGVkQ29tcG9zaXRv
cj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50KiBjbGllbnQsIHVpbnQ2NF90IG5h
dGl2ZVN1cmZhY2VIYW5kbGUpCitSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBv
c2l0b3I6OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRs
ZSwgU2hvdWxkRG9GcmFtZVN5bmMgZG9GcmFtZVN5bmMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVGhyZWFkZWRDb21wb3NpdG9yKGNsaWVudCwgbmF0aXZlU3VyZmFjZUhhbmRsZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVhZGVkQ29tcG9zaXRvcihjbGllbnQsIG5hdGl2
ZVN1cmZhY2VIYW5kbGUsIGRvRnJhbWVTeW5jKSk7CiB9CiAKLVRocmVhZGVkQ29tcG9zaXRvcjo6
VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCogY2xpZW50LCB1aW50NjRfdCBuYXRpdmVTdXJmYWNl
SGFuZGxlKQorVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50KiBj
bGllbnQsIHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUsIFNob3VsZERvRnJhbWVTeW5jIGRv
RnJhbWVTeW5jKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9uYXRpdmVTdXJmYWNl
SGFuZGxlKG5hdGl2ZVN1cmZhY2VIYW5kbGUpCisgICAgLCBtX2RvRnJhbWVTeW5jKGRvRnJhbWVT
eW5jKQogICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3Aoc3RkOjptYWtlX3VuaXF1ZTxDb21wb3Np
dGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKIHsKICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKQEAgLTE2NCwzNCArMTY2LDI1IEBAIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpCiAgICAgbV9jb21wb3NpdGluZ1J1
bkxvb3AtPnN0YXJ0VXBkYXRlVGltZXIoQ29tcG9zaXRpbmdSdW5Mb29wOjpJbW1lZGlhdGUpOwog
fQogCi1ib29sIFRocmVhZGVkQ29tcG9zaXRvcjo6dHJ5RW5zdXJlR0xDb250ZXh0KCkKK2Jvb2wg
VGhyZWFkZWRDb21wb3NpdG9yOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIGlmICghZ2xD
b250ZXh0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jb250ZXh0KQorICAg
ICAgICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIGdsQ29u
dGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICAvLyBUaGUgd2luZG93IHNpemUgbWF5
IGJlIG91dCBvZiBzeW5jIHdpdGggdGhlIHBhZ2Ugc2l6ZSBhdCB0aGlzIHBvaW50LCBhbmQgZ2V0
dGluZwotICAgIC8vIHRoZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGluY29ycmVjdCwgbWVhbnMgdGhh
dCB0aGUgY29udGVudCB3aWxsIGJlIG1pc3BsYWNlZC4gVGh1cwotICAgIC8vIHdlIHNldCB0aGUg
dmlld3BvcnQgcGFyYW1ldGVycyBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cgc2l6ZS4KLSAgICBJ
bnRTaXplIGNvbnRleHRTaXplID0gZ2xDb250ZXh0KCktPmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUo
KTsKLSAgICBpZiAobV92aWV3cG9ydFNpemUgIT0gY29udGV4dFNpemUpIHsKLSAgICAgICAgZ2xW
aWV3cG9ydCgwLCAwLCBjb250ZXh0U2l6ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7
Ci0gICAgICAgIG1fdmlld3BvcnRTaXplID0gY29udGV4dFNpemU7Ci0gICAgfQorICAgIGlmICgh
bV9uYXRpdmVTdXJmYWNlSGFuZGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KKyAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JX
aW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1fbmF0aXZlU3VyZmFj
ZUhhbmRsZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygp
KTsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1HTENvbnRl
eHQqIFRocmVhZGVkQ29tcG9zaXRvcjo6Z2xDb250ZXh0KCkKLXsKLSAgICBpZiAobV9jb250ZXh0
KQotICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworICAgIGlmICghbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFt
X25hdGl2ZVN1cmZhY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICht
X2RvRnJhbWVTeW5jID09IFNob3VsZERvRnJhbWVTeW5jOjpObykKKyAgICAgICAgbV9jb250ZXh0
LT5zd2FwSW50ZXJ2YWwoMCk7CiAKLSAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNv
bnRleHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG1fbmF0
aXZlU3VyZmFjZUhhbmRsZSksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7Ci0gICAgcmV0
dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBUaHJlYWRl
ZENvbXBvc2l0b3I6OmZvcmNlUmVwYWludCgpCkBAIC0yMTYsOSArMjA5LDE4IEBAIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIGlmICghbV9zY2VuZSB8fCAh
bV9zY2VuZS0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0cnlFbnN1
cmVHTENvbnRleHQoKSkKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICAvLyBUaGUgd2luZG93IHNpemUgbWF5IGJlIG91dCBvZiBzeW5jIHdpdGgg
dGhlIHBhZ2Ugc2l6ZSBhdCB0aGlzIHBvaW50LCBhbmQgZ2V0dGluZworICAgIC8vIHRoZSB2aWV3
cG9ydCBwYXJhbWV0ZXJzIGluY29ycmVjdCwgbWVhbnMgdGhhdCB0aGUgY29udGVudCB3aWxsIGJl
IG1pc3BsYWNlZC4gVGh1cywKKyAgICAvLyB3ZSBzZXQgdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMg
ZGlyZWN0bHkgZnJvbSB0aGUgd2luZG93IHNpemUuCisgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9
IG1fY29udGV4dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOworICAgIGlmIChtX3ZpZXdwb3J0
U2l6ZSAhPSBjb250ZXh0U2l6ZSkgeworICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGNvbnRleHRT
aXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV92aWV3cG9ydFNp
emUgPSBjb250ZXh0U2l6ZTsKKyAgICB9CisKICAgICBGbG9hdFJlY3QgY2xpcFJlY3QoMCwgMCwg
bV92aWV3cG9ydFNpemUud2lkdGgoKSwgbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwogCiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdmlld3BvcnRUcmFuc2Zvcm07CkBAIC0yMzIsNyArMjM0LDcg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgfQogICAg
IG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCAxLCBj
bGlwUmVjdCwgQ29sb3I6OnRyYW5zcGFyZW50LCAhbV9kcmF3c0JhY2tncm91bmQsIHNjcm9sbFBv
c3Rpb24pOwogCi0gICAgZ2xDb250ZXh0KCktPnN3YXBCdWZmZXJzKCk7CisgICAgbV9jb250ZXh0
LT5zd2FwQnVmZmVycygpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2Nl
bmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmlu
ZGV4IDA0MmM2OWYuLjYzNjg0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTU3LDcgKzU3LDkgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gY3JlYXRlKENsaWVudCosIHVpbnQ2NF90IG5h
dGl2ZVN1cmZhY2VIYW5kbGUgPSAwKTsKKyAgICBlbnVtIGNsYXNzIFNob3VsZERvRnJhbWVTeW5j
IHsgTm8sIFllcyB9OworCisgICAgc3RhdGljIFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IGNyZWF0
ZShDbGllbnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlID0gMCwgU2hvdWxkRG9GcmFt
ZVN5bmMgPSBTaG91bGREb0ZyYW1lU3luYzo6WWVzKTsKICAgICB2aXJ0dWFsIH5UaHJlYWRlZENv
bXBvc2l0b3IoKTsKIAogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0
aW5nKHVpbnQ2NF90KTsKQEAgLTc3LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KCk7CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCosIHVp
bnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUpOworICAgIFRocmVhZGVkQ29tcG9zaXRvcihDbGll
bnQqLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0ZyYW1lU3luYyk7CiAK
ICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQKICAgICB2b2lkIHJlbmRlck5l
eHRGcmFtZSgpIG92ZXJyaWRlOwpAQCAtOTAsOCArOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVuZGVyTGF5ZXJUcmVlKCk7CiAgICAgdm9pZCBzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgp
OwogCi0gICAgYm9vbCB0cnlFbnN1cmVHTENvbnRleHQoKTsKLSAgICBXZWJDb3JlOjpHTENvbnRl
eHQqIGdsQ29udGV4dCgpOworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBD
bGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU+IG1fc2NlbmU7CkBAIC0xMDIsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBmbG9h
dCBtX2RldmljZVNjYWxlRmFjdG9yIHsgMSB9OwogICAgIGJvb2wgbV9kcmF3c0JhY2tncm91bmQg
eyB0cnVlIH07CiAgICAgdWludDY0X3QgbV9uYXRpdmVTdXJmYWNlSGFuZGxlOworICAgIFNob3Vs
ZERvRnJhbWVTeW5jIG1fZG9GcmFtZVN5bmM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcG9z
aXRpbmdSdW5Mb29wPiBtX2NvbXBvc2l0aW5nUnVuTG9vcDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
OWViYjQzZC4uMjE5OGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTQ1LDYgKzE0NSwxMCBAQCB2b2lk
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAjaWYgT1MoTElOVVgpCiAgICAgZW5jb2RlciA8PCBtZW1vcnlQcmVzc3VyZU1v
bml0b3JIYW5kbGU7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgZW5jb2Rl
ciA8PCB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2VuZGlmCiB9CiAKIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTMwNSw2ICszMDks
MTEgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZmYyMDA1
Yy4uYzI2YzRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNzAsNiArMTcwLDEwIEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBPUyhMSU5VWCkKICAgICBJUEM6OkF0dGFjaG1l
bnQgbWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShX
QVlMQU5EKQorICAgIFN0cmluZyB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29s
LnhtbCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MldheWxhbmRQcm90b2NvbC54
bWwKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XZWJLaXRHdGtXYXlsYW5kQ2xpZW50UHJvdG9jb2wueG1sCnJl
bmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wu
eG1sCmluZGV4IDEzMWE5M2MuLjEyNDYxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29sLnht
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJXYXlsYW5kUHJvdG9jb2wu
eG1sCkBAIC0yNyw5ICsyNyw5IEBACiAgIDwvY29weXJpZ2h0PgogCiAgIDxpbnRlcmZhY2UgbmFt
ZT0id2xfd2Via2l0Z3RrIiB2ZXJzaW9uPSIxIj4KLSAgICA8cmVxdWVzdCBuYW1lPSJzZXRfc3Vy
ZmFjZV9mb3Jfd2lkZ2V0Ij4KKyAgICA8cmVxdWVzdCBuYW1lPSJiaW5kX3N1cmZhY2VfdG9fcGFn
ZSI+CiAgICAgICA8YXJnIG5hbWU9InN1cmZhY2UiIHR5cGU9Im9iamVjdCIgaW50ZXJmYWNlPSJ3
bF9zdXJmYWNlIi8+Ci0gICAgICA8YXJnIG5hbWU9ImlkIiB0eXBlPSJ1aW50Ii8+CisgICAgICA8
YXJnIG5hbWU9InBhZ2VfaWQiIHR5cGU9InVpbnQiLz4KICAgICA8L3JlcXVlc3Q+CiAKICAgPC9p
bnRlcmZhY2U+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYWQzODE0MC4uMDZhZjA1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAKICNp
bmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRl
ICJJbnB1dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgi
CkBAIC03MiwyMyArNzMsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmgiCiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotI2lu
Y2x1ZGUgIlhEYW1hZ2VOb3RpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5WDExLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRl
IDxYMTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KLSNpbmNs
dWRlIDxjYWlyby14bGliLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRl
IDxnZGsvZ2RreC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQotI2luY2x1ZGUg
PGdkay9nZGt3YXlsYW5kLmg+Ci0jZW5kaWYKLQogLy8gZ3RrX3dpZGdldF9nZXRfc2NhbGVfZmFj
dG9yKCkgYXBwZWFyZWQgaW4gR1RLIDMuMTAsIGJ1dCB3ZSBhbHNvIG5lZWQKIC8vIHRvIG1ha2Ug
c3VyZSB3ZSBoYXZlIGNhaXJvIG5ldyBlbm91Z2ggdG8gc3VwcG9ydCBjYWlyb19zdXJmYWNlX3Nl
dF9kZXZpY2Vfc2NhbGUKICNkZWZpbmUgSEFWRV9HVEtfU0NBTEVfRkFDVE9SIEhBVkVfQ0FJUk9f
U1VSRkFDRV9TRVRfREVWSUNFX1NDQUxFICYmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQpA
QCAtMjExLDEwICsxOTksNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAg
ICAgdW5zaWduZWQgc2NyZWVuU2F2ZXJDb29raWU7CiAjZW5kaWYKIAotI2lmIFVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlOwotICAgIFhVbmlxdWVEYW1hZ2UgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1N1cmZhY2VEYW1hZ2U7Ci0jZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU+IGFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOwogCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0FuZERyb3BIYW5kbGVy
PiBkcmFnQW5kRHJvcEhhbmRsZXI7CkBAIC0zNTEsNTAgKzMzNiw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmllCiAgICAgICAgIHByaXYtPnRvcGxldmVsV2luZG93UmVhbGl6ZWRJRCA9IGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZCh3aW5kb3csICJyZWFsaXplIiwgR19DQUxMQkFDSyh0b3BsZXZl
bFdpbmRvd1JlYWxpemVkKSwgd2ViVmlld0Jhc2UpOwogfQogCi0jaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIFBpeG1h
cCBwaXhtYXApCi17Ci0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5
cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBp
ZiAocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UKLSAgICAgICAgJiYgY2Fpcm9f
eGxpYl9zdXJmYWNlX2dldF9kcmF3YWJsZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZS5nZXQoKSkgPT0gcGl4bWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UpIHsKLSAgICAgICAgaWYgKHByaXYtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlKSB7Ci0gICAgICAgICAgICBYRGFtYWdlTm90
aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZURhbWFnZS5nZXQoKSk7Ci0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nU3VyZmFjZURhbWFnZS5yZXNldCgpOwotICAgICAgICB9Ci0gICAgICAgIHByaXYtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIXBp
eG1hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdp
bmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCkpOwotICAgIGlmICghZHJhd2luZ0FyZWEpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEludFNpemUgc2l6ZSA9IGRyYXdpbmdBcmVhLT5zaXplKCk7Ci0gICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBwcml2LT5wYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7
Ci0gICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBEaXNwbGF5KiBkaXNw
bGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IEdES19E
SVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKTsKLSAgICBHZGtWaXN1
YWwqIHZpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsKGdka19zY3JlZW5fZ2V0X2Rl
ZmF1bHQoKSk7Ci0gICAgaWYgKCF2aXN1YWwpCi0gICAgICAgIHZpc3VhbCA9IGdka19zY3JlZW5f
Z2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKLSAgICBwcml2LT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFj
ZV9jcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2Nh
bGUocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxl
RmFjdG9yLCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1N1cmZhY2VEYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKGRpc3BsYXksIHBpeG1hcCwgWERhbWFn
ZVJlcG9ydE5vbkVtcHR5KTsKLSAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZChw
cml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURhbWFnZS5nZXQoKSwgW3dlYlZpZXdd
IHsKLSAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQod2ViVmlldykpOwot
ICAgIH0pOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6
ZShHdGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC01NjQsOSArNTA1LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKEdPYmplY3QqIGdvYmplY3QpCiAgICAgZ19j
YW5jZWxsYWJsZV9jYW5jZWwod2ViVmlldy0+cHJpdi0+c2NyZWVuU2F2ZXJJbmhpYml0Q2FuY2Vs
bGFibGUuZ2V0KCkpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldp
bmRvdyh3ZWJWaWV3LCBudWxscHRyKTsKICAgICB3ZWJWaWV3LT5wcml2LT5wYWdlUHJveHktPmNs
b3NlKCk7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0
V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYlZpZXcsIDApOwot
I2VuZGlmCisgICAgd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgPSBudWxs
cHRyOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFz
cyktPmRpc3Bvc2UoZ29iamVjdCk7CiB9CiAKQEAgLTU4NSw1NSArNTI0LDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJp
di0+YXV0aGVudGljYXRpb25EaWFsb2cgPSAwOwogfQogCi1zdGF0aWMgYm9vbCB3ZWJraXRXZWJW
aWV3UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlLCBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEsIGNhaXJvX3Qq
IGNyLCBHZGtSZWN0YW5nbGUqIGNsaXBSZWN0KQotewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKQotICAgIEFTU0VSVChkcmF3aW5nQXJlYSk7Ci0KLSAgICBpZiAoIWRyYXdp
bmdBcmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2ViVmlld0Jhc2UpLT5wcml2OwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlLmdldCgpOwotICAgIGNh
aXJvX3NhdmUoY3IpOwotCi0gICAgaWYgKCFzdXJmYWNlIHx8ICFwcml2LT5wYWdlUHJveHktPmRy
YXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9
IHByaXYtPnBhZ2VQcm94eS0+YmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgIGlmIChjb2xvci5o
YXNBbHBoYSgpKSB7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54
LCBjbGlwUmVjdC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKLSAgICAg
ICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAg
ICAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29sb3Iu
YWxwaGEoKSA+IDApIHsKLSAgICAgICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGNv
bG9yKTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1Jf
U09VUkNFKTsKLSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNs
aXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICAg
ICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSkg
ewotICAgICAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9j
ZXNzIGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0Ci0gICAgICAgIC8vIGFzIGRpcnR5IHRvIGVu
c3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9z
c2libGUuCi0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJmYWNlKTsKLSAgICAg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0
LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7Ci0gICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3Vy
ZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwg
Q0FJUk9fT1BFUkFUT1JfT1ZFUik7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0KLQot
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTSh3ZWJWaWV3QmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNyKTsKLSAgICBVTlVT
RURfUEFSQU0oY2xpcFJlY3QpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWly
b190KiBjcikKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAtNjQ1LDcgKzUzNSw5IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQog
ICAgIGlmICghZ2RrX2NhaXJvX2dldF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAg
ICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgaWYgKCF3ZWJraXRXZWJWaWV3UmVuZGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMod2ViVmlld0Jhc2UsIGRyYXdpbmdBcmVhLCBjciwgJmNs
aXBSZWN0KSkgeworICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmUgJiYgZHJhd2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQor
ICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnBhaW50
KGNyLCBjbGlwUmVjdCk7CisgICAgZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6OlJlZ2lvbiB1bnBh
aW50ZWRSZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNlZC4KICAgICAgICAgZHJhd2luZ0Fy
ZWEtPnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKICAgICB9CkBAIC0xMjg2
LDYgKzExNzgsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFJlZjxBUAogICAgIHByaXYtPnBhZ2VQcm94
eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
IAorICAgIHByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlID0gQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZSgqcHJpdi0+cGFnZVByb3h5KTsKKwogICAgIHByaXYtPmlucHV0TWV0aG9k
RmlsdGVyLnNldFBhZ2UocHJpdi0+cGFnZVByb3h5LmdldCgpKTsKIAogI2lmIEhBVkUoR1RLX1ND
QUxFX0ZBQ1RPUikKQEAgLTE1NjYsMjkgKzE0NjAsMjAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVJlc2V0Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkK
IAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250
ZXh0JiBsYXllclRyZWVDb250ZXh0KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Bp
eG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0od2Via2l0V2ViVmlld0Jhc2UpOwotI2VuZGlmCisgICAgaWYg
KHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKKyAgICAg
ICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRh
dGUobGF5ZXJUcmVlQ29udGV4dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7Ci0jaWYg
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VT
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCBsYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJW
aWV3QmFzZSk7Ci0jZW5kaWYKKyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAogdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKLSNlbmRpZgorICAgIGlmICh3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHdlYmtpdFdlYlZpZXdC
YXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKExheWVyVHJlZUNvbnRl
eHQoKSk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3Mo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQpAQCAtMTYxNiw5ICsxNTAxLDkg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VD
bG9zZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotI2lmIFVTRShS
RURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFzZSwgMCk7Ci0jZWxpZiBQ
TEFURk9STShYMTEpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAod2Via2l0V2ViVmll
d0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICB3ZWJraXRXZWJW
aWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnVwZGF0ZShMYXllclRyZWVD
b250ZXh0KCkpOworI2lmIFBMQVRGT1JNKFgxMSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAh
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCmluZGV4IGQyYjYyNWIuLjE4MDc4MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhUHJveHkuY3BwCkBAIC00MSw2ICs0MSwxMSBAQAogI2luY2x1ZGUgIkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheS5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTIxNiw2ICsyMjEsMTMgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdp
bmdBcmVhUHJveHk6OndhaXRGb3JBbmREaXNwYXRjaERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KCkKICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnN0YXRlKCkgPT0gV2ViUHJvY2Vz
c1Byb3h5OjpTdGF0ZTo6TGF1bmNoaW5nKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorICAgIC8vIE5ldmVyIGJsb2NrIHRoZSBVSSBwcm9jZXNzIGluIFdheWxhbmQg
d2hlbiB3YWl0aW5nIGZvciBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSBhZnRlciBhIHJlc2l6
ZSwKKyAgICAvLyBiZWNhdXNlIHRoZSBuZXN0ZWQgY29tcG9zaXRvciBuZWVkcyB0byBoYW5kbGUg
dGhlIHdlYiBwcm9jZXNzIHJlcXVlc3RzIHRoYXQgaGFwcGVucyB3aGlsZSByZXNpemluZy4KKyAg
ICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6V2F5bGFuZCAmJiBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCku
aXNSdW5uaW5nKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IHdh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5IHdpbGwgYWx3YXlzIHJldHVybiB0aGUgb2xkZXN0
IERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlIG1lc3NhZ2UgdGhhdAogICAgIC8vIGhhc24ndCB5
ZXQgYmVlbiBwcm9jZXNzZWQuIEJ1dCBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gc2tpcCBhaGVhZCB0
byBzb21lIG90aGVyIERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlCiAgICAgLy8gbWVzc2FnZSwg
aWYgbXVsdGlwbGUgRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUgbWVzc2FnZXMgYXJlIHdhaXRp
bmcgdG8gYmUgcHJvY2Vzc2VkLiBGb3IgaW5zdGFuY2UsIHdlIGNvdWxkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlNTZjZjFlLi5mYWU0ZDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEwMCw2
ICsxMDAsMTEgQEAKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZU1vbml0b3IuaCIKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CisjZW5kaWYKKwogI2lmbmRlZiBO
REVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAg
LTYzOSw2ICs2NDQsMTEgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
TmV3V2ViUHJvY2VzcygpCiAgICAgICAgIHBhcmFtZXRlcnMubWVtb3J5UHJlc3N1cmVNb25pdG9y
SGFuZGxlID0gTWVtb3J5UHJlc3N1cmVNb25pdG9yOjpzaW5nbGV0b24oKS5jcmVhdGVIYW5kbGUo
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5
bGFuZCkKKyAgICAgICAgcGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lID0g
V2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmRpc3BsYXlOYW1lKCk7CisjZW5kaWYKKwog
ICAgIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCgpOwogCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZp
YyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmMxNjJhM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KKworI2lmIFBMQVRGT1JNKFdBWUxBTkQp
CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgiCisjZW5kaWYKKwor
I2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmU+IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlKQoreworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxh
bmQpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0
ZSh3ZWJQYWdlKTsKKyNlbmRpZgorI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxh
dGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMTo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZShX
ZWJQYWdlUHJveHkmIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKK3sKK30KKwor
Ym9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KQoreworICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
ID0gbV93ZWJQYWdlLmJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChjb2xvci5oYXNBbHBoYSgp
KSB7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55
KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY2Fpcm9f
c2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7CisgICAgICAgIGNhaXJvX2Zp
bGwoY3IpOworICAgIH0KKworICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkgeworICAgICAgICBz
ZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7CisgICAgICAgIGNhaXJvX3NldF9vcGVy
YXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xl
KGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJl
Y3QuaGVpZ2h0KCkpOworICAgICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKc2ltaWxh
cml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggNjlmMjJiMS4uM2RlM2I1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9X
YXlsYW5kU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0MiArMjMsMzQgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiAgV2F5bGFuZFN1cmZhY2VfaAotI2RlZmluZSAgV2F5bGFu
ZFN1cmZhY2VfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLQot
I2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+Cit0
eXBlZGVmIHN0cnVjdCBfY2Fpcm8gY2Fpcm9fdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgSW50UmVjdDsKK30KIAotY2xhc3MgR0xDb250ZXh0RUdMOwotY2xhc3MgSW50U2l6ZTsKLQot
Y2xhc3MgV2F5bGFuZFN1cmZhY2UgewotcHVibGljOgotICAgIFdheWxhbmRTdXJmYWNlKHN0cnVj
dCB3bF9zdXJmYWNlKiwgRUdMTmF0aXZlV2luZG93VHlwZSk7Ci0gICAgfldheWxhbmRTdXJmYWNl
KCk7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNl
KCkgeyByZXR1cm4gbV93bFN1cmZhY2U7IH0KLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2
ZVdpbmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93OyB9CitjbGFzcyBMYXllclRy
ZWVDb250ZXh0OworY2xhc3MgV2ViUGFnZVByb3h5OwogCi0gICAgdm9pZCByZXNpemUoY29uc3Qg
SW50U2l6ZSYpOworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4gY3JlYXRlR0xDb250ZXh0KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25z
dCBMYXllclRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3Qq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKLSAgICB2b2lkIHJlcXVlc3RGcmFtZSgpOwor
cHJvdGVjdGVkOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBhZ2VQcm94eSYpOwog
Ci1wcml2YXRlOgotICAgIHN0cnVjdCB3bF9zdXJmYWNlKiBtX3dsU3VyZmFjZTsKLSAgICBFR0xO
YXRpdmVXaW5kb3dUeXBlIG1fbmF0aXZlV2luZG93OworICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQ
YWdlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0o
V0FZTEFORCkKLQotI2VuZGlmIC8vIFdheWxhbmRTdXJmYWNlX2gKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9B
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjJmNmJhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTAsMCAr
MSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2F5bGFuZENvbXBv
c2l0b3IuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nh
aXJvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorCisjaWYg
VVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxXZWJDb3JlL09wZW5HTFNoaW1zLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6
c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kPihuZXcg
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKHdlYlBhZ2UpKTsKK30KKworQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFn
ZSkKK3sKKyAgICBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJXZWJQYWdl
KG1fd2ViUGFnZSk7Cit9CisKK0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6fkFjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCgpCit7CisgICAgV2F5bGFuZENvbXBvc2l0b3I6OnNp
bmdsZXRvbigpLnVucmVnaXN0ZXJXZWJQYWdlKG1fd2ViUGFnZSk7Cit9CisKK2Jvb2wgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpCit7CisgICAgR0x1aW50IHRleHR1cmU7CisgICAgSW50U2l6ZSB0ZXh0dXJl
U2l6ZTsKKyAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5nZXRUZXh0dXJl
KG1fd2ViUGFnZSwgdGV4dHVyZSwgdGV4dHVyZVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFp
bnQoY3IsIGNsaXBSZWN0KTsKKworI2lmIDAKKyAgICAvLyBGSVhNRTogVXNlIHRoaXMgd2hlbiBH
VEsrID49IDMuMTYuIEdUSysgZXhwZWN0cyB0aGUgWSBheGlzIHRvIGJlIGludmVydGVkIHRvIHdo
YXQgd2UgZ2V0LCBzbyB3ZSBuZWVkIHRvIGZsaXAgaXQgc29tZWhvdy4KKyAgICBnZGtfY2Fpcm9f
ZHJhd19mcm9tX2dsKGNyLCBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93ZWJQYWdlLnZpZXdXaWRn
ZXQoKSksIHRleHR1cmUsIEdMX1RFWFRVUkUsIDEsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgp
LCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisjZWxzZQorICAgIEludFNp
emUgc2l6ZSA9IHRleHR1cmVTaXplOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93
ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZh
Y3Rvcik7CisKKyAgICBpZiAoIW1fc3VyZmFjZSB8fCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93
aWR0aChtX3N1cmZhY2UuZ2V0KCkpICE9IHNpemUud2lkdGgoKSB8fCBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9oZWlnaHQobV9zdXJmYWNlLmdldCgpKSAhPSBzaXplLmhlaWdodCgpKQorICAgICAg
ICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19G
T1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBjYWlyb1N1
cmZhY2VTZXREZXZpY2VTY2FsZShtX3N1cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlRmFjdG9yLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBHTHVpbnQgZmI7CisgICAgZ2xHZW5GcmFtZWJ1ZmZl
cnMoMSwgJmZiKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmIpOwor
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKworICAgIGdsUGl4ZWxTdG9yZWko
R0xfUEFDS19BTElHTk1FTlQsIDQpOworICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVO
R1RILCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKSAvIDQp
OworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVNp
emUud2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgpKSk7CisjZWxz
ZQorICAgIGdsUmVhZFBpeGVscygwLCAwLCB0ZXh0dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6
ZS5oZWlnaHQoKSwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSkpOworI2VuZGlmCisgICAgZ2xQ
aXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIDApOworCisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYik7
CisKKyAgICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNz
IGF0IGFueSB0aW1lLCBzbyB3ZSBtYXJrIGl0CisgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdl
IGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4K
KyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJmYWNlLmdldCgpKTsKKyAgICBjYWly
b19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0
aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNy
LCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fZmlsbChjcik7CisjZW5kaWYKKworICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZC5oCnNpbWlsYXJpdHkgaW5kZXggNjglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZEV2ZW50U291cmNlLmgKcmVuYW1lIHRvIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
LmgKaW5kZXggYmVkMTY2Mi4uNGM0MjIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDIzICsyMywzMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdheWxhbmRFdmVudFNvdXJjZV9oCi0jZGVmaW5lIFdheWxhbmRFdmVudFNvdXJjZV9oCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgiCiAKICNpZiBQ
TEFURk9STShXQVlMQU5EKQogCi0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdheWxhbmQt
c2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViUGFnZVByb3h5OwogCi1j
bGFzcyBXYXlsYW5kRXZlbnRTb3VyY2UgeworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgR1NvdXJjZSogY3JlYXRlRGlz
cGxheUV2ZW50U291cmNlKHN0cnVjdCB3bF9kaXNwbGF5Kik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmKTsKKyAgICB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKCk7CisKK3ByaXZhdGU6
CisgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYpOworCisg
ICAgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OworCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwogfTsKIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShXQVlMQU5EKQotCi0jZW5kaWYgLy8gV2F5bGFuZEV2ZW50U291cmNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVY
MTEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyODMwMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEuY3BwCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgiCisKKyNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCisj
aW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDEx
L2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KKyNpbmNsdWRl
IDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7CisKK2Ns
YXNzIFhEYW1hZ2VOb3RpZmllciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWERhbWFnZU5v
dGlmaWVyKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVy
PjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgWERhbWFnZU5vdGlmaWVyJiBzaW5nbGV0b24oKQorICAg
IHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4gbm90aWZp
ZXI7CisgICAgICAgIHJldHVybiBub3RpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIGFkZChEYW1h
Z2UgZGFtYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKKyAgICB7
CisgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICBn
ZGtfd2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJG
dW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAgICAgIG1fbm90aWZ5RnVuY3Rp
b25zLmFkZChkYW1hZ2UsIFdURk1vdmUobm90aWZ5RnVuY3Rpb24pKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlbW92ZShEYW1hZ2UgZGFtYWdlKQorICAgIHsKKyAgICAgICAgbV9ub3RpZnlGdW5jdGlv
bnMucmVtb3ZlKGRhbWFnZSk7CisgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5
KCkpCisgICAgICAgICAgICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxHZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFhEYW1hZ2VOb3RpZmllcigpID0gZGVmYXVsdDsKKworICAg
IHN0YXRpYyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERhbWFnZUV2ZW50KEdka1hFdmVudCogZXZl
bnQsIEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKiBub3RpZmllcikKKyAgICB7CisgICAgICAg
IGF1dG8qIHhFdmVudCA9IHN0YXRpY19jYXN0PFhFdmVudCo+KGV2ZW50KTsKKyAgICAgICAgaWYg
KHhFdmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52YWx1ZSgpICsgWERhbWFnZU5vdGlm
eSkKKyAgICAgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJTlVFOworCisgICAgICAgIGF1
dG8qIGRhbWFnZUV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxYRGFtYWdlTm90aWZ5RXZlbnQqPih4
RXZlbnQpOworICAgICAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVudC0+ZGFtYWdl
KSkgeworICAgICAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVudC0+eGFueS5kaXNwbGF5LCBk
YW1hZ2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBHREtf
RklMVEVSX1JFTU9WRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBHREtfRklMVEVSX0NP
TlRJTlVFOworICAgIH0KKworICAgIGJvb2wgbm90aWZ5KERhbWFnZSBkYW1hZ2UpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1
bmN0aW9ucy5nZXQoZGFtYWdlKSkgeworICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBIYXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX25v
dGlmeUZ1bmN0aW9uczsKK307CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMT4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OmNyZWF0ZShXZWJQYWdlUHJveHkm
IHdlYlBhZ2UpCit7CisgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOworICAgIGlmICghZGlzcGxh
eS5zdXBwb3J0c1hDb21wb3NpdGUoKSB8fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2Uoc19kYW1h
Z2VFdmVudEJhc2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExPihuZXcgQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVYMTEod2ViUGFnZSkpOworfQorCitBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDog
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUod2ViUGFnZSkKK3sKK30KKworQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVYMTE6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMSgpCit7CisgICAgaWYgKG1f
ZGFtYWdlKSB7CisgICAgICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3ZlKG1f
ZGFtYWdlLmdldCgpKTsKKyAgICAgICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICB9Cit9CisKK3Zv
aWQgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnVwZGF0ZShjb25zdCBMYXllclRyZWVDb250
ZXh0JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIFBpeG1hcCBwaXhtYXAgPSBsYXllclRyZWVD
b250ZXh0LmNvbnRleHRJRDsKKyAgICBpZiAobV9zdXJmYWNlICYmIGNhaXJvX3hsaWJfc3VyZmFj
ZV9nZXRfZHJhd2FibGUobV9zdXJmYWNlLmdldCgpKSA9PSBwaXhtYXApCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAgICAgaWYgKG1fZGFtYWdlKSB7CisgICAg
ICAgICAgICBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigpLnJlbW92ZShtX2RhbWFnZS5nZXQo
KSk7CisgICAgICAgICAgICBtX2RhbWFnZS5yZXNldCgpOworICAgICAgICB9CisgICAgICAgIG1f
c3VyZmFjZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFwaXhtYXApCisgICAgICAgIHJl
dHVybjsKKworICAgIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19j
YXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4obV93ZWJQYWdlLmRyYXdpbmdBcmVhKCkpOworICAg
IGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgc2l6ZSA9
IGRyYXdpbmdBcmVhLT5zaXplKCk7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dl
YlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlRmFj
dG9yKTsKKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBBU1NF
UlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKSkubmF0aXZlKCkgPT0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0
X2RlZmF1bHQoKSkpOworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdi
YV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyAgICBpZiAoIXZpc3VhbCkKKyAg
ICAgICAgdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dl
dF9kZWZhdWx0KCkpOworICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFj
ZV9jcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2Nh
bGUobV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIFhEYW1hZ2VS
ZXBvcnROb25FbXB0eSk7CisgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGQobV9k
YW1hZ2UuZ2V0KCksIFt0aGlzXSB7CisgICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhtX3dl
YlBhZ2Uudmlld1dpZGdldCgpKTsKKyAgICB9KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIGlmICghbV9zdXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYWly
b19zYXZlKGNyKTsKKyAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBS
ZWN0KTsKKworICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHBy
b2Nlc3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKKyAgICAvLyBhcyBkaXJ0eSB0byBlbnN1
cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3Np
YmxlLgorICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkpOworICAg
IGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0
LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IsIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNy
LCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJv
X3Jlc3RvcmUoY3IpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlhN2MyZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZS5oIgorCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKKworY2xhc3MgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEgZmluYWwgOiBw
dWJsaWMgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMSgpOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExKFdlYlBh
Z2VQcm94eSYpOworCisgICAgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92
ZXJyaWRlOworICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKKyAg
ICBXZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1fZGFtYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3YzczNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
CkBAIC0wLDAgKzEsNTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldheWxhbmRDb21wb3NpdG9y
LmgiCisKKyNpZiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiV2ViS2l0MldheWxhbmRT
ZXJ2ZXJQcm90b2NvbC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWds
ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgorI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLXByb3Rv
Y29sLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Cisj
aW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvT3BlbkdM
U2hpbXMuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKyNpZiAhZGVmaW5lZChQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCkKK3R5
cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMKSAoRUdMRGlzcGxh
eSwgc3RydWN0IHdsX2Rpc3BsYXkqKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZORUdMVU5C
SU5EV0FZTEFORERJU1BMQVlXTCkKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFVOQklORFdB
WUxBTkRESVNQTEFZV0wpIChFR0xEaXNwbGF5LCBzdHJ1Y3Qgd2xfZGlzcGxheSopOworI2VuZGlm
CisKKyNpZiAhZGVmaW5lZChQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCkKK3R5cGVkZWYgRUdM
Qm9vbGVhbiAoKlBGTkVHTFFVRVJZV0FZTEFOREJVRkZFUldMKSAoRUdMRGlzcGxheSwgc3RydWN0
IHdsX3Jlc291cmNlKiwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50KiB2YWx1ZSk7CisjZW5kaWYK
KworI2lmICFkZWZpbmVkKFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykKK3R5cGVkZWYgRUdMSW1h
Z2VLSFIgKCpQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0MpIChFR0xEaXNwbGF5LCBFR0xDb250ZXh0
LCBFR0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVmZmVyLCBjb25zdCBFR0xpbnQqIGF0dHJpYkxp
c3QpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DKQor
dHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykgKEVHTERpc3Bs
YXksIEVHTEltYWdlS0hSKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoUEZOR0xFR0xJTUFHRVRB
UkdFVFRFWFRVUkUyRE9FU1BST0MpCit0eXBlZGVmIHZvaWQgKCpQRk5HTEVHTElNQUdFVEFSR0VU
VEVYVFVSRTJET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMpOworI2VuZGlm
CisKK3N0YXRpYyBQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCBlZ2xCaW5kV2F5bGFuZERpc3Bs
YXk7CitzdGF0aWMgUEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCBlZ2xVbmJpbmRXYXlsYW5k
RGlzcGxheTsKK3N0YXRpYyBQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCBlZ2xRdWVyeVdheWxh
bmRCdWZmZXI7CitzdGF0aWMgUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DIGVnbENyZWF0ZUltYWdl
Oworc3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgZWdsRGVzdHJveUltYWdlOworc3Rh
dGljIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DIGVnbEltYWdlVGFyZ2V0VGV4
dHVyZTJEOworCitXYXlsYW5kQ29tcG9zaXRvciYgV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRv
bigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdheWxhbmRDb21wb3NpdG9yPiB3YXls
YW5kQ29tcG9zaXRvcjsKKyAgICByZXR1cm4gd2F5bGFuZENvbXBvc2l0b3I7Cit9CisKK1dheWxh
bmRDb21wb3NpdG9yOjpCdWZmZXIqIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3Jl
YXRlKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKHN0cnVjdCB3bF9s
aXN0ZW5lciogbGlzdGVuZXIgPSB3bF9yZXNvdXJjZV9nZXRfZGVzdHJveV9saXN0ZW5lcihyZXNv
dXJjZSwgZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2spKSB7CisgICAgICAgIFdheWxhbmRDb21wb3Np
dG9yOjpCdWZmZXIqIGJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIHdsX2NvbnRhaW5lcl9vZihsaXN0
ZW5lciwgYnVmZmVyLCBtX2Rlc3Ryb3lMaXN0ZW5lcik7CisgICAgfQorCisgICAgcmV0dXJuIG5l
dyBXYXlsYW5kQ29tcG9zaXRvcjo6QnVmZmVyKHJlc291cmNlKTsKK30KKworV2F5bGFuZENvbXBv
c2l0b3I6OkJ1ZmZlcjo6QnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3VyY2UpCisgICAg
OiBtX3Jlc291cmNlKHJlc291cmNlKQorICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQorewor
ICAgIHdsX2xpc3RfaW5pdCgmbV9kZXN0cm95TGlzdGVuZXIubGluayk7CisgICAgbV9kZXN0cm95
TGlzdGVuZXIubm90aWZ5ID0gZGVzdHJveUxpc3RlbmVyQ2FsbGJhY2s7CisgICAgd2xfcmVzb3Vy
Y2VfYWRkX2Rlc3Ryb3lfbGlzdGVuZXIobV9yZXNvdXJjZSwgJm1fZGVzdHJveUxpc3RlbmVyKTsK
K30KKworV2F5bGFuZENvbXBvc2l0b3I6OkJ1ZmZlcjo6fkJ1ZmZlcigpCit7CisgICAgd2xfbGlz
dF9yZW1vdmUoJm1fZGVzdHJveUxpc3RlbmVyLmxpbmspOworfQorCit2b2lkIFdheWxhbmRDb21w
b3NpdG9yOjpCdWZmZXI6OmRlc3Ryb3lMaXN0ZW5lckNhbGxiYWNrKHN0cnVjdCB3bF9saXN0ZW5l
ciogbGlzdGVuZXIsIHZvaWQqKQoreworICAgIFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXIqIGJ1
ZmZlcjsKKyAgICBidWZmZXIgPSB3bF9jb250YWluZXJfb2YobGlzdGVuZXIsIGJ1ZmZlciwgbV9k
ZXN0cm95TGlzdGVuZXIpOworICAgIGRlbGV0ZSBidWZmZXI7Cit9CisKK3ZvaWQgV2F5bGFuZENv
bXBvc2l0b3I6OkJ1ZmZlcjo6dXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudCsrOworfQorCit2b2lk
IFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OnVudXNlKCkKK3sKKyAgICBtX2J1c3lDb3VudC0t
OworICAgIGlmICghbV9idXN5Q291bnQpCisgICAgICAgIHdsX3Jlc291cmNlX3F1ZXVlX2V2ZW50
KG1fcmVzb3VyY2UsIFdMX0JVRkZFUl9SRUxFQVNFKTsKK30KKworRUdMSW1hZ2VLSFIgV2F5bGFu
ZENvbXBvc2l0b3I6OkJ1ZmZlcjo6Y3JlYXRlSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFR0xJbWFnZUtIUio+KGVnbENyZWF0ZUltYWdlKFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgRUdMX05PX0NPTlRFWFQsIEVHTF9XQVlMQU5E
X0JVRkZFUl9XTCwgbV9yZXNvdXJjZSwgbnVsbHB0cikpOworfQorCitJbnRTaXplIFdheWxhbmRD
b21wb3NpdG9yOjpCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIEVHTERpc3BsYXkgZWdsRGlz
cGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKyAg
ICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIoZWdsRGlzcGxh
eSwgbV9yZXNvdXJjZSwgRUdMX1dJRFRILCAmd2lkdGgpOworICAgIGVnbFF1ZXJ5V2F5bGFuZEJ1
ZmZlcihlZ2xEaXNwbGF5LCBtX3Jlc291cmNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKworICAg
IHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZh
Y2U6OlN1cmZhY2UoKQorICAgIDogbV9pbWFnZShFR0xfTk9fSU1BR0VfS0hSKQoreworICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtX3RleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKK30KKworV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6
On5TdXJmYWNlKCkKK3sKKyAgICAvLyBEZXN0cm95IHBlbmRpbmcgZnJhbWUgY2FsbGJhY2tzLgor
ICAgIGF1dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChh
dXRvKiByZXNvdXJjZSA6IGxpc3QpCisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3Vy
Y2UpOworCisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX2J1ZmZlci0+dW51c2UoKTsKKwor
ICAgIGlmIChtX2ltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpCisgICAgICAgIGVnbERlc3Ryb3lJ
bWFnZShQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIG1faW1h
Z2UpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKK30KKwordm9pZCBX
YXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZTo6bWFrZVBlbmRpbmdCdWZmZXJDdXJyZW50KCkKK3sK
KyAgICBpZiAobV9wZW5kaW5nQnVmZmVyID09IG1fYnVmZmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyLT51bnVzZSgpOworCisgICAgaWYg
KG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyLT51c2UoKTsKKworICAg
IG1fYnVmZmVyID0gbV9wZW5kaW5nQnVmZmVyOworfQorCit2b2lkIFdheWxhbmRDb21wb3NpdG9y
OjpTdXJmYWNlOjphdHRhY2hCdWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKiBidWZmZXIpCit7Cisg
ICAgaWYgKG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wZW5kaW5nQnVmZmVyID0gbnVsbHB0
cjsKKworICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgYXV0byogY29tcG9zaXRvckJ1ZmZlciA9
IFdheWxhbmRDb21wb3NpdG9yOjpCdWZmZXI6OmdldE9yQ3JlYXRlKGJ1ZmZlcik7CisgICAgICAg
IG1fcGVuZGluZ0J1ZmZlciA9IGNvbXBvc2l0b3JCdWZmZXItPmNyZWF0ZVdlYWtQdHIoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2U6OnJlcXVlc3RGcmFtZShz
dHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIHdsX3Jlc291cmNlX3NldF9pbXBs
ZW1lbnRhdGlvbihyZXNvdXJjZSwgbnVsbHB0ciwgdGhpcywgW10oc3RydWN0IHdsX3Jlc291cmNl
KiByZXNvdXJjZSkgeworICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2F5bGFu
ZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNl
KSk7CisgICAgICAgIGlmIChzaXplX3QgaXRlbSA9IHN1cmZhY2UtPm1fZnJhbWVDYWxsYmFja0xp
c3QuZmluZChyZXNvdXJjZSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBzdXJmYWNlLT5tX2Zy
YW1lQ2FsbGJhY2tMaXN0LnJlbW92ZShpdGVtKTsKKyAgICB9KTsKKyAgICBtX2ZyYW1lQ2FsbGJh
Y2tMaXN0LmFwcGVuZChyZXNvdXJjZSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OlN1
cmZhY2U6OnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQmIHRleHR1cmUsIEludFNp
emUmIHRleHR1cmVTaXplKQoreworICAgIGlmIChtX2ltYWdlID09IEVHTF9OT19JTUFHRV9LSFIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbV90ZXh0dXJlKTsKKyAgICBlZ2xJbWFnZVRhcmdldFRleHR1cmUyRChHTF9URVhUVVJFXzJE
LCBtX2ltYWdlKTsKKworICAgIHRleHR1cmUgPSBtX3RleHR1cmU7CisgICAgdGV4dHVyZVNpemUg
PSBtX2J1ZmZlci0+c2l6ZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlOjpjb21taXQoKQoreworICAgIEVHTERpc3BsYXkgZWdsRGlzcGxh
eSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKyAgICBp
ZiAobV9pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAgICBlZ2xEZXN0cm95SW1hZ2Uo
ZWdsRGlzcGxheSwgbV9pbWFnZSk7CisgICAgbV9pbWFnZSA9IG1fcGVuZGluZ0J1ZmZlci0+Y3Jl
YXRlSW1hZ2UoKTsKKyAgICBpZiAobV9pbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtYWtlUGVuZGluZ0J1ZmZlckN1cnJlbnQoKTsKKyAgICBp
ZiAobV93ZWJQYWdlKQorICAgICAgICBtX3dlYlBhZ2UtPnNldFZpZXdOZWVkc0Rpc3BsYXkoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBtX3dlYlBhZ2UtPnZpZXdTaXplKCkpKTsKKworICAgIGF1
dG8gbGlzdCA9IFdURk1vdmUobV9mcmFtZUNhbGxiYWNrTGlzdCk7CisgICAgZm9yIChhdXRvKiBy
ZXNvdXJjZSA6IGxpc3QpIHsKKyAgICAgICAgd2xfY2FsbGJhY2tfc2VuZF9kb25lKHJlc291cmNl
LCAwKTsKKyAgICAgICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNvdXJjZSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc3VyZmFjZV9pbnRl
cmZhY2Ugc3VyZmFjZUludGVyZmFjZSA9IHsKKyAgICAvLyBkZXN0cm95Q2FsbGJhY2sKKyAgICBb
XShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSkKKyAgICB7
CisgICAgICAgIHdsX3Jlc291cmNlX2Rlc3Ryb3kocmVzb3VyY2UpOworICAgIH0sCisgICAgLy8g
YXR0YWNoQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50KiBjbGllbnQsIHN0cnVjdCB3
bF9yZXNvdXJjZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogYnVmZmVyLCBpbnQzMl90
IHN4LCBpbnQzMl90IHN5KQorICAgIHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19j
YXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0
YShyZXNvdXJjZSkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgRUdMaW50IGZvcm1hdDsKKyAgICAgICAgaWYgKCFlZ2xRdWVyeVdheWxhbmRC
dWZmZXIoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBidWZm
ZXIsIEVHTF9URVhUVVJFX0ZPUk1BVCwgJmZvcm1hdCkKKyAgICAgICAgICAgIHx8IChmb3JtYXQg
IT0gRUdMX1RFWFRVUkVfUkdCICYmIGZvcm1hdCAhPSBFR0xfVEVYVFVSRV9SR0JBKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBzdXJmYWNlLT5hdHRhY2hCdWZmZXIoYnVmZmVyKTsK
KyAgICB9LAorICAgIC8vIGRhbWFnZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCos
IHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QsIGludDMyX3QsIGludDMyX3QsIGludDMyX3Qp
IHsgfSwKKyAgICAvLyBmcmFtZUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCogY2xp
ZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCB1aW50MzJfdCBpZCkKKyAgICB7Cisg
ICAgICAgIGF1dG8qIHN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZSo+KHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgaWYg
KCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdHJ1Y3Qgd2xf
cmVzb3VyY2UqIGNhbGxiYWNrUmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAm
d2xfY2FsbGJhY2tfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAgICAgICBzdXJmYWNlLT5yZXF1
ZXN0RnJhbWUoY2FsbGJhY2tSZXNvdXJjZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHds
X2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgIH0sCisgICAgLy8gc2V0T3BhcXVl
UmVnaW9uQ2FsbGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291
cmNlKiwgc3RydWN0IHdsX3Jlc291cmNlKikgeyB9LAorICAgIC8vIHNldElucHV0UmVnaW9uQ2Fs
bGJhY2sKKyAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50Kiwgc3RydWN0IHdsX3Jlc291cmNlKiwgc3Ry
dWN0IHdsX3Jlc291cmNlKikgeyB9LAorICAgIC8vIGNvbW1pdENhbGxiYWNrCisgICAgW10oc3Ry
dWN0IHdsX2NsaWVudCogY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlKQorICAg
IHsKKyAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9y
OjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOworICAgICAg
ICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN1cmZh
Y2UtPmNvbW1pdCgpKQorICAgICAgICAgICAgd2xfZGlzcGxheV9mbHVzaF9jbGllbnRzKHdsX2Ns
aWVudF9nZXRfZGlzcGxheShjbGllbnQpKTsKKyAgICB9LAorICAgIC8vIHNldEJ1ZmZlclRyYW5z
Zm9ybUNhbGxiYWNrCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJj
ZSosIGludDMyX3QpIHsgfSwKKyAgICAvLyBzZXRCdWZmZXJTY2FsZUNhbGxiYWNrCisgICAgW10o
c3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIGludDMyX3QpIHsgfQorfTsK
Kworc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jb21wb3NpdG9yX2ludGVyZmFjZSBjb21wb3NpdG9y
SW50ZXJmYWNlID0geworICAgIC8vIGNyZWF0ZVN1cmZhY2VDYWxsYmFjaworICAgIFtdKHN0cnVj
dCB3bF9jbGllbnQqIGNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSwgdWludDMy
X3QgaWQpCisgICAgeworICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiBzdXJmYWNlUmVz
b3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfc3VyZmFjZV9pbnRlcmZhY2Us
IDEsIGlkKSkgeworICAgICAgICAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHN1
cmZhY2VSZXNvdXJjZSwgJnN1cmZhY2VJbnRlcmZhY2UsIG5ldyBXYXlsYW5kQ29tcG9zaXRvcjo6
U3VyZmFjZSgpLAorICAgICAgICAgICAgICAgIFtdKHN0cnVjdCB3bF9yZXNvdXJjZSogcmVzb3Vy
Y2UpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdh
eWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNv
dXJjZSkpOworICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3VyZmFjZTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19t
ZW1vcnkoY2xpZW50KTsKKyAgICB9LAorICAgIC8vIGNyZWF0ZVJlZ2lvbkNhbGxiYWNrCisgICAg
W10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSosIHVpbnQzMl90KSB7IH0K
K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2Via2l0Z3RrX2ludGVyZmFjZSB3ZWJraXRn
dGtJbnRlcmZhY2UgPSB7CisgICAgLy8gYmluZFN1cmZhY2VUb1BhZ2VDYWxsYmFjaworICAgIFtd
KHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIHN1cmZhY2VSZXNvdXJjZSwgdWludDMyX3QgcGFnZUlEKQorICAgIHsKKyAg
ICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpTdXJm
YWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJmYWNlUmVzb3VyY2UpKTsKKyAgICAg
ICAgaWYgKCFzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8qIGNv
bXBvc2l0b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dl
dF91c2VyX2RhdGEocmVzb3VyY2UpKTsKKyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VU
b1dlYlBhZ2Uoc3VyZmFjZSwgcGFnZUlEKTsKKyAgICB9Cit9OworCitib29sIFdheWxhbmRDb21w
b3NpdG9yOjppbml0aWFsaXplRUdMKCkKK3sKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkuZWdsQ2hlY2tWZXJzaW9uKDEsIDUpKSB7CisgICAgICAgIGVnbENyZWF0ZUlt
YWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0M+KGVnbEdldFBy
b2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZSIpKTsKKyAgICAgICAgZWdsRGVzdHJveUltYWdlID0g
cmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRk
cmVzcygiZWdsRGVzdHJveUltYWdlIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGNo
YXIqIGV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS5lZ2xEaXNwbGF5KCksIEVHTF9FWFRFTlNJT05TKTsKKyAgICAgICAgaWYgKHN0cnN0
cihleHRlbnNpb25zLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikpIHsKKyAgICAgICAgICAgIGVnbENy
ZWF0ZUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0M+KGVn
bEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIpKTsKKyAgICAgICAgICAgIGVnbERl
c3Ryb3lJbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQz4o
ZWdsR2V0UHJvY0FkZHJlc3MoImVnbERlc3Ryb3lJbWFnZUtIUiIpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAoIWVnbENyZWF0ZUltYWdlIHx8ICFlZ2xEZXN0cm95SW1hZ2UpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBlZ2xDcmVhdGVJbWFn
ZSBhbmQgZWdsRGVzdHJveUltYWdlLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdM
SU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFn
ZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKKyAgICBpZiAoIWVnbEltYWdlVGFyZ2V0VGV4dHVyZTJE
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2F5bGFuZENvbXBvc2l0b3IgcmVxdWlyZXMgZ2xF
R0xJbWFnZVRhcmdldFRleHR1cmUuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBlZ2xRdWVyeVdheWxhbmRCdWZmZXIgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFFVRVJZ
V0FZTEFOREJVRkZFUldMPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlXYXlsYW5kQnVmZmVy
V0wiKSk7CisgICAgaWYgKCFlZ2xRdWVyeVdheWxhbmRCdWZmZXIpIHsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJXYXlsYW5kQ29tcG9zaXRvciByZXF1aXJlcyBlZ2xRdWVyeVdheWxhbmRCdWZmZXIu
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlZ2xCaW5kV2F5bGFuZERp
c3BsYXkgPSByZWludGVycHJldF9jYXN0PFBGTkVHTEJJTkRXQVlMQU5ERElTUExBWVdMPihlZ2xH
ZXRQcm9jQWRkcmVzcygiZWdsQmluZFdheWxhbmREaXNwbGF5V0wiKSk7CisgICAgZWdsVW5iaW5k
V2F5bGFuZERpc3BsYXkgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFVOQklORFdBWUxBTkRESVNQ
TEFZV0w+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMIikpOwor
ICAgIGlmICghZWdsQmluZFdheWxhbmREaXNwbGF5IHx8ICFlZ2xVbmJpbmRXYXlsYW5kRGlzcGxh
eSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIldheWxhbmRDb21wb3NpdG9yIHJlcXVpcmVzIGVn
bEJpbmRXYXlsYW5kRGlzcGxheVdMIGFuZCBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMLiIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9lZ2xDb250ZXh0ID0gR0xDb250
ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCk7CisgICAgaWYgKCFtX2VnbENvbnRleHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9lZ2xDb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBHU291cmNlIHNvdXJjZTsKKyAgICBncG9pbnRlciBm
ZFRhZzsKKyAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogZGlzcGxheTsKK30gV2F5bGFuZExvb3BTb3Vy
Y2U7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB3YXlsYW5kTG9vcFNvdXJjZUNvbmRpdGlvbiA9
IEdfSU9fSU4gfCBHX0lPX0hVUCB8IEdfSU9fRVJSOworCitzdGF0aWMgR1NvdXJjZUZ1bmNzIHdh
eWxhbmRMb29wU291cmNlRnVuY3Rpb25zID0geworICAgIC8vIHByZXBhcmUKKyAgICBbXShHU291
cmNlICpzb3VyY2UsIGludCAqdGltZW91dCkgLT4gZ2Jvb2xlYW4KKyAgICB7CisgICAgICAgICp0
aW1lb3V0ID0gLTE7CisgICAgICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8V2F5bGFuZExvb3BTb3VyY2UqPihzb3VyY2UpOworICAgICAgICB3bF9kaXNwbGF5X2ZsdXNo
X2NsaWVudHMod2xMb29wU291cmNlLT5kaXNwbGF5KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOwor
ICAgIH0sCisgICAgbnVsbHB0ciwgLy8gY2hlY2sKKyAgICAvLyBkaXNwYXRjaAorICAgIFtdKEdT
b3VyY2UqIHNvdXJjZSwgR1NvdXJjZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBnYm9vbGVhbgorICAgIHsKKyAgICAgICAgYXV0byogd2xMb29wU291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxXYXlsYW5kTG9vcFNvdXJjZSo+KHNvdXJjZSk7CisgICAgICAgIHVuc2lnbmVkIGV2
ZW50cyA9IGdfc291cmNlX3F1ZXJ5X3VuaXhfZmQoc291cmNlLCB3bExvb3BTb3VyY2UtPmZkVGFn
KSAmIHdheWxhbmRMb29wU291cmNlQ29uZGl0aW9uOworICAgICAgICBpZiAoZXZlbnRzICYgR19J
T19IVVAgfHwgZXZlbnRzICYgR19JT19FUlIpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
V2F5bGFuZCBEaXNwbGF5IEV2ZW50IFNvdXJjZTogbG9zdCBjb25uZWN0aW9uIHRvIG5lc3RlZCBX
YXlsYW5kIGNvbXBvc2l0b3IiKTsKKyAgICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnRzICYgR19JT19JTikKKyAgICAgICAgICAg
IHdsX2V2ZW50X2xvb3BfZGlzcGF0Y2god2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcCh3bExvb3BT
b3VyY2UtPmRpc3BsYXkpLCAwKTsKKyAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOwor
ICAgIH0sCisgICAgbnVsbHB0ciwgLy8gZmluYWxpemUKKyAgICBudWxscHRyLCAvLyBjbG9zdXJl
X2NhbGxiYWNrCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9tYXJzaGFsbAorfTsKKworc3RhdGlj
IEdSZWZQdHI8R1NvdXJjZT4gY3JlYXRlV2F5bGFuZExvb3BTb3VyY2Uoc3RydWN0IHdsX2Rpc3Bs
YXkqIGRpc3BsYXkpCit7CisgICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYo
Z19zb3VyY2VfbmV3KCZ3YXlsYW5kTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKFdheWxhbmRM
b29wU291cmNlKSkpOworICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIk5lc3Rl
ZCBXYXlsYW5kIGNvbXBvc2l0b3IgZGlzcGxheSBldmVudCBzb3VyY2UiKTsKKyAgICBnX3NvdXJj
ZV9zZXRfcHJpb3JpdHkoc291cmNlLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFVTFQgKyAxKTsKKwor
ICAgIGF1dG8qIHdsTG9vcFNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2F5bGFuZExvb3BTb3Vy
Y2UqPihzb3VyY2UuZ2V0KCkpOworICAgIHdsTG9vcFNvdXJjZS0+ZGlzcGxheSA9IGRpc3BsYXk7
CisgICAgd2xMb29wU291cmNlLT5mZFRhZyA9IGdfc291cmNlX2FkZF91bml4X2ZkKHNvdXJjZS5n
ZXQoKSwgd2xfZXZlbnRfbG9vcF9nZXRfZmQod2xfZGlzcGxheV9nZXRfZXZlbnRfbG9vcChkaXNw
bGF5KSksIHN0YXRpY19jYXN0PEdJT0NvbmRpdGlvbj4od2F5bGFuZExvb3BTb3VyY2VDb25kaXRp
b24pKTsKKyAgICBnX3NvdXJjZV9hdHRhY2goc291cmNlLmdldCgpLCBudWxscHRyKTsKKworICAg
IHJldHVybiBzb3VyY2U7Cit9CisKK1dheWxhbmRDb21wb3NpdG9yOjpXYXlsYW5kQ29tcG9zaXRv
cigpCit7CisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX2Rpc3BsYXk+IGRpc3BsYXkod2xfZGlz
cGxheV9jcmVhdGUoKSk7CisgICAgaWYgKCFkaXNwbGF5KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBub3QgY3JlYXRlIGRpc3BsYXkgb2Jq
ZWN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUg
PSAid2Via2l0Z3RrLXdheWxhbmQtY29tcG9zaXRvci0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpOworICAgIGlmICh3bF9kaXNwbGF5X2FkZF9zb2NrZXQoZGlzcGxheS5nZXQoKSwgZGlz
cGxheU5hbWUudXRmOCgpLmRhdGEoKSkgPT0gLTEpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJO
ZXN0ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBjcmVhdGUgZGlzcGxheSBzb2NrZXQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9n
bG9iYWw+IGNvbXBvc2l0b3JHbG9iYWwod2xfZ2xvYmFsX2NyZWF0ZShkaXNwbGF5LmdldCgpLCAm
d2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLnZlcnNpb24s
IHRoaXMsCisgICAgICAgIFtdKHN0cnVjdCB3bF9jbGllbnQqIGNsaWVudCwgdm9pZCogZGF0YSwg
dWludDMyX3QgdmVyc2lvbiwgdWludDMyX3QgaWQpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIHJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX2Nv
bXBvc2l0b3JfaW50ZXJmYWNlLCBzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KHZlcnNpb24pLCAz
KSwgaWQpKQorICAgICAgICAgICAgICAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihy
ZXNvdXJjZSwgJmNvbXBvc2l0b3JJbnRlcmZhY2UsIHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3Np
dG9yKj4oZGF0YSksIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHdsX2NsaWVudF9wb3N0X25vX21lbW9yeShjbGllbnQpOworICAgICAgICB9KSk7CisgICAgaWYg
KCFjb21wb3NpdG9yR2xvYmFsKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxh
bmQgY29tcG9zaXRvciBjb3VsZCBub3QgcmVnaXN0ZXIgY29tcG9zaXRvciBnbG9iYWwiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+
IHdlYmtpdGd0a0dsb2JhbCh3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXkuZ2V0KCksICZ3bF93ZWJr
aXRndGtfaW50ZXJmYWNlLCAxLCB0aGlzLAorICAgICAgICBbXShzdHJ1Y3Qgd2xfY2xpZW50KiBj
bGllbnQsIHZvaWQqIGRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90IGlkKSB7CisgICAg
ICAgICAgICBpZiAoc3RydWN0IHdsX3Jlc291cmNlKiByZXNvdXJjZSA9IHdsX3Jlc291cmNlX2Ny
ZWF0ZShjbGllbnQsICZ3bF93ZWJraXRndGtfaW50ZXJmYWNlLCAxLCBpZCkpCisgICAgICAgICAg
ICAgICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKHJlc291cmNlLCAmd2Via2l0Z3Rr
SW50ZXJmYWNlLCBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KGRhdGEpLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3bF9jbGllbnRfcG9zdF9ub19t
ZW1vcnkoY2xpZW50KTsKKyAgICAgICAgfSkpOworICAgIGlmICghd2Via2l0Z3RrR2xvYmFsKSB7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBu
b3QgcmVnaXN0ZXIgd2Via2l0Z3RrIGdsb2JhbCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFpbml0aWFsaXplRUdMKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0
ZWQgV2F5bGFuZCBjb21wb3NpdG9yIGNvdWxkIG5vdCBpbml0aWFsaXplIEVHTCIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFlZ2xCaW5kV2F5bGFuZERpc3BsYXkoUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBkaXNwbGF5LmdldCgpKSkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5kIGNvbXBvc2l0b3IgY291bGQg
bm90IGJpbmQgbmVzdGVkIGRpc3BsYXkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fZGlzcGxheU5hbWUgPSBXVEZNb3ZlKGRpc3BsYXlOYW1lKTsKKyAgICBtX2Rpc3BsYXkgPSBX
VEZNb3ZlKGRpc3BsYXkpOworICAgIG1fY29tcG9zaXRvckdsb2JhbCA9IFdURk1vdmUoY29tcG9z
aXRvckdsb2JhbCk7CisgICAgbV93ZWJraXRndGtHbG9iYWwgPSBXVEZNb3ZlKHdlYmtpdGd0a0ds
b2JhbCk7CisgICAgbV9ldmVudFNvdXJjZSA9IGNyZWF0ZVdheWxhbmRMb29wU291cmNlKG1fZGlz
cGxheS5nZXQoKSk7Cit9CisKK2Jvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmdldFRleHR1cmUoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlLCB1bnNpZ25lZCYgdGV4dHVyZSwgSW50U2l6ZSYgdGV4dHVyZVNp
emUpCit7CisgICAgaWYgKGF1dG8qIHN1cmZhY2UgPSBtX3BhZ2VNYXAuZ2V0KCZ3ZWJQYWdlKSkK
KyAgICAgICAgcmV0dXJuIHN1cmZhY2UtPnByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodGV4dHVy
ZSwgdGV4dHVyZVNpemUpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXYXlsYW5kQ29t
cG9zaXRvcjo6YmluZFN1cmZhY2VUb1dlYlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2Uq
IHN1cmZhY2UsIHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2Ug
PSBudWxscHRyOworICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkpIHsKKyAg
ICAgICAgaWYgKHBhZ2UtPnBhZ2VJRCgpID09IHBhZ2VJRCkgeworICAgICAgICAgICAgd2ViUGFn
ZSA9IHBhZ2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAo
IXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHN1cmZhY2UtPnNldFdlYlBhZ2Uod2Vi
UGFnZSk7CisgICAgbV9wYWdlTWFwLnNldCh3ZWJQYWdlLCBzdXJmYWNlKTsKK30KKwordm9pZCBX
YXlsYW5kQ29tcG9zaXRvcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkK
K3sKKyAgICBtX3BhZ2VNYXAuYWRkKCZ3ZWJQYWdlLCBudWxscHRyKTsKK30KKwordm9pZCBXYXls
YW5kQ29tcG9zaXRvcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQor
eworICAgIGlmIChhdXRvKiBzdXJmYWNlID0gbV9wYWdlTWFwLnRha2UoJndlYlBhZ2UpKQorICAg
ICAgICBzdXJmYWNlLT5zZXRXZWJQYWdlKG51bGxwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGQyOGFhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMCwwICsxLDEyOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dsVW5pcXVl
UHRyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiB2b2lkICpFR0xJbWFnZUtIUjsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgR0xDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXYXlsYW5kQ29tcG9zaXRvciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2F5bGFuZENvbXBvc2l0b3IpOworICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxXYXlsYW5kQ29tcG9zaXRvcj47CitwdWJsaWM6CisgICAgc3RhdGljIFdh
eWxhbmRDb21wb3NpdG9yJiBzaW5nbGV0b24oKTsKKworICAgIGNsYXNzIEJ1ZmZlciB7CisgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ1ZmZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIEJ1ZmZlciogZ2V0T3JDcmVhdGUoc3RydWN0
IHdsX3Jlc291cmNlKik7CisgICAgICAgIH5CdWZmZXIoKTsKKworICAgICAgICB2b2lkIHVzZSgp
OworICAgICAgICB2b2lkIHVudXNlKCk7CisKKyAgICAgICAgRUdMSW1hZ2VLSFIgY3JlYXRlSW1h
Z2UoKSBjb25zdDsKKyAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CisKKyAg
ICAgICAgV2Vha1B0cjxCdWZmZXI+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJG
YWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnVmZmVy
KHN0cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95TGlzdGVu
ZXJDYWxsYmFjayhzdHJ1Y3Qgd2xfbGlzdGVuZXIqLCB2b2lkKik7CisKKyAgICAgICAgc3RydWN0
IHdsX3Jlc291cmNlKiBtX3Jlc291cmNlIHsgbnVsbHB0ciB9OworICAgICAgICBzdHJ1Y3Qgd2xf
bGlzdGVuZXIgbV9kZXN0cm95TGlzdGVuZXI7CisgICAgICAgIHVpbnQzMl90IG1fYnVzeUNvdW50
IHsgMCB9OworICAgICAgICBXZWFrUHRyRmFjdG9yeTxCdWZmZXI+IG1fd2Vha1B0ckZhY3Rvcnk7
CisgICAgfTsKKworICAgIGNsYXNzIFN1cmZhY2UgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAg
ICAgICBTdXJmYWNlKCk7CisgICAgICAgIH5TdXJmYWNlKCk7CisKKyAgICAgICAgdm9pZCBhdHRh
Y2hCdWZmZXIoc3RydWN0IHdsX3Jlc291cmNlKik7CisgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1l
KHN0cnVjdCB3bF9yZXNvdXJjZSopOworICAgICAgICBib29sIGNvbW1pdCgpOworCisgICAgICAg
IHZvaWQgc2V0V2ViUGFnZShXZWJQYWdlUHJveHkqIHdlYlBhZ2UpIHsgbV93ZWJQYWdlID0gd2Vi
UGFnZTsgfQorICAgICAgICBib29sIHByZXBhcmVUZXh0dXJlRm9yUGFpbnRpbmcodW5zaWduZWQm
LCBXZWJDb3JlOjpJbnRTaXplJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIG1ha2VQ
ZW5kaW5nQnVmZmVyQ3VycmVudCgpOworCisgICAgICAgIFdlYWtQdHI8QnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICAgICAgV2Vha1B0cjxCdWZmZXI+IG1fcGVuZGluZ0J1ZmZlcjsKKyAgICAgICAgdW5z
aWduZWQgbV90ZXh0dXJlOworICAgICAgICBFR0xJbWFnZUtIUiBtX2ltYWdlOworICAgICAgICBW
ZWN0b3I8d2xfcmVzb3VyY2UqPiBtX2ZyYW1lQ2FsbGJhY2tMaXN0OworICAgICAgICBXZWJQYWdl
UHJveHkqIG1fd2ViUGFnZSB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAgYm9vbCBpc1J1bm5p
bmcoKSBjb25zdCB7IHJldHVybiAhIW1fZGlzcGxheTsgfQorICAgIFN0cmluZyBkaXNwbGF5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KKworICAgIHZvaWQgYmluZFN1cmZh
Y2VUb1dlYlBhZ2UoU3VyZmFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQ
YWdlUHJveHkmKTsKKworICAgIGJvb2wgZ2V0VGV4dHVyZShXZWJQYWdlUHJveHkmLCB1bnNpZ25l
ZCYsIFdlYkNvcmU6OkludFNpemUmKTsKKworcHJpdmF0ZToKKyAgICBXYXlsYW5kQ29tcG9zaXRv
cigpOworCisgICAgYm9vbCBpbml0aWFsaXplRUdMKCk7CisKKyAgICBTdHJpbmcgbV9kaXNwbGF5
TmFtZTsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZGlzcGxheT4gbV9kaXNw
bGF5OworICAgIFdlYkNvcmU6OldsVW5pcXVlUHRyPHN0cnVjdCB3bF9nbG9iYWw+IG1fY29tcG9z
aXRvckdsb2JhbDsKKyAgICBXZWJDb3JlOjpXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfZ2xvYmFsPiBt
X3dlYmtpdGd0a0dsb2JhbDsKKyAgICBHUmVmUHRyPEdTb3VyY2U+IG1fZXZlbnRTb3VyY2U7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9lZ2xDb250ZXh0OworICAg
IEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgU3VyZmFjZSo+IG1fcGFnZU1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKaW5kZXgg
YWUxNGU5ZS4uM2YwNTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKQEAgLTI3LDMxICsyNyw1MiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKKyNpbmNsdWRlICJXYXlsYW5k
Q29tcG9zaXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogCisjaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4K
KyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKCkKIHsKLSNp
ZiBQTEFURk9STShXQVlMQU5EKQotICAgIGlmIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKS50eXBlKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpX
YXlsYW5kKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyB1bmRl
ciBXYXlsYW5kIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODAzCi0gICAgICAgIHNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1
ZSk7Ci0jZW5kaWYKICNpZiAhRU5BQkxFKE9QRU5HTCkKICAgICBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZChmYWxzZSk7CiAjZWxzZQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKKyAgICBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyNlbHNlCiAg
ICAgaWYgKGdldGVudigiV0VCS0lUX0ZPUkNFX0NPTVBPU0lUSU5HX01PREUiKSkKICAgICAgICAg
c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0gICAgaWYgKGdldGVudigiV0VCS0lUX0RJ
U0FCTEVfQ09NUE9TSVRJTkdfTU9ERSIpKQorI2VuZGlmCisKKyAgICBpZiAoZ2V0ZW52KCJXRUJL
SVRfRElTQUJMRV9DT01QT1NJVElOR19NT0RFIikpIHsKICAgICAgICAgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYg
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkg
eworICAgICAgICBhdXRvJiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSk7CisgICAgICAgIE9wdGlvbmFsPGludD4g
ZGFtYWdlQmFzZTsKKyAgICAgICAgaWYgKCFkaXNwbGF5LnN1cHBvcnRzWENvbXBvc2l0ZSgpIHx8
ICFkaXNwbGF5LnN1cHBvcnRzWERhbWFnZShkYW1hZ2VCYXNlKSkKKyAgICAgICAgICAgIHNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICB9CiAjZW5kaWYKKworI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyAgICAgICAg
aWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgICAg
ICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgfQorI2Vu
ZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTkdMKQogfQogCiB2b2lkIFdlYlByZWZlcmVuY2Vz
OjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VO
b3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmll
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMzNmY2MuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhEYW1hZ2VOb3RpZmllci5oIgotCi0jaWYgUExB
VEZPUk0oWDExKQotCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KLSNp
bmNsdWRlIDxYMTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4K
LSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBPcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNl
OwotCi1YRGFtYWdlTm90aWZpZXImIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkKLXsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5vdGlmaWVyPiBub3RpZmllcjsKLSAgICBy
ZXR1cm4gbm90aWZpZXI7Ci19Ci0KLVhEYW1hZ2VOb3RpZmllcjo6WERhbWFnZU5vdGlmaWVyKCkK
LXsKLSAgICBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKS5zdXBwb3J0c1hEYW1hZ2Uoc19kYW1hZ2VFdmVudEJhc2UpOwotfQotCi12
b2lkIFhEYW1hZ2VOb3RpZmllcjo6YWRkKERhbWFnZSBkYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiYmIG5vdGlmeUZ1bmN0aW9uKQotewotICAgIGlmICghc19kYW1hZ2VFdmVudEJhc2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCi0g
ICAgICAgIGdka193aW5kb3dfYWRkX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9jYXN0PEdk
a0ZpbHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLSAgICBtX25vdGlmeUZ1
bmN0aW9ucy5hZGQoZGFtYWdlLCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7Ci19Ci0KLXZvaWQg
WERhbWFnZU5vdGlmaWVyOjpyZW1vdmUoRGFtYWdlIGRhbWFnZSkKLXsKLSAgICBpZiAoIXNfZGFt
YWdlRXZlbnRCYXNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX25vdGlmeUZ1bmN0aW9ucy5y
ZW1vdmUoZGFtYWdlKTsKLSAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0eSgpKQotICAg
ICAgICBnZGtfd2luZG93X3JlbW92ZV9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxH
ZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Ci19Ci0KLUdka0ZpbHRl
clJldHVybiBYRGFtYWdlTm90aWZpZXI6OmZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZlbnQqIGV2
ZW50LCBHZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciogbm90aWZpZXIpCi17Ci0gICAgQVNTRVJU
KHNfZGFtYWdlRXZlbnRCYXNlKTsKLSAgICBhdXRvKiB4RXZlbnQgPSBzdGF0aWNfY2FzdDxYRXZl
bnQqPihldmVudCk7Ci0gICAgaWYgKHhFdmVudC0+dHlwZSAhPSBzX2RhbWFnZUV2ZW50QmFzZS52
YWx1ZSgpICsgWERhbWFnZU5vdGlmeSkKLSAgICAgICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElO
VUU7Ci0KLSAgICBhdXRvKiBkYW1hZ2VFdmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8WERhbWFnZU5v
dGlmeUV2ZW50Kj4oeEV2ZW50KTsKLSAgICBpZiAobm90aWZpZXItPm5vdGlmeShkYW1hZ2VFdmVu
dC0+ZGFtYWdlKSkgewotICAgICAgICBYRGFtYWdlU3VidHJhY3QoeEV2ZW50LT54YW55LmRpc3Bs
YXksIGRhbWFnZUV2ZW50LT5kYW1hZ2UsIE5vbmUsIE5vbmUpOwotICAgICAgICByZXR1cm4gR0RL
X0ZJTFRFUl9SRU1PVkU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElOVUU7
Ci19Ci0KLWJvb2wgWERhbWFnZU5vdGlmaWVyOjpub3RpZnkoRGFtYWdlIGRhbWFnZSkgY29uc3QK
LXsKLSAgICBpZiAoY29uc3QgYXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9u
cy5nZXQoZGFtYWdlKSkgewotICAgICAgICBub3RpZnlGdW5jdGlvbigpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggOTM4M2Q4Ny4uOGNlNjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApA
QCAtMzAsMTQgKzMwLDEyIEBACiAjaW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKworI2lu
Y2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+
CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSNpbmNsdWRlICJSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDI2ICs1MiwyMyBAQCBUaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6flRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
KCkKIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdChXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KHdlYlBhZ2UpCiAgICAgLCBtX2NvbXBvc2l0b3JDbGllbnQoKnRoaXMpCi0jaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgLCBtX3JlZGlyZWN0ZWRXaW5kb3co
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZSh3ZWJQYWdlKSkKLSAgICAsIG1fY29t
cG9zaXRvcihUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50LCBt
X3JlZGlyZWN0ZWRXaW5kb3cgPyBtX3JlZGlyZWN0ZWRXaW5kb3ctPndpbmRvdygpIDogMCkpCi0j
ZWxzZQotICAgICwgbV9jb21wb3NpdG9yKFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2Nv
bXBvc2l0b3JDbGllbnQpKQotI2VuZGlmCisgICAgLCBtX3N1cmZhY2UoQWNjZWxlcmF0ZWRTdXJm
YWNlOjpjcmVhdGUod2ViUGFnZSkpCiB7Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCi0gICAgaWYgKG1fcmVkaXJlY3RlZFdpbmRvdykKLSAgICAgICAgbV9sYXllclRyZWVD
b250ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7Ci0jZW5kaWYK
KyAgICBpZiAobV9zdXJmYWNlKSB7CisgICAgICAgIC8vIERvIG5vdCBkbyBmcmFtZSBzeW5jIHdo
ZW4gcmVuZGVyaW5nIG9mZnNjcmVlbiBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gZW5zdXJlIHRoYXQg
U3dhcEJ1ZmZlcnMgbmV2ZXIgYmxvY2tzLgorICAgICAgICAvLyBSZW5kZXJpbmcgdG8gdGhlIGFj
dHVhbCBzY3JlZW4gd2lsbCBoYXBwZW4gbGF0ZXIgYW55d2F5IHNpbmNlIHRoZSBVSSBwcm9jZXNz
IHNjaGVkdWxlcyBhIHJlZHJhdyBmb3IgZXZlcnkgdXBkYXRlLAorICAgICAgICAvLyB0aGUgY29t
cG9zaXRvciB3aWxsIHRha2UgY2FyZSBvZiBzeW5jaW5nIHRvIHZibGFuay4KKyAgICAgICAgbV9j
b21wb3NpdG9yID0gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoJm1fY29tcG9zaXRvckNsaWVu
dCwgbV9zdXJmYWNlLT53aW5kb3coKSwgVGhyZWFkZWRDb21wb3NpdG9yOjpTaG91bGREb0ZyYW1l
U3luYzo6Tm8pOworICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJm
YWNlLT5zdXJmYWNlSUQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jb21wb3NpdG9yID0gVGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoJm1fY29tcG9zaXRvckNsaWVudCk7CiB9CiAKIHZvaWQg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKQogewogICAgIG1f
Y29tcG9zaXRvci0+aW52YWxpZGF0ZSgpOwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
aW52YWxpZGF0ZSgpOwotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAg
IG1fcmVkaXJlY3RlZFdpbmRvdyA9IG51bGxwdHI7Ci0jZW5kaWYKKyAgICBtX3N1cmZhY2UgPSBu
dWxscHRyOwogfQogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3Jj
ZVJlcGFpbnQoKQpAQCAtOTUsMTIgKzkwLDggQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKIAog
dm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
LSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAgICAgIG1fcmVkaXJlY3RlZFdpbmRv
dy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOwotICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQu
Y29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKLSAgICB9Ci0jZW5kaWYK
KyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkp
KQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJm
YWNlSUQoKTsKIAogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgbV9jb21wb3NpdG9yLT5zZXREZXZpY2VTY2FsZUZhY3Rv
cihtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CkBAIC0xMTQsMTIgKzEwNSw5IEBAIHZv
aWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNw
YXJlbmN5Q2hhbmdlZCgpCiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAg
ICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKHNpemUpOwotICAgICAgICBtX2xheWVyVHJl
ZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKLSAgICB9
Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKHNpemUpKQor
ICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNl
SUQoKTsKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShzaXpl
KTsKICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZVZpZXdwb3J0U2l6ZShzaXplKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGE0MWExMTYuLjg5MGU3YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c7CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2U7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBmaW5hbCA6IHB1YmxpYyBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QgewpAQCAtMTA1LDkgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZSYpIG92ZXJyaWRlOwogCiAgICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7
Ci0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBtX3JlZGlyZWN0ZWRXaW5kb3c7Ci0jZW5k
aWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAg
ICAgUmVmUHRyPFRocmVhZGVkQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogICAgIGZsb2F0IG1f
bGFzdFNjYWxlRmFjdG9yIHsgMSB9OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fcHJldlNjcm9s
bFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhhOTg0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheS5oPgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlICJBY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kLmgiCisjZW5kaWYKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVgxMS5oIgorI2VuZGlmCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUo
V2ViUGFnZSYgd2ViUGFnZSkKK3sKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGlmIChQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpU
eXBlOjpXYXlsYW5kKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6
Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9
PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVk
U3VyZmFjZVgxMTo6Y3JlYXRlKHdlYlBhZ2UpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZTo6QWNjZWxlcmF0ZWRTdXJmYWNlKFdlYlBhZ2UmIHdl
YlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fc2l6ZSh3ZWJQYWdlLnNp
emUoKSkKK3sKKyAgICBtX3NpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkp
OworfQorCitib29sIEFjY2VsZXJhdGVkU3VyZmFjZTo6cmVzaXplKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKHNpemUpOworICAgIHNjYWxlZFNpemUuc2Nh
bGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIGlmIChzY2FsZWRTaXplID09
IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zaXplID0gc2NhbGVkU2l6
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1hEYW1hZ2VOb3RpZmllci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2UuaApz
aW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1hEYW1hZ2VOb3RpZmllci5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZS5oCmluZGV4IDkzMzRjYzIuLjE0MGJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRl
ZFN1cmZhY2UuaApAQCAtMjUsMzYgKzI1LDI4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExB
VEZPUk0oWDExKQotCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBYRGFtYWdlTm90aWZpZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFhEYW1hZ2VOb3RpZmllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+OwotcHVibGljOgotICAg
IHN0YXRpYyBYRGFtYWdlTm90aWZpZXImIHNpbmdsZXRvbigpOworY2xhc3MgV2ViUGFnZTsKIAot
ICAgIHZvaWQgYWRkKERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
cmVtb3ZlKERhbWFnZSk7CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBjcmVhdGUoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkU3VyZmFjZSgpID0g
ZGVmYXVsdDsKIAotcHJpdmF0ZToKLSAgICBYRGFtYWdlTm90aWZpZXIoKTsKKyAgICB2aXJ0dWFs
IHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gMDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKIAotICAgIHN0YXRpYyBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWERh
bWFnZUV2ZW50KEdka1hFdmVudCosIEdka0V2ZW50KiwgWERhbWFnZU5vdGlmaWVyKik7Ci0gICAg
Ym9vbCBub3RpZnkoRGFtYWdlKSBjb25zdDsKK3Byb3RlY3RlZDoKKyAgICBBY2NlbGVyYXRlZFN1
cmZhY2UoV2ViUGFnZSYpOwogCi0gICAgSGFzaE1hcDxEYW1hZ2UsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPj4gbV9ub3RpZnlGdW5jdGlvbnM7CisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIFdl
YkNvcmU6OkludFNpemUgbV9zaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmYwYjg3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNl
V2F5bGFuZC5oIgorCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIldlYktpdDJX
YXlsYW5kQ2xpZW50UHJvdG9jb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmg+CisjaW5jbHVkZSA8Y3N0cmluZz4K
KyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3Bs
YXlXYXlsYW5kIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXYXlsYW5kQ29tcG9zaXRvckRp
c3BsYXkpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgc3RydWN0IHdsX2Rpc3BsYXkq
IGRpc3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAo
IWRpc3BsYXkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZCBpbml0aWFsaXphdGlvbjogZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIFdheWxhbmQgZGlz
cGxheTogJXMiLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53YXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXlOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5PihuZXcgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KGRpc3BsYXkpKTsKKyAgICB9
CisKKyAgICB2b2lkIGJpbmRTdXJmYWNlVG9QYWdlKHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNl
LCBXZWJQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3dlYmtpdGd0aykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB3bF93ZWJraXRndGtfYmluZF9zdXJmYWNlX3RvX3Bh
Z2UocmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgd2xfd2Via2l0Z3RrKj4obV93ZWJraXRndGsuZ2V0
KCkpLCBzdXJmYWNlLCBwYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgd2xfZGlzcGxheV9yb3VuZHRy
aXAobV9kaXNwbGF5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5KHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5KQorICAgIHsKKyAgICAgICAgaW5pdGlh
bGl6ZShkaXNwbGF5KTsKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5OjpzZXRTaGFyZWREaXNwbGF5
Rm9yQ29tcG9zaXRpbmcoKnRoaXMpOworICAgIH0KKworICAgIHZvaWQgcmVnaXN0cnlHbG9iYWwo
Y29uc3QgY2hhciogaW50ZXJmYWNlLCB1aW50MzJfdCBuYW1lKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6cmVnaXN0cnlHbG9iYWwoaW50ZXJmYWNlLCBu
YW1lKTsKKyAgICAgICAgaWYgKCFzdGQ6OnN0cmNtcChpbnRlcmZhY2UsICJ3bF93ZWJraXRndGsi
KSkKKyAgICAgICAgICAgIG1fd2Via2l0Z3RrLnJlc2V0KHN0YXRpY19jYXN0PHN0cnVjdCB3bF9w
cm94eSo+KHdsX3JlZ2lzdHJ5X2JpbmQobV9yZWdpc3RyeS5nZXQoKSwgbmFtZSwgJndsX3dlYmtp
dGd0a19pbnRlcmZhY2UsIDEpKSk7CisgICAgfQorCisgICAgV2xVbmlxdWVQdHI8c3RydWN0IHds
X3Byb3h5PiBtX3dlYmtpdGd0azsKK307CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5PiYgd2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5KCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlz
cGxheT4+IHdheWxhbmREaXNwbGF5KFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRlKCkp
OworICAgIHJldHVybiB3YXlsYW5kRGlzcGxheTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQ+IEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OmNyZWF0ZShX
ZWJQYWdlJiB3ZWJQYWdlKQoreworICAgIHJldHVybiB3YXlsYW5kQ29tcG9zaXRvckRpc3BsYXko
KSA/IHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kPihuZXcgQWNjZWxl
cmF0ZWRTdXJmYWNlV2F5bGFuZCh3ZWJQYWdlKSkgOiBudWxscHRyOworfQorCitBY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kOjpBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kKFdlYlBhZ2UmIHdlYlBh
Z2UpCisgICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2ViUGFnZSkKKyAgICAsIG1fc3VyZmFjZSh3
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkoKS0+Y3JlYXRlU3VyZmFjZSgpKQorICAgICwgbV93aW5k
b3cod2xfZWdsX3dpbmRvd19jcmVhdGUobV9zdXJmYWNlLmdldCgpLCBzdGQ6Om1heCgxLCBtX3Np
emUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSkpKQoreworICAgIHdheWxh
bmRDb21wb3NpdG9yRGlzcGxheSgpLT5iaW5kU3VyZmFjZVRvUGFnZShtX3N1cmZhY2UuZ2V0KCks
IG1fd2ViUGFnZSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6On5BY2NlbGVyYXRl
ZFN1cmZhY2VXYXlsYW5kKCkKK3sKKyAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93aW5kb3cp
OworfQorCitib29sIEFjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQ6OnJlc2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmICghQWNjZWxlcmF0ZWRTdXJmYWNlOjpyZXNpemUoc2l6ZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2lu
ZG93LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwLCAwKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShX
QVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kMjUwMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2Uu
aCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9XbFVuaXF1ZVB0ci5o
PgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBBY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3Vy
ZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFu
ZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZD4gY3JlYXRlKFdlYlBhZ2UmKTsKKyAg
ICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpOworCisgICAgdWludDY0X3Qgd2luZG93KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV93aW5k
b3cpOyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV93ZWJQYWdlLnBhZ2VJRCgpOyB9CisgICAgYm9vbCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZVdheWxh
bmQoV2ViUGFnZSYpOworCisgICAgV2ViQ29yZTo6V2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZh
Y2U+IG1fc3VyZmFjZTsKKyAgICBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyogbV93aW5kb3cgeyBudWxs
cHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcApzaW1pbGFyaXR5IGlu
ZGV4IDg3JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuY3BwCmluZGV4IGRi
MzJhZTIuLmE1NTU3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmNwcApAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVgx
MS5oIgogCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAKQEAgLTM5LDIw
ICszOSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQorc3RkOjp1bmlxdWVf
cHRyPEFjY2VsZXJhdGVkU3VyZmFjZVgxMT4gQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUo
V2ViUGFnZSYgd2ViUGFnZSkKIHsKICAgICBpZiAoIWRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLnN1cHBvcnRzWENvbXBvc2l0ZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3co
d2ViUGFnZSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
WDExPihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlWDExKHdlYlBhZ2UpKTsKIH0KIAotUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KFdlYlBhZ2UmIHdl
YlBhZ2UpCi0gICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKK0FjY2VsZXJhdGVkU3VyZmFjZVgxMTo6
QWNjZWxlcmF0ZWRTdXJmYWNlWDExKFdlYlBhZ2UmIHdlYlBhZ2UpCisgICAgOiBBY2NlbGVyYXRl
ZFN1cmZhY2Uod2ViUGFnZSkKICAgICAsIG1fZGlzcGxheShkb3duY2FzdDxQbGF0Zm9ybURpc3Bs
YXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSkKLSAgICAs
IG1fc2l6ZSh3ZWJQYWdlLnNpemUoKSkKIHsKLSAgICBtX3NpemUuc2NhbGUobV93ZWJQYWdlLmRl
dmljZVNjYWxlRmFjdG9yKCkpOwotCiAgICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZhdWx0U2NyZWVu
T2ZEaXNwbGF5KG1fZGlzcGxheSk7CiAKICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gbV9k
aXNwbGF5KTsKQEAgLTEwOSw3ICsxMDYsNyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coV2ViUGFnZSYgd2ViUGFnZSkKICAgICBtX3BpeG1h
cCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkp
OwogfQogCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93KCkKK0FjY2VsZXJhdGVkU3VyZmFjZVgxMTo6fkFjY2VsZXJhdGVkU3VyZmFjZVgxMSgp
CiB7CiAgICAgQVNTRVJUKG1fZGlzcGxheSk7CiAgICAgQVNTRVJUKG1fd2luZG93KTsKQEAgLTEy
MCwxNCArMTE3LDEwIEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3coKQogICAgIG1fcGFyZW50V2luZG93LnJlc2V0KCk7CiB9CiAKLXZvaWQg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQor
Ym9vbCBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
ewotICAgIEludFNpemUgc2NhbGVkU2l6ZShzaXplKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1f
d2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBpZiAoc2NhbGVkU2l6ZSA9PSBtX3Np
emUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2l6ZSA9IHNjYWxlZFNpemU7CisgICAgaWYg
KCFBY2NlbGVyYXRlZFN1cmZhY2U6OnJlc2l6ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vz
bid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5kb3dzLgogICAgIFhSZXNpemVXaW5kb3cobV9k
aXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLCBzdGQ6
Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpKTsKQEAgLTEzNiw2ICsxMjksNyBAQCB2b2lkIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAv
LyBSZWxlYXNlIHRoZSBwcmV2aW91cyBwaXhtYXAgbGF0ZXIgdG8gZ2l2ZSBzb21lIHRpbWUgdG8g
dGhlIFVJIHByb2Nlc3MgdG8gdXBkYXRlLgogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFm
dGVyKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpLCBbcGl4bWFwID0gV1RGTW92ZShtX3BpeG1hcCld
IHsgfSk7CiAgICAgbV9waXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3Bs
YXksIG1fd2luZG93LmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaApzaW1pbGFyaXR5IGluZGV4
IDc3JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKaW5kZXggODRhNTRkOS4u
MGQ3MmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKQEAgLTI3LDkgKzI3LDgg
QEAKIAogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogCi0jaW5jbHVkZSA8
V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CiB0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgUGl4bWFwOwpAQCAtMzksMjIgKzM4LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVgxMSBmaW5hbCA6
IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFj
Y2VsZXJhdGVkU3VyZmFjZVgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IGNy
ZWF0ZShXZWJQYWdlJik7Ci0gICAgflJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VYMTE+IGNyZWF0ZShXZWJQ
YWdlJik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFjZVgxMSgpOwogCi0gICAgV2luZG93IHdpbmRv
dygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9Ci0gICAgUGl4bWFwIHBpeG1hcCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGl4bWFwLmdldCgpOyB9Ci0gICAgdm9pZCByZXNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhtYXAuZ2V0KCk7IH0KKyAgICBib29sIHJlc2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3coV2ViUGFnZSYpOworICAgIEFjY2VsZXJhdGVkU3VyZmFjZVgx
MShXZWJQYWdlJik7CiAKLSAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAgICAgRGlzcGxheSogbV9k
aXNwbGF5IHsgbnVsbHB0ciB9OwotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgIFdl
YkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CiAgICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRv
dyBtX3BhcmVudFdpbmRvdzsKICAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRy
ZWVIb3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5jcHAKaW5kZXggOWEwOTJlZC4uNWExNzBlOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQog
CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJ
bXBsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5o
IgpAQCAtNDYsMjAgKzQ3LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLQogI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpZiBk
ZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotI2RlZmluZSBSZWdpb24gWFJlZ2lvbgotI2RlZmlu
ZSBGb250IFhGb250Ci0jZGVmaW5lIEN1cnNvciBYQ3Vyc29yCi0jZGVmaW5lIFNjcmVlbiBYU2Ny
ZWVuCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KLSNlbmRpZgotCi0jaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cu
aCIKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMTM3LDkgKzEyNiw3IEBAIFJlZjxMYXllclRyZWVIb3N0R3RrPiBM
YXllclRyZWVIb3N0R3RrOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSkKIAogTGF5ZXJUcmVlSG9z
dEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVl
SG9zdCh3ZWJQYWdlKQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAg
ICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUo
d2ViUGFnZSkpCi0jZW5kaWYKKyAgICAsIG1fc3VyZmFjZShBY2NlbGVyYXRlZFN1cmZhY2U6OmNy
ZWF0ZSh3ZWJQYWdlKSkKICAgICAsIG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZM
YXllclRyZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSwgdGhpcykpCiB7CiAgICAgbV9yb290TGF5ZXIg
PSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwpA
QCAtMTY3LDM0ICsxNTQsMzcgQEAgTGF5ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhX
ZWJQYWdlJiB3ZWJQYWdlKQogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0
ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+
c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7CisgICAgaWYgKG1fc3VyZmFjZSkgewog
ICAgICAgICBjcmVhdGVUZXh0dXJlTWFwcGVyKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4
dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOworICAgICAgICBtX2xh
eWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKICAgICB9
Ci0jZW5kaWYKIH0KIAogYm9vbCBMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQo
KQogewotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHVpbnQ2NF90
IG5hdGl2ZUhhbmRsZSA9IG1fcmVkaXJlY3RlZFdpbmRvdyA/IG1fcmVkaXJlY3RlZFdpbmRvdy0+
d2luZG93KCkgOiBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEOwotI2Vsc2UKLSAgICB1aW50
NjRfdCBuYXRpdmVIYW5kbGUgPSBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEOwotI2VuZGlm
Ci0KKyAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBtX3N1cmZhY2UgPyBtX3N1cmZhY2UtPndp
bmRvdygpIDogbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRDsKICAgICBpZiAoIW5hdGl2ZUhh
bmRsZSkgewogICAgICAgICBtX2NvbnRleHQgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgbV9jb250ZXh0ID0g
R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRp
dmVXaW5kb3dUeXBlPihuYXRpdmVIYW5kbGUpLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkp
OwotICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CisKKyAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRl
eHRGb3JXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxHTE5hdGl2ZVdpbmRvd1R5cGU+KG5hdGl2ZUhh
bmRsZSksICZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsK
KyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBEbyBub3QgZG8gZnJhbWUgc3luYyB3aGVuIHJlbmRlcmluZyBvZmZzY3JlZW4gaW4g
dGhlIHdlYiBwcm9jZXNzIHRvIGVuc3VyZSB0aGF0IFN3YXBCdWZmZXJzIG5ldmVyIGJsb2Nrcy4K
KyAgICAvLyBSZW5kZXJpbmcgdG8gdGhlIGFjdHVhbCBzY3JlZW4gd2lsbCBoYXBwZW4gbGF0ZXIg
YW55d2F5IHNpbmNlIHRoZSBVSSBwcm9jZXNzIHNjaGVkdWxlcyBhIHJlZHJhdyBmb3IgZXZlcnkg
dXBkYXRlLAorICAgIC8vIHRoZSBjb21wb3NpdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHN5bmNpbmcg
dG8gdmJsYW5rLgorICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIG1fY29udGV4dC0+c3dhcElu
dGVydmFsKDApOwogCi0gICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIExheWVyVHJlZUhvc3RHdGs6On5MYXllclRyZWVIb3N0
R3RrKCkKQEAgLTIyOSw5ICsyMTksNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmludmFsaWRh
dGUoKQogICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgTGF5ZXJUcmVlSG9zdDo6aW52YWxp
ZGF0ZSgpOwogCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgbV9y
ZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKLSNlbmRpZgorICAgIG1fc3VyZmFjZSA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRz
TmVlZERpc3BsYXkoKQpAQCAtMjcxLDI0ICsyNTksMTYgQEAgdm9pZCBMYXllclRyZWVIb3N0R3Rr
OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBv
bGRTaXplLmhlaWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRT
aXplLmhlaWdodCgpKSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVk
c0Rpc3BsYXkoKTsKIAotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAg
IGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKLSAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5y
ZXNpemUobmV3U2l6ZSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBt
X3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1hcCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX3N1
cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNpemUobmV3U2l6ZSkpCisgICAgICAgIG1fbGF5ZXJUcmVl
Q29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZhY2UtPnN1cmZhY2VJRCgpOwogCiAgICAgY29tcG9z
aXRlTGF5ZXJzVG9Db250ZXh0KEZvclJlc2l6ZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0
azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKLSNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7Ci0gICAg
ICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOwotICAgICAg
ICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXht
YXAoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVz
aXplKG1fd2ViUGFnZS5zaXplKCkpKQorICAgICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4
dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKIAogICAgIC8vIE90aGVyIGxheWVycyBsZWFy
biBvZiB0aGUgc2NhbGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVG
YWN0b3IuCiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggZDY5ZGU5Ny4uNDQ3NDUwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRy
ZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OworY2xhc3MgQWNjZWxlcmF0ZWRT
dXJmYWNlOwogCiBjbGFzcyBMYXllclRyZWVIb3N0R3RrIGZpbmFsIDogcHVibGljIExheWVyVHJl
ZUhvc3QsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAtMTA5LDkg
KzEwOSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xD
b250ZXh0PiBtX2NvbnRleHQ7CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV9z
Y2FsZU1hdHJpeDsKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IG1fcmVkaXJlY3RlZFdp
bmRvdzsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IG1f
c3VyZmFjZTsKICAgICBSZW5kZXJGcmFtZVNjaGVkdWxlciBtX3JlbmRlckZyYW1lU2NoZWR1bGVy
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMTRi
M2ExNC4uNmM0MjVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0zMDAsNiArMzAwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgbV9hcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS0+c2V0RGVmYXVsdE9yaWdpblF1b3RhKDI1VUxMICogMTAyNCAq
IDEwMjQpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIG1fd2F5bGFuZENv
bXBvc2l0b3JEaXNwbGF5TmFtZSA9IHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5
TmFtZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmICghcGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiNWJkOGEy
Li42MGZlZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTk4
LDYgKzE5OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlz
c2lvbnMoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBTdHJpbmcgd2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5TmFtZTsgfQorI2VuZGlmCisKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqKTsKICAgICBzdGF0aWMgUmVmUHRy
PEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0Kik7CiAK
QEAgLTQwMSw2ICs0MDUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2VyR2Vz
dHVyZVRva2VuICosIHVpbnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOworCisjaWYgUExBVEZP
Uk0oV0FZTEFORCkKKyAgICBTdHJpbmcgbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lOwor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5k
ZXggMzExNGEzOS4uZjExNTE3NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTM4OSwxMCArMzg5
LDE0IEBAIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQpCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxf
RVJST1IgIlJlY29tcGlsZSBHVEsrIHdpdGggV2F5bGFuZCBiYWNrZW5kIHRvIHVzZSBFTkFCTEVf
V0FZTEFORF9UQVJHRVQiKQogICAgIGVuZGlmICgpCiAKLSAgICBpZiAoRU5BQkxFX1dBWUxBTkRf
VEFSR0VUIEFORCBHVEszX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuMTIpCisgICAgaWYgKEdUSzNf
VkVSU0lPTiBWRVJTSU9OX0xFU1MgMy4xMikKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAi
R1RLKyAzLjEyIGlzIHJlcXVpcmVkIHRvIHVzZSBFTkFCTEVfV0FZTEFORF9UQVJHRVQiKQogICAg
IGVuZGlmICgpCiAKKyAgICBpZiAoTk9UIEVHTF9GT1VORCkKKyAgICAgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAiRUdMIGlzIHJlcXVpcmVkIHRvIHVzZSBFTkFCTEVfV0FZTEFORF9UQVJHRVQiKQor
ICAgIGVuZGlmICgpCisKICAgICBmaW5kX3BhY2thZ2UoV2F5bGFuZCBSRVFVSVJFRCkKIGVuZGlm
ICgpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>