<?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>118944</bug_id>
          
          <creation_ts>2013-07-20 06:49:27 -0700</creation_ts>
          <short_desc>[GTK] Add WebGL support under Wayland</short_desc>
          <delta_ts>2016-08-17 00:34:29 -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>DUPLICATE</resolution>
          <dup_id>115803</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>120214</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ararunprasad</cc>
    
    <cc>arurajku</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>emanuele.aina</cc>
    
    <cc>gustavo</cc>
    
    <cc>jana</cc>
    
    <cc>joone</cc>
    
    <cc>jose.lejin</cc>
    
    <cc>lantw44</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pochu27</cc>
    
    <cc>tomeu</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>910473</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-07-20 06:49:27 -0700</bug_when>
    <thetext>SSIA. Will probably serve as a metabug of sorts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910475</commentid>
    <comment_count>1</comment_count>
      <attachid>207198</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-07-20 07:27:34 -0700</bug_when>
    <thetext>Created attachment 207198
All changes, RFC version

Here are all the proposed changes, though they will be split between smaller patches that would then get proper review. This is an RFC patch of sorts, requesting feedback on the approach to refactoring GLContextEGL and adding the EGLPlatform interface. I&apos;ll leave more comments about the proposed changes through the reviewing tool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910478</commentid>
    <comment_count>2</comment_count>
      <attachid>207198</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-07-20 09:17:46 -0700</bug_when>
    <thetext>Comment on attachment 207198
All changes, RFC version

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

&gt; Source/WebCore/platform/graphics/cairo/GLContext.cpp:44
&gt; +#if PLATFORM(WAYLAND)
&gt; +#include &lt;wayland-client.h&gt;
&gt; +#endif
&gt; +

Eek, not necessary here, will be removed.

&gt; Source/WebCore/platform/graphics/cairo/GLContext.cpp:177
&gt; +#endif

On GTK only, the GLContextGLX is used under X11 displays if GLX support is enabled and similarly GLContextEGL, using the EGLPlatformWayland, is used under Wayland displays if EGL support is enabled.

&gt; Source/WebCore/platform/graphics/cairo/GLContext.cpp:190
&gt; -    if (OwnPtr&lt;GLContext&gt; eglContext = GLContextEGL::createContext(windowHandle, sharingContext))
&gt; +#if PLATFORM(X11)
&gt; +    typedef EGLPlatformX EGLPlatformClass;
&gt; +#else
&gt; +    typedef EGLPlatformDefault EGLPlatformClass;
&gt; +#endif
&gt; +    if (OwnPtr&lt;GLContext&gt; eglContext = GLContextEGL&lt;EGLPlatformClass&gt;::createContext(windowHandle, sharingContext))

Non-GTK ports fall back to the current behavior when the EGL support is enabled - X11-based ports use the new EGLPlatformX interface, other ports use the default EGLPlatformDefault interface as the EGL platform for the GLContextEGL.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatform.cpp:13
&gt; +EGLPlatform::EGLPlatform()
&gt; +    : m_context(EGL_NO_CONTEXT)
&gt; +    , m_surface(EGL_NO_SURFACE)
&gt; +    , m_type(Unknown)

The EGLPlatform class starts off as invalid - no context and surface are currently in use.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatform.cpp:22
&gt; +EGLBoolean EGLPlatform::chooseConfig(EGLConfig* config , EGLPlatform::SurfaceType surfaceType) const

This implementation is at the moment common to all the EGLPlatforms but is still left extensible.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatform.cpp:58
&gt; +EGLenum EGLPlatform::glAPI() const

Ditto.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatform.cpp:67
&gt; +EGLint* EGLPlatform::contextAttributes() const

Ditto.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatform.h:16
&gt; +class EGLPlatform {

This is the base EGLPlatform interface. It holds the EGLContext and EGLSurface that are in use by the GLContextEGL class that&apos;s extending it at the bottom of the inheritance stack.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatform.h:32
&gt; +    virtual EGLDisplay sharedDisplay() const = 0;
&gt; +    virtual EGLBoolean chooseConfig(EGLConfig*, SurfaceType) const;
&gt; +    virtual EGLenum glAPI() const;
&gt; +    virtual EGLint* contextAttributes() const;

These four methods are overridable by the inheriting classes, but at the moment only sharedDisplay is necessary to be implemented by different EGL platforms as it controls the platform-specific way of acquiring the shared EGL display.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformDefault.h:10
&gt; +class EGLPlatformDefault : protected EGLPlatform {

EGLPlatformDefault replicates the current, non-X11 behavior of the GLContextEGL class. It basically only differs from the current X11-specific behavior (that&apos;s now located in EGLPlatformX11) that it gets the shared EGL display by passing EGL_DEFAULT_DISPLAY to eglGetDisplay and that it doesn&apos;t support creating pixmap surfaces.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformWayland.cpp:18
&gt; +EGLPlatformWayland::EGLPlatformWayland(EGLPlatformWayland::NativeWindowType nativeWindow, EGLContext sharingContext)

This is the Wayland-specific EGLPlatform implementation. It relies on the &apos;dummy wl_surface&apos; approach to acquire the EGLSurface that&apos;s then used for rendering.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformWayland.cpp:54
&gt; +#if PLATFORM(GTK) &amp;&amp; defined(GDK_WINDOWING_WAYLAND)
&gt; +        GdkDisplay* display = gdk_display_manager_get_default_display(gdk_display_manager_get());
&gt; +        ASSERT(GDK_IS_WAYLAND_DISPLAY(display));
&gt; +        struct wl_display* wlDisplay = gdk_wayland_display_get_wl_display(display);
&gt; +        sharedEGLDisplay = eglGetDisplay(wlDisplay);
&gt; +#endif

The GTK-specific bits to acquiring the shared EGL display, relying on the wl_display as provided by the default GdkDisplay.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformWayland.cpp:84
&gt; +#if PLATFORM(GTK) &amp;&amp; defined(GDK_WINDOWING_WAYLAND)
&gt; +    ASSERT(!nativeWindow);
&gt; +
&gt; +    GdkDisplay* gdkDisplay = gdk_display_manager_get_default_display(gdk_display_manager_get());
&gt; +    ASSERT(GDK_IS_WAYLAND_DISPLAY(gdkDisplay));
&gt; +
&gt; +    struct wl_compositor* wlCompositor = gdk_wayland_display_get_wl_compositor(gdkDisplay);
&gt; +    if (!wlCompositor)
&gt; +        return EGL_NO_SURFACE;
&gt; +
&gt; +    struct wl_surface* wlSurface = wl_compositor_create_surface(wlCompositor);
&gt; +    if (!wlSurface)
&gt; +        return EGL_NO_SURFACE;
&gt; +
&gt; +    struct wl_egl_window* eglWindow = wl_egl_window_create(wlSurface, 0, 0);
&gt; +    if (!eglWindow)
&gt; +        return EGL_NO_SURFACE;
&gt; +
&gt; +    return eglCreateWindowSurface(sharedDisplay(), config, eglWindow, 0);
&gt; +#else

The GTK-specific bits to creating the dummy wl_surface object and the subsequent wl_egl_window that then serves as the argument to eglCreateWindowSurface call.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformWayland.h:14
&gt; +    typedef struct wl_egl_window* NativeWindowType;

These native window types are defined by each EGLPlatform* class, with the definition reflecting that of EGLNativeWindowType in &lt;EGL/eglplatform.h&gt;. This helps later in the GLContextEGL class.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformWayland.h:16
&gt; +    EGLPlatformWayland(NativeWindowType, EGLContext sharingContext);

On a self-reviewing note, I believe that constructors in these classes could be made private.

&gt; Source/WebCore/platform/graphics/egl/EGLPlatformX.cpp:11
&gt; +EGLPlatformX::EGLPlatformX(EGLPlatformX::NativeWindowType nativeWindow, EGLContext sharingContext)

This class preserves the current X11-specific behavior of the GLContextEGL class. It gets the shared EGL display by using the GLContext::sharedX11Display() return value and can create either window, pbuffer or pixmap EGLSurfaces.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:64
&gt; +    OwnPtr&lt;GLContextEGL&lt;EGLPlatformClass&gt; &gt; context = adoptPtr(new GLContextEGL&lt;EGLPlatformClass&gt;(nativeWindow, sharingContext));
&gt; +    if (context-&gt;isValid())
&gt; +        return context.release();

This creates a new GLContextEGL object and returns it only if it&apos;s valid, i.e. the EGLPlatform* interface successfully acquired both the EGLContext and EGLSurface.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:169
&gt; +#if PLATFORM(WAYLAND)
&gt; +template class GLContextEGL&lt;EGLPlatformWayland&gt;;
&gt; +#endif
&gt; +#if PLATFORM(X11)
&gt; +template class GLContextEGL&lt;EGLPlatformX&gt;;
&gt; +#endif
&gt; +#if !PLATFORM(WAYLAND) &amp;&amp; !PLATFORM(X11)
&gt; +template class GLContextEGL&lt;EGLPlatformDefault&gt;;
&gt; +#endif

This declares all the GLContextEGL variants that must be compiled.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:-27
&gt; -#include &lt;EGL/egl.h&gt;

The proposed refactoring makes it possible to stop including the EGL header here. This was problematic as it also defined the EGL platform, by default that&apos;s the X11 platform. Specifying the native window type (as required by GLContextEGL::createContext) through the EGLPlatform* classes avoids that.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:29
&gt; +typedef void *EGLContext;
&gt; +typedef void *EGLSurface;

Should be removed.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:34
&gt; +template&lt;class EGLPlatformClass&gt;
&gt; +class GLContextEGL : public GLContext, protected EGLPlatformClass {

GLContextEGL now also inherits from the given EGLPlatform* class, making it possible to store the EGLContext and EGLSurface objects as members of the EGLPlatform interface and also making EGLPlatform a proper, extensible interface instead of just a class with loads of static methods.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:37
&gt; -    enum EGLSurfaceType { PbufferSurface, WindowSurface, PixmapSurface };
&gt; -    static PassOwnPtr&lt;GLContextEGL&gt; createContext(EGLNativeWindowType, GLContext* sharingContext = 0);
&gt; -    static PassOwnPtr&lt;GLContextEGL&gt; createWindowContext(EGLNativeWindowType, GLContext* sharingContext);
&gt; +    static PassOwnPtr&lt;GLContextEGL&gt; createContext(typename EGLPlatformClass::NativeWindowType, GLContext* sharingContext = 0);

EGLSurfaceType now lives as EGLPlatform::SurfaceType.
createWindowContext was removed from the public interface as it&apos;s not currently called from anywhere.
createContext now takes the EGLNativeWindowType (as redefined as EGLPlatform*::NativeWindowType in each EGLPlatform* class) as the first parameter.

&gt; Source/autotools/FindDependencies.m4:185
&gt; +
&gt; +    PKG_CHECK_MODULES([GTK_WAYLAND], [gtk+-wayland-$GTK_API_VERSION], [have_gtk_wayland=yes], [have_gtk_wayland=no])

Checks if GTK comes with the Wayland backend.

&gt; Source/autotools/FindDependencies.m4:193
&gt; +    PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client wayland-egl])

Might as well simply be &apos;WAYLAND&apos;.

&gt; Source/autotools/SetupAutoconfHeader.m4:49
&gt; +
&gt; +    if test &quot;$have_gtk_wayland&quot; = &quot;yes&quot;; then
&gt; +        AC_DEFINE([WTF_PLATFORM_WAYLAND], [1], [Define if Wayland support is present])
&gt; +    fi

It&apos;s a bit weak to define the Wayland platform as supported only when using X11 as the target and having the GTK Wayland backend present, but at the moment the GTK port doesn&apos;t support building with two parallel targets and also doesn&apos;t support only building the Wayland target since the WebKit2 component fails to build due to the plugin infrastructure being tightly coupled into the build system. Of course this should be fixed and amended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911358</commentid>
    <comment_count>3</comment_count>
      <attachid>207198</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-07-24 10:50:27 -0700</bug_when>
    <thetext>Comment on attachment 207198
All changes, RFC version

I like the approach you are taking. I think maybe instead of a new class we should just make GLContextEGL an abstract base class and create GLContextEGLWayland and GLContextEGLX. It&apos;s nice that you covered the non-Wayland non-X11 case here, but no such consumer exists yet, right? Isn&apos;t GLContext only used by GTK+. I think if the code will be unused you should avoid adding it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911370</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-07-24 11:15:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 207198 [details])
&gt; I like the approach you are taking. I think maybe instead of a new class we should just make GLContextEGL an abstract base class and create GLContextEGLWayland and GLContextEGLX.

I&apos;ll look  into that.

&gt; It&apos;s nice that you covered the non-Wayland non-X11 case here, but no such consumer exists yet, right? Isn&apos;t GLContext only used by GTK+. I think if the code will be unused you should avoid adding it.

I think AppleWin port might be such a consumer, based on this:
http://trac.webkit.org/changeset/152869</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911417</commentid>
    <comment_count>5</comment_count>
      <attachid>207411</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-07-24 14:19:44 -0700</bug_when>
    <thetext>Created attachment 207411
All changes, RFC version #2

RFC dump #2. Further refactored, merging the EGLPlatform interface into GLContextEGL and renaming EGLPlatformWayland, EGLPlatformX and EGLPlatformDefault into GLContextEGLWayland, GLContextEGLX11 and GLContextEGLDefault and have them inherit from GLContextEGL.

This simplifies things, most significantly removing the necessity to have the complete GLContextEGL depend on a template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911422</commentid>
    <comment_count>6</comment_count>
      <attachid>207411</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-07-24 14:40:08 -0700</bug_when>
    <thetext>Comment on attachment 207411
All changes, RFC version #2

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

&gt; Source/WebCore/platform/graphics/cairo/GLContext.cpp:186
&gt; +    typedef GLContextEGLX11 EGLPlatformClass;

This and similar EGLPlatformClass leftovers could now use a better name, obviously.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:34
&gt; -#include &lt;EGL/egl.h&gt;
&gt; +typedef unsigned int EGLBoolean;
&gt; +typedef void *EGLConfig;
&gt; +typedef void *EGLContext;
&gt; +typedef void *EGLDisplay;
&gt; +typedef void *EGLSurface;
&gt; +typedef unsigned int EGLenum;
&gt; +typedef khronos_int32_t EGLint;

Instead of including the EGL header which also pulls in the platform-specific type definitions, only the necessary types are defined here.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:49
&gt; +    template&lt;class EGLPlatformClass&gt;
&gt; +    static PassOwnPtr&lt;GLContextEGL&gt; createContext(typename EGLPlatformClass::NativeWindowType, GLContext* sharingContext = 0);

This static method is the only one left templated, so it can operate on a native window of the proper type and also construct the proper platform-specific GLContextEGL object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912938</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-30 10:47:39 -0700</bug_when>
    <thetext>Shouldn&apos;t you change uint64_t to NativeWindowType in GLContext.cpp?

PassOwnPtr&lt;GLContext&gt; GLContext::createContextForWindow(uint64_t windowHandle, GLContext* sharingContext)

And I don&apos;t like this in GLContextEGLDefault.h.  It should be platform-specific, like in https://bugs.webkit.org/show_bug.cgi?id=119235

+    typedef uint64_t NativeWindowType;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919552</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-08-21 11:47:41 -0700</bug_when>
    <thetext>The latest RFC version, when rebased, works well. I plan to upload a patch for review tomorrow.

I plan to address additional abstractions for specific EGL platforms in a separate bug, after work on this one is finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920156</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-08-23 02:59:37 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Shouldn&apos;t you change uint64_t to NativeWindowType in GLContext.cpp?
&gt; 
&gt; PassOwnPtr&lt;GLContext&gt; GLContext::createContextForWindow(uint64_t windowHandle, GLContext* sharingContext)
&gt; 
&gt; And I don&apos;t like this in GLContextEGLDefault.h.  It should be platform-specific, like in https://bugs.webkit.org/show_bug.cgi?id=119235
&gt; 
&gt; +    typedef uint64_t NativeWindowType;

Just a note that this has been addressed in the linked bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920403</commentid>
    <comment_count>10</comment_count>
      <attachid>209504</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-08-23 13:27:08 -0700</bug_when>
    <thetext>Created attachment 209504
Pre-review patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920414</commentid>
    <comment_count>11</comment_count>
      <attachid>209504</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-08-23 13:36:16 -0700</bug_when>
    <thetext>Comment on attachment 209504
Pre-review patch

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

Not setting the r? flag yet, I&apos;d first like to land the small fix in bug #120214.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLDefault.h:22
&gt; +#if !PLATFORM(GTK)
&gt; +    typedef EGLNativeWindowType NativeWindowType;
&gt; +#else
&gt; +    typedef uint64_t NativeWindowType;
&gt; +#endif

This follows the GLNativeWindowType definition in GLContext.h.

&gt; Source/autotools/Versions.m4:22
&gt; +m4_define([gtk3_wayland_required_version], [3.9.6])

I was using 3.9.6 for testing, but this should be bumped to 3.10.0. Using 3.6.0 here wouldn&apos;t make much sense, there wasn&apos;t much support for Wayland then, and I generally think introducing Wayland support into the Debian long-term stable isn&apos;t really a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920418</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-08-23 13:39:14 -0700</bug_when>
    <thetext>By the way, there are no working bots with WebGL enabled on Windows right now, so be careful because nobody will notice breaking the Windows WebGL build until I get back from vacation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932170</commentid>
    <comment_count>13</comment_count>
      <attachid>212358</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-23 09:44:45 -0700</bug_when>
    <thetext>Created attachment 212358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932171</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-23 09:46:29 -0700</bug_when>
    <thetext>Attachment 212358 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/graphics/GLContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.h&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLDefault.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLDefault.h&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLWayland.h&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLX11.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;, u&apos;Source/autotools/FindDependencies.m4&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/GNUmakefile.am&apos;, u&apos;Tools/TestWebKitAPI/GNUmakefile.am&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:6:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932774</commentid>
    <comment_count>15</comment_count>
      <attachid>212358</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-09-24 16:20:24 -0700</bug_when>
    <thetext>Comment on attachment 212358
Patch

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

Looking better. I&apos;m beginning to doubt the abstract base class now. I should play around with this a bit until I understand it.

&gt; Source/WebCore/platform/graphics/GLContext.cpp:164
&gt; +#if defined(GDK_WINDOWING_X11) &amp;&amp; USE(GLX)
&gt; +    if (GDK_IS_X11_DISPLAY(display)) {
&gt; +        if (OwnPtr&lt;GLContext&gt; glxContext = GLContextGLX::createContext(windowHandle, sharingContext))
&gt; +            return glxContext.release();
&gt; +        return nullptr;
&gt; +    }
&gt; +#endif

I&apos;m not sure I understand why you can&apos;t skip this code and let line 163/176 handle it...

&gt; Source/WebCore/platform/graphics/GLContext.cpp:187
&gt; +    if (OwnPtr&lt;GLContext&gt; eglContext = GLContextEGL::createContext&lt;EGLPlatformContext&gt;(windowHandle, sharingContext))

Hrm. Not sure I&apos;m a huge fan of the use of templates here.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:88
&gt; +    if (m_display != EGL_NO_DISPLAY) {

Maybe ASSERT(m_display) instead of a conditional? when can m_display be null?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:102
&gt; +    return m_type == GLContextEGL::WindowSurface;

You should not need to specify a namespace in a method.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:32
&gt; +typedef void *EGLConfig;
&gt; +typedef void *EGLContext;
&gt; +typedef void *EGLDisplay;
&gt; +typedef void *EGLSurface;

Your asterisks are in the wrong place here.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:41
&gt; +    enum SurfaceType {

These aren&apos;t really &quot;surface types&quot; so much as context types.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:70
&gt; +    EGLenum glAPI() const;
&gt; +    EGLint* contextAttributes() const;

These should be static.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLDefault.cpp:71
&gt; +bool GLContextEGLDefault::createPbufferSurface(EGLContext sharingContext)
&gt; +{
&gt; +    ASSERT(m_display != EGL_NO_DISPLAY);
&gt; +

Is there a way we can avoid duplicating this code?

&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:6
&gt;&gt; +#include &lt;wayland-egl.h&gt;
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

Please fix, if possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933192</commentid>
    <comment_count>16</comment_count>
      <attachid>212358</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-25 14:04:56 -0700</bug_when>
    <thetext>Comment on attachment 212358
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GLContext.cpp:164
&gt;&gt; +#endif
&gt; 
&gt; I&apos;m not sure I understand why you can&apos;t skip this code and let line 163/176 handle it...

This basically got written because of both the special-casing for the GTK port and the mirroring of the tidy Wayland display check.

&gt;&gt; Source/WebCore/platform/graphics/GLContext.cpp:187
&gt;&gt; +    if (OwnPtr&lt;GLContext&gt; eglContext = GLContextEGL::createContext&lt;EGLPlatformContext&gt;(windowHandle, sharingContext))
&gt; 
&gt; Hrm. Not sure I&apos;m a huge fan of the use of templates here.

Specifically in this case? Or generally for GLContextEGL::createContext?

&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:88
&gt;&gt; +    if (m_display != EGL_NO_DISPLAY) {
&gt; 
&gt; Maybe ASSERT(m_display) instead of a conditional? when can m_display be null?

m_display can be null if the platform-specific implementation was unable to set up the shared EGL display.

&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:32
&gt;&gt; +typedef void *EGLSurface;
&gt; 
&gt; Your asterisks are in the wrong place here.

Oddly the style checker doesn&apos;t complain.

&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:41
&gt;&gt; +    enum SurfaceType {
&gt; 
&gt; These aren&apos;t really &quot;surface types&quot; so much as context types.

Roger.

&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:70
&gt;&gt; +    EGLint* contextAttributes() const;
&gt; 
&gt; These should be static.

The idea here is that platform-specific implementations can override these and reimplement them as required. If that makes sense, I believe these should really be virtual.

&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGLDefault.cpp:71
&gt;&gt; +
&gt; 
&gt; Is there a way we can avoid duplicating this code?

I&apos;ll see if these surface methods can be moved up to GLContextEGL.

&gt;&gt;&gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:6
&gt;&gt;&gt; +#include &lt;wayland-egl.h&gt;
&gt;&gt; 
&gt;&gt; Alphabetical sorting problem.  [build/include_order] [4]
&gt; 
&gt; Please fix, if possible

wayland-egl.h defines the required types and macros so that egl.h chooses the Wayland EGL platform instead of the default X11 platform.
So including wayland-egl.h before egl.h is necessary here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933393</commentid>
    <comment_count>17</comment_count>
      <attachid>212358</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-09-26 00:57:35 -0700</bug_when>
    <thetext>Comment on attachment 212358
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        returns a new object of that type if the context is valid, and a nullptr otherwise.

What if instead of using a template for this, we use a factory? That would mirror more or less what&apos;s done for creating the GraphicLayers for example and I think fits better than a template in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936307</commentid>
    <comment_count>18</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-04 12:24:08 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 212358 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212358&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        returns a new object of that type if the context is valid, and a nullptr otherwise.
&gt; 
&gt; What if instead of using a template for this, we use a factory? That would mirror more or less what&apos;s done for creating the GraphicLayers for example and I think fits better than a template in this case.

I like that approach, but I&apos;d defer it to a separate bug that I&apos;d address later, just to keep changes here under the scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936323</commentid>
    <comment_count>19</comment_count>
      <attachid>213392</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-04 12:55:43 -0700</bug_when>
    <thetext>Created attachment 213392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936326</commentid>
    <comment_count>20</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-04 13:02:11 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=213392) [details]
&gt; Patch

Modified the surface types to now describe the type of context itself, moved the common pbuffer surface creation into the base GLContextEGL class, and moved the pointers in type definitions in the GLContextEGL header into the proper position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958618</commentid>
    <comment_count>21</comment_count>
      <attachid>218935</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-11 00:36:37 -0800</bug_when>
    <thetext>Created attachment 218935
Iteration of Zan&apos;s patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959515</commentid>
    <comment_count>22</comment_count>
      <attachid>219162</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-13 01:18:32 -0800</bug_when>
    <thetext>Created attachment 219162
Next iteration of Zan&apos;s patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959552</commentid>
    <comment_count>23</comment_count>
      <attachid>219170</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-13 08:02:10 -0800</bug_when>
    <thetext>Created attachment 219170
Patch

ChangeLogs are hard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959553</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-13 08:04:32 -0800</bug_when>
    <thetext>Attachment 219170 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/graphics/GLContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.h&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;, u&apos;Source/autotools/FindDependencies.m4&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/GNUmakefile.am&apos;, u&apos;Tools/TestWebKitAPI/GNUmakefile.am&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:6:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959554</commentid>
    <comment_count>25</comment_count>
      <attachid>219170</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-13 08:15:31 -0800</bug_when>
    <thetext>Comment on attachment 219170
Patch

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

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:12
&gt; +#if PLATFORM(GTK)
&gt; +#include &lt;gdk/gdk.h&gt;
&gt; +#include &lt;gdk/gdkwayland.h&gt;
&gt; +#endif

Still missing #if defined(GDK_WINDOWING_WAYLAND) check here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959555</commentid>
    <comment_count>26</comment_count>
      <attachid>219171</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-13 08:23:29 -0800</bug_when>
    <thetext>Created attachment 219171
Patch

Better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959558</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-13 08:25:43 -0800</bug_when>
    <thetext>Attachment 219171 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/graphics/GLContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.h&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;, u&apos;Source/autotools/FindDependencies.m4&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/GNUmakefile.am&apos;, u&apos;Tools/TestWebKitAPI/GNUmakefile.am&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:6:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960456</commentid>
    <comment_count>28</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-17 04:40:49 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Attachment 219171 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/graphics/GLContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGL.h&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp&apos;, u&apos;Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;, u&apos;Source/autotools/FindDependencies.m4&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/GNUmakefile.am&apos;, u&apos;Tools/TestWebKitAPI/GNUmakefile.am&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
&gt; ERROR: Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:6:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Total errors found: 1 in 18 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Looks like this issue isn&apos;t a false positive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960552</commentid>
    <comment_count>29</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-17 09:58:17 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Looks like this issue isn&apos;t a false positive?

It&apos;s not a false positive, but it&apos;s required to include &lt;wayland-egl.h&gt; before &lt;EGL/eglplatform.h&gt; gets included through &lt;EGL/egl.h&gt;. The &lt;wayland-egl.h&gt; header defines the WL_EGL_PLATFORM macro that&apos;s checked for in the &lt;EGL/eglplatform.h&gt; so that Wayland EGL platform type definitions are set up, instead of falling back to definitions for the X11 EGL platform.

http://cgit.freedesktop.org/wayland/wayland/tree/src/wayland-egl.h
http://cgit.freedesktop.org/mesa/mesa/tree/include/EGL/eglplatform.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963013</commentid>
    <comment_count>30</comment_count>
      <attachid>219171</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2013-12-26 09:46:11 -0800</bug_when>
    <thetext>Comment on attachment 219171
Patch

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

LGTM, just added a small suggestion. Thanks for the patch.

&gt; Source/WebCore/platform/graphics/GLContext.cpp:152
&gt; +#if PLATFORM(NIX)
&gt; +    return nullptr;
&gt; +#else

I think we could just: #if !PLATFORM(NIX), if we leave the last return nullptr in the method outside of the ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968217</commentid>
    <comment_count>31</comment_count>
      <attachid>221241</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-15 01:35:33 -0800</bug_when>
    <thetext>Created attachment 221241
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968220</commentid>
    <comment_count>32</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-15 01:38:52 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=221241) [details]
&gt; Patch for landing

Because of worries expressed in comment #12 I&apos;ll coordinate with Alex before landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055983</commentid>
    <comment_count>33</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-12-16 08:58:58 -0800</bug_when>
    <thetext>Is this just waiting to be landed? =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102945</commentid>
    <comment_count>34</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-18 10:12:08 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Because of worries expressed in comment #12 I&apos;ll coordinate with Alex before
&gt; landing this.
Go ahead and land this and check the bots.  I&apos;ll clean up any problems you cause to Windows.  I&apos;m pretty sure at least the WinCairo bot has WebGL enabled, and I will clean up anything the bots don&apos;t notice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104661</commentid>
    <comment_count>35</comment_count>
      <attachid>255559</attachid>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-06-25 09:27:15 -0700</bug_when>
    <thetext>Created attachment 255559
Updated patch against 2.8.3

Updated patch to apply against 2.8.3. Tested with weston 2.8.3 on the drm backend, and epiphany 3.16.1, and it works fine. webgl still works on X11, no regression there AFAICS.

There&apos;s one problem with the patch: I commented out WaylandDisplay::createSharingGLContext() and WaylandSurface::createGLContext(). Anyway I commented them out because of the EGLNativeWindowType vs GLNativeWindowType mismatch in 2.8.3, as GLNativeWindowType is defined as uint64_t. That may be fixed in 2.9.x / master since commit fc2ad7. But since those functions seem to be unused I just commented them out for now as I&apos;m testing on 2.8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106371</commentid>
    <comment_count>36</comment_count>
      <attachid>256005</attachid>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-07-02 05:38:08 -0700</bug_when>
    <thetext>Created attachment 256005
Patch against git master (commit 27f9f4, svn r186113)

This is an updated patch against git master (commit 27f9f4, svn r186113). It fixes various issues with the previous versions, including a bug that was causing webgl to stop working on X11 because the GLContextEGL for the XUniquePixmap case wasn&apos;t setting the EGLDisplay.

Also it changes the ordering in which the different context constructors are tried to not change the behavior from what is present in git master at the moment: e.g. createContext() in git master calls createWindowContext, then Pixmap and then Pbuffer, while the previous patches from Zan and me tried Window then Pbuffer then Pixmap (in the x11 codepath). This patch keeps the status quo.

One question:

Since I have made createContext() try to create a Pixmap context, it seems unnecessary to have the createX11Context() function, as they are basically the same. Note that Source/WebCore/platform/graphics/GLContext.cpp:GLContext::createContextForWindow is calling createContext() rather than createX11Context() in this patch, as they are pretty similar. Thoughts on this? Should we drop createX11Context(), or what?


I have tested this with both X11 and Wayland support built, and run it on
- Epiphany/X11 - OK
- Epiphany/Weston (x11 backend) on wayland - OK
- Epiphany/Weston (drm backend) on wayland - OK
- Epiphany/Weston (x11 backend) on XWayland - BROKEN
- MiniBrowser/X11 - OK
- MiniBrowser/Weston (x11 backend) on wayland - BROKEN
- MiniBrowser/Weston (x11 backend) on XWayland - BROKEN

I haven&apos;t figured out why webgl in MiniBrowser isn&apos;t working on weston (whether on xwayland or natively). It seems to create a wayland context just like Ephy does. This isn&apos;t a regression, so maybe it shouldn&apos;t block landing if all else is fine.

I also don&apos;t know yet why Epiphany fails on XWayland (I think it was working in the past with some 2.8 version, but I have to confirm that).

Anyway, suggestions on how to figure out what&apos;s wrong with the failing cases more than welcome! And testing &amp; reviews appreciated as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106382</commentid>
    <comment_count>37</comment_count>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-07-02 06:56:05 -0700</bug_when>
    <thetext>FWIW I&apos;m building webkit with this command:

Tools/Scripts/build-webkit --gtk --cmakeargs=&quot;-DENABLE_WAYLAND_TARGET=ON -DENABLE_GLES2=ON -DENABLE_ACCELERATED_2D_CANVAS=OFF -DENABLE_MEDIA_STREAM=OFF -DUSE_LIBHYPHEN=OFF&quot; --makeargs=&quot;-j5&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106661</commentid>
    <comment_count>38</comment_count>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-07-03 02:21:06 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; I have tested this with both X11 and Wayland support built, and run it on
&gt; - Epiphany/X11 - OK
&gt; - Epiphany/Weston (x11 backend) on wayland - OK
&gt; - Epiphany/Weston (drm backend) on wayland - OK
&gt; - Epiphany/Weston (x11 backend) on XWayland - BROKEN
&gt; - MiniBrowser/X11 - OK
&gt; - MiniBrowser/Weston (x11 backend) on wayland - BROKEN
&gt; - MiniBrowser/Weston (x11 backend) on XWayland - BROKEN
&gt; 
&gt; I haven&apos;t figured out why webgl in MiniBrowser isn&apos;t working on weston
&gt; (whether on xwayland or natively). It seems to create a wayland context just
&gt; like Ephy does. This isn&apos;t a regression, so maybe it shouldn&apos;t block landing
&gt; if all else is fine.

ChangSeok figured this out. It turns out MiniBrowser enables AC on Wayland, but AC isn&apos;t currently working. He&apos;ll send a patch to turn that off.

With that fixed, this patch makes WebGL work on Wayland (natively) with no regressions on X11. XWayland isn&apos;t working, but that&apos;s not a regression and not very important so we shouldn&apos;t block on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109097</commentid>
    <comment_count>39</comment_count>
      <attachid>256005</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-07-13 08:14:17 -0700</bug_when>
    <thetext>Comment on attachment 256005
Patch against git master (commit 27f9f4, svn r186113)

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

This patch is missing a ChangeLog. You can use prepare-ChangeLogs to create a skeleton that you can fill out.

&gt; Source/WebCore/platform/graphics/GLContext.cpp:138
&gt; +#if 0 // XXX PLATFORM(X11) &amp;&amp; USE(EGL)
&gt; +    if (auto eglContext = GLContextEGL::createX11Context(windowHandle, sharingContext))
&gt; +        return WTF::move(eglContext);
&gt; +    return nullptr;
&gt; +#endif

Please don&apos;t leave code commented out.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:38
&gt; +// XXX move inside if USE(CAIRO) ?

This can be removed as well.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:71
&gt; -static const EGLint gContextAttributes[] = {
&gt; +EGLint* GLContextEGL::contextAttributes()
&gt; +{
&gt; +    static EGLint contextAttributes[] = {
&gt;  #if USE(OPENGL_ES_2)
&gt; -    EGL_CONTEXT_CLIENT_VERSION, 2,
&gt; +        EGL_CONTEXT_CLIENT_VERSION, 2,
&gt;  #endif
&gt; -    EGL_NONE
&gt; -};
&gt; +        EGL_NONE
&gt; +    };
&gt;  

Why convert this from a static struct?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:164
&gt; +    EGLContext eglSharingContext = sharingContext ? static_cast&lt;GLContextEGL*&gt;(sharingContext)-&gt;m_context : 0;

0 should be nullptr now.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:-188
&gt; +bool GLContextEGL::initializeOpenGLAPI()
&gt;  {
&gt; -    if (!sharedEGLDisplay())
&gt; -        return nullptr;

initializeOpenGLShims already tracks whether it is initialized or not, so you can simply call initializeOpenGLShims and eliminate this entire function if you don&apos;t need to do anything else in it.

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:218
&gt; +    if (m_display != EGL_NO_DISPLAY) {
&gt; +        if (m_context != EGL_NO_CONTEXT) {

Why would display be EGL_NO_DISPLAY here?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:-270
&gt; -    ASSERT(m_context &amp;&amp; m_surface);
&gt; -

Why remove the assertion if you are going to use the things it&apos;s asserting right after?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:259
&gt; +    if (m_surface)
&gt; +        eglSwapBuffers(m_display, m_surface);

I&apos;m not sure I understand exactly why m_surface can be null.

&gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.h:54
&gt; -    std::unique_ptr&lt;GLContextEGL&gt; createSharingGLContext();
&gt; +    std::unique_ptr&lt;GLContext&gt; createSharingGLContext();

Why have it hold the parent type instead of the GLContextEGL?

&gt; Source/WebCore/platform/graphics/wayland/WaylandSurface.h:52
&gt; -    std::unique_ptr&lt;GLContextEGL&gt; createGLContext();
&gt; +    std::unique_ptr&lt;GLContext&gt; createGLContext();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109334</commentid>
    <comment_count>40</comment_count>
      <attachid>256005</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-07-13 23:48:32 -0700</bug_when>
    <thetext>Comment on attachment 256005
Patch against git master (commit 27f9f4, svn r186113)

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

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:49
&gt; +EGLenum GLContextEGL::glAPI()

Is this used anywhere?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:65
&gt; +    enum ContextType {
&gt; +        WindowBased,
&gt; +        PbufferBased,
&gt; +        PixmapBased,
&gt; +        Surfaceless,
&gt; +    };
&gt;  
&gt; -    GLContextEGL(EGLContext, EGLSurface, EGLSurfaceType);
&gt; +    static std::unique_ptr&lt;GLContextEGL&gt; create(EGLDisplay display, EGLContext context, EGLSurface surface, ContextType type)
&gt; +    {
&gt; +        return std::make_unique&lt;GLContextEGL&gt;(display, context, surface, type);
&gt; +    }
&gt; +
&gt; +    static std::unique_ptr&lt;GLContext&gt; createContext(GLNativeWindowType, GLContext* sharingContext);
&gt; +    static std::unique_ptr&lt;GLContext&gt; createWindowContext(EGLDisplay display, GLNativeWindowType nativeWindow, EGLContext sharingContext);
&gt; +#if PLATFORM(WAYLAND)
&gt; +    static std::unique_ptr&lt;GLContext&gt; createWaylandContext(GLContext* sharingContext);
&gt; +#endif
&gt;  #if PLATFORM(X11)
&gt; -    GLContextEGL(EGLContext, EGLSurface, XUniquePixmap&amp;&amp;);
&gt; +    static std::unique_ptr&lt;GLContext&gt; createPixmapContext(EGLDisplay display, EGLContext sharingContext);
&gt; +    static std::unique_ptr&lt;GLContext&gt; createX11Context(GLNativeWindowType, GLContext* sharingContext);
&gt; +#endif
&gt; +
&gt; +    static EGLBoolean chooseConfig(EGLDisplay, EGLConfig*, ContextType);
&gt; +    static EGLenum glAPI();
&gt; +    static EGLint* contextAttributes();
&gt; +
&gt; +    GLContextEGL(EGLDisplay, EGLContext, EGLSurface, ContextType);
&gt; +#if PLATFORM(X11)
&gt; +    GLContextEGL(EGLDisplay, EGLContext, EGLSurface, XUniquePixmap&amp;&amp;);

Most of this should be private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146861</commentid>
    <comment_count>41</comment_count>
      <attachid>266778</attachid>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-12-07 08:56:18 -0800</bug_when>
    <thetext>Created attachment 266778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146862</commentid>
    <comment_count>42</comment_count>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-12-07 09:03:37 -0800</bug_when>
    <thetext>The new patch is against git master (f00fef598aeb5f94e71421263ee874c8ae0c8ba5)

(In reply to comment #39)
&gt; Comment on attachment 256005 [details]
&gt; Patch against git master (commit 27f9f4, svn r186113)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256005&amp;action=review
&gt; 
&gt; This patch is missing a ChangeLog. You can use prepare-ChangeLogs to create
&gt; a skeleton that you can fill out.

Added.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GLContext.cpp:138
&gt; &gt; +#if 0 // XXX PLATFORM(X11) &amp;&amp; USE(EGL)
&gt; &gt; +    if (auto eglContext = GLContextEGL::createX11Context(windowHandle, sharingContext))
&gt; &gt; +        return WTF::move(eglContext);
&gt; &gt; +    return nullptr;
&gt; &gt; +#endif
&gt; 
&gt; Please don&apos;t leave code commented out.

Removed.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:38
&gt; &gt; +// XXX move inside if USE(CAIRO) ?
&gt; 
&gt; This can be removed as well.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:71
&gt; &gt; -static const EGLint gContextAttributes[] = {
&gt; &gt; +EGLint* GLContextEGL::contextAttributes()
&gt; &gt; +{
&gt; &gt; +    static EGLint contextAttributes[] = {
&gt; &gt;  #if USE(OPENGL_ES_2)
&gt; &gt; -    EGL_CONTEXT_CLIENT_VERSION, 2,
&gt; &gt; +        EGL_CONTEXT_CLIENT_VERSION, 2,
&gt; &gt;  #endif
&gt; &gt; -    EGL_NONE
&gt; &gt; -};
&gt; &gt; +        EGL_NONE
&gt; &gt; +    };
&gt; &gt;  
&gt; 
&gt; Why convert this from a static struct?

That was a carryover from Zan&apos;s patch, but I guess that is so that the other files (e.g. GLContextEGLWayland.cpp) can use it.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:164
&gt; &gt; +    EGLContext eglSharingContext = sharingContext ? static_cast&lt;GLContextEGL*&gt;(sharingContext)-&gt;m_context : 0;
&gt; 
&gt; 0 should be nullptr now.

Fixed throughout the patch.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:-188
&gt; &gt; +bool GLContextEGL::initializeOpenGLAPI()
&gt; &gt;  {
&gt; &gt; -    if (!sharedEGLDisplay())
&gt; &gt; -        return nullptr;
&gt; 
&gt; initializeOpenGLShims already tracks whether it is initialized or not, so
&gt; you can simply call initializeOpenGLShims and eliminate this entire function
&gt; if you don&apos;t need to do anything else in it.

Fixed.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:218
&gt; &gt; +    if (m_display != EGL_NO_DISPLAY) {
&gt; &gt; +        if (m_context != EGL_NO_CONTEXT) {
&gt; 
&gt; Why would display be EGL_NO_DISPLAY here?

Carryover. But it shouldn&apos;t. Reverted that change.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:-270
&gt; &gt; -    ASSERT(m_context &amp;&amp; m_surface);
&gt; &gt; -
&gt; 
&gt; Why remove the assertion if you are going to use the things it&apos;s asserting
&gt; right after?

Fixed.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:259
&gt; &gt; +    if (m_surface)
&gt; &gt; +        eglSwapBuffers(m_display, m_surface);
&gt; 
&gt; I&apos;m not sure I understand exactly why m_surface can be null.

E.g. if created through createWaylandContext().

&gt; &gt; Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.h:54
&gt; &gt; -    std::unique_ptr&lt;GLContextEGL&gt; createSharingGLContext();
&gt; &gt; +    std::unique_ptr&lt;GLContext&gt; createSharingGLContext();
&gt; 
&gt; Why have it hold the parent type instead of the GLContextEGL?

Fixed throughout the patch.

(In reply to comment #40)
&gt; Comment on attachment 256005 [details]
&gt; Patch against git master (commit 27f9f4, svn r186113)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256005&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.cpp:49
&gt; &gt; +EGLenum GLContextEGL::glAPI()
&gt; 
&gt; Is this used anywhere?

Nope. Dropped.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGL.h:65
&gt; &gt; +    enum ContextType {
&gt; &gt; +        WindowBased,
&gt; &gt; +        PbufferBased,
&gt; &gt; +        PixmapBased,
&gt; &gt; +        Surfaceless,
&gt; &gt; +    };
&gt; &gt;  
&gt; &gt; -    GLContextEGL(EGLContext, EGLSurface, EGLSurfaceType);
&gt; &gt; +    static std::unique_ptr&lt;GLContextEGL&gt; create(EGLDisplay display, EGLContext context, EGLSurface surface, ContextType type)
&gt; &gt; +    {
&gt; &gt; +        return std::make_unique&lt;GLContextEGL&gt;(display, context, surface, type);
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    static std::unique_ptr&lt;GLContext&gt; createContext(GLNativeWindowType, GLContext* sharingContext);
&gt; &gt; +    static std::unique_ptr&lt;GLContext&gt; createWindowContext(EGLDisplay display, GLNativeWindowType nativeWindow, EGLContext sharingContext);
&gt; &gt; +#if PLATFORM(WAYLAND)
&gt; &gt; +    static std::unique_ptr&lt;GLContext&gt; createWaylandContext(GLContext* sharingContext);
&gt; &gt; +#endif
&gt; &gt;  #if PLATFORM(X11)
&gt; &gt; -    GLContextEGL(EGLContext, EGLSurface, XUniquePixmap&amp;&amp;);
&gt; &gt; +    static std::unique_ptr&lt;GLContext&gt; createPixmapContext(EGLDisplay display, EGLContext sharingContext);
&gt; &gt; +    static std::unique_ptr&lt;GLContext&gt; createX11Context(GLNativeWindowType, GLContext* sharingContext);
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +    static EGLBoolean chooseConfig(EGLDisplay, EGLConfig*, ContextType);
&gt; &gt; +    static EGLenum glAPI();
&gt; &gt; +    static EGLint* contextAttributes();
&gt; &gt; +
&gt; &gt; +    GLContextEGL(EGLDisplay, EGLContext, EGLSurface, ContextType);
&gt; &gt; +#if PLATFORM(X11)
&gt; &gt; +    GLContextEGL(EGLDisplay, EGLContext, EGLSurface, XUniquePixmap&amp;&amp;);
&gt; 
&gt; Most of this should be private.

I moved all the stuff that I could to private.

Thanks for the reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146908</commentid>
    <comment_count>43</comment_count>
      <attachid>266778</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-07 10:56:51 -0800</bug_when>
    <thetext>Comment on attachment 266778
Patch

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

I think you should mention in the changelog that the patch is based on the original 
patch of Zan Dobersek &lt;zdobersek@igalia.com&gt; and Martin Robinson &lt;mrobinson@igalia.com&gt;

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:2
&gt; + * Copyright (C) 2013 Igalia, S.L.

2013 ?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp:2
&gt; + * Copyright (C) 2013 Igalia, S.L.

2013 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147232</commentid>
    <comment_count>44</comment_count>
      <attachid>266870</attachid>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-12-08 02:38:00 -0800</bug_when>
    <thetext>Created attachment 266870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147237</commentid>
    <comment_count>45</comment_count>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2015-12-08 02:40:08 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; Comment on attachment 266778 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266778&amp;action=review
&gt; 
&gt; I think you should mention in the changelog that the patch is based on the
&gt; original 
&gt; patch of Zan Dobersek &lt;zdobersek@igalia.com&gt; and Martin Robinson
&gt; &lt;mrobinson@igalia.com&gt;

Absolutely! Thanks for pointing this.

&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:2
&gt; &gt; + * Copyright (C) 2013 Igalia, S.L.
&gt; 
&gt; 2013 ?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp:2
&gt; &gt; + * Copyright (C) 2013 Igalia, S.L.
&gt; 
&gt; 2013 ?

That&apos;s when Zan and Martin worked on this AFAICS, and that copyright notice comes unmodified from their patch. I have just added another one for my work though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151653</commentid>
    <comment_count>46</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-12-30 17:49:24 -0800</bug_when>
    <thetext>Zan, Martin, got time to look this over again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156459</commentid>
    <comment_count>47</comment_count>
      <attachid>266870</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-18 14:42:54 -0800</bug_when>
    <thetext>Comment on attachment 266870
Patch

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

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:32
&gt; +    EGLDisplay display = PlatformDisplay::sharedDisplay().eglDisplay();

Seems this broke the build:

../../Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp: In static member function &apos;static std::unique_ptr&lt;WebCore::GLContextEGL&gt; WebCore::GLContextEGL::createWaylandContext(WebCore::GLContext*)&apos;:
../../Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:32:26: error: &apos;PlatformDisplay&apos; has not been declared</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164837</commentid>
    <comment_count>48</comment_count>
      <attachid>266870</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-15 13:03:04 -0800</bug_when>
    <thetext>Comment on attachment 266870
Patch

Removing this from request queue since it failed EWS. Please, rebase the patch, then I&apos;ll try again to find someone who understands OpenGL to review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184635</commentid>
    <comment_count>49</comment_count>
      <attachid>276630</attachid>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2016-04-18 04:26:04 -0700</bug_when>
    <thetext>Created attachment 276630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184639</commentid>
    <comment_count>50</comment_count>
    <who name="Emilio Pozuelo Monfort">pochu27</who>
    <bug_when>2016-04-18 04:30:38 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Comment on attachment 266870 [details]
&gt; Patch
&gt; 
&gt; Removing this from request queue since it failed EWS. Please, rebase the
&gt; patch, then I&apos;ll try again to find someone who understands OpenGL to review
&gt; it.

This should build again against latest master. It also still works properly in my tests. It&apos;d be great if this could be reviewed so we can merge it if the review is positive and get webgl support on wayland.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189388</commentid>
    <comment_count>51</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-05-02 07:28:02 -0700</bug_when>
    <thetext>I&apos;ve minimized the current patch to make sure it works on top of my work-in-progress wayland-ac[1] branch for bug #115803.

In particular I&apos;ve temporarily left out the GLContextEGL refactorings and enabled offscreen contexts by using a 1x1 surface[2] as the pixmap-based code is already doing under X11 and then introduced the EGL_KHR_surfaceless_context optimization[3] for truly surfaceless contexts, both under Wayland and X11.

This way WebGL should work even where EGL_KHR_surfaceless_context is not supported.

Note that the branch is still in flux, this is why I didn&apos;t attach the patches here yet. :)

[1] https://github.com/em-/webkit/commits/wayland-ac
[2] https://github.com/em-/webkit/commit/cbf4d5c3b2d05
[3] https://github.com/em-/webkit/commit/73512afa77cd7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220813</commentid>
    <comment_count>52</comment_count>
      <attachid>276630</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:33:51 -0700</bug_when>
    <thetext>Comment on attachment 276630
Patch

Clearing flags, similar refactoring has been done in bug #115803</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220814</commentid>
    <comment_count>53</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-17 00:34:29 -0700</bug_when>
    <thetext>Let&apos;s track this in bug #115803 instead.

*** This bug has been marked as a duplicate of bug 115803 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207198</attachid>
            <date>2013-07-20 07:27:34 -0700</date>
            <delta_ts>2013-07-24 14:20:16 -0700</delta_ts>
            <desc>All changes, RFC version</desc>
            <filename>p</filename>
            <type>text/plain</type>
            <size>36420</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0
Zm9ybS9HTlVtYWtlZmlsZS5hbQppbmRleCAzNTg4NDQ3Li41MDkwNDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMTksNyArMTE5LDggQEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1Mg
PSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNS
RVRfQ0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJ
JChXQVlMQU5EX0NMSUVOVF9DRkxBR1MpCiAKIERlcml2ZWRTb3VyY2VzL1BsYXRmb3JtL0NvbG9y
RGF0YS5jcHA6ICQoV2ViQ29yZSkvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQoV2ViQ29yZSkv
bWFrZS1oYXNoLXRvb2xzLnBsCiAJJChBTV9WX0dFTikkKFBFUkwpICQoV2ViQ29yZSkvbWFrZS1o
YXNoLXRvb2xzLnBsICQoR0VOU09VUkNFU19QTEFURk9STSkgJChXZWJDb3JlKS9wbGF0Zm9ybS9D
b2xvckRhdGEuZ3BlcmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDkyZTM4MmUu
LjRkMTM0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMxMiw2ICs2MzEy
LDE0IEBAIHBsYXRmb3JtZ3RrX3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgVVNFX09QRU5HTAog
aWYgVVNFX0VHTAogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvRUdMUGxhdGZvcm0uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvRUdMUGxhdGZvcm0uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRmb3JtRGVmYXVsdC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybURlZmF1bHQuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRmb3JtV2F5bGFuZC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybVdheWxhbmQuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRmb3JtWC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybVguaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAog
ZW5kaWYgIyBFTkQgVVNFX0VHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAKaW5kZXggNjg3YzVlYS4uNTgyNTRlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQu
Y3BwCkBAIC0yMyw2ICsyMyw5IEBACiAKICNpZiBVU0UoRUdMKQogI2luY2x1ZGUgIkdMQ29udGV4
dEVHTC5oIgorI2luY2x1ZGUgIkVHTFBsYXRmb3JtRGVmYXVsdC5oIgorI2luY2x1ZGUgIkVHTFBs
YXRmb3JtV2F5bGFuZC5oIgorI2luY2x1ZGUgIkVHTFBsYXRmb3JtWC5oIgogI2VuZGlmCiAKICNp
ZiBVU0UoR0xYKQpAQCAtMzUsOSArMzgsMTYgQEAKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaWZu
ZGVmIEdUS19BUElfVkVSU0lPTl8yCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRl
IDxnZGsvZ2RreC5oPgorI2VuZGlmCiAjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECiAjaW5j
bHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KICNlbmRpZgpAQCAtMTQ1LDI2ICsxNTUsMzkgQEAgdm9p
ZCBHTENvbnRleHQ6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCiAjZW5kaWYKIH0KIAot
Ci0KIFBhc3NPd25QdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5k
b3codWludDY0X3Qgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewot
I2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpICYmIFVT
RShFR0wpCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZFUlNJT05fMikK
ICAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVs
dF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOwotCisjaWYgZGVmaW5lZChHREtf
V0lORE9XSU5HX1gxMSkgJiYgVVNFKEdMWCkKKyAgICBpZiAoR0RLX0lTX1gxMV9ESVNQTEFZKGRp
c3BsYXkpKSB7CisgICAgICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xD
b250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQor
ICAgICAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFO
RCkgJiYgVVNFKEVHTCkKKyAgICBBU1NFUlQoIXdpbmRvd0hhbmRsZSk7CiAgICAgaWYgKEdES19J
U19XQVlMQU5EX0RJU1BMQVkoZGlzcGxheSkpIHsKLSAgICAgICAgaWYgKE93blB0cjxHTENvbnRl
eHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxl
LCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250
ZXh0ID0gR0xDb250ZXh0RUdMPEVHTFBsYXRmb3JtV2F5bGFuZD46OmNyZWF0ZUNvbnRleHQoMCwg
c2hhcmluZ0NvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJuIGVnbENvbnRleHQucmVsZWFzZSgp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYg
VVNFKEdMWCkKICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9IEdMQ29udGV4
dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAg
ICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCisKICNpZiBVU0UoRUdMKQot
ICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVh
dGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorI2lmIFBMQVRGT1JNKFgx
MSkKKyAgICB0eXBlZGVmIEVHTFBsYXRmb3JtWCBFR0xQbGF0Zm9ybUNsYXNzOworI2Vsc2UKKyAg
ICB0eXBlZGVmIEVHTFBsYXRmb3JtRGVmYXVsdCBFR0xQbGF0Zm9ybUNsYXNzOworI2VuZGlmCisg
ICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w8RUdMUGxh
dGZvcm1DbGFzcz46OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkp
CiAgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0VHTFBsYXRmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9FR0xQbGF0Zm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4
NjM0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9FR0xQbGF0Zm9ybS5jcHAKQEAgLTAsMCArMSw4MCBAQAorI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkVHTFBsYXRmb3JtLmgiCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSA8
RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VHTFBsYXRmb3JtOjpFR0xQbGF0
Zm9ybSgpCisgICAgOiBtX2NvbnRleHQoRUdMX05PX0NPTlRFWFQpCisgICAgLCBtX3N1cmZhY2Uo
RUdMX05PX1NVUkZBQ0UpCisgICAgLCBtX3R5cGUoVW5rbm93bikKK3sKK30KKworYm9vbCBFR0xQ
bGF0Zm9ybTo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dCAhPSBFR0xf
Tk9fQ09OVEVYVCAmJiBtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0U7Cit9CisKK0VHTEJvb2xl
YW4gRUdMUGxhdGZvcm06OmNob29zZUNvbmZpZyhFR0xDb25maWcqIGNvbmZpZyAsIEVHTFBsYXRm
b3JtOjpTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkgY29uc3QKK3sKKyAgICBFR0xpbnQgYXR0cmli
dXRlTGlzdFtdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRFUkFC
TEVfVFlQRSwgRUdMX09QRU5HTF9FUzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRFUkFC
TEVfVFlQRSwgRUdMX09QRU5HTF9CSVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4
LAorICAgICAgICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwK
KyAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgs
CisgICAgICAgIEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9ORQor
ICAgIH07CisKKyAgICBzd2l0Y2ggKHN1cmZhY2VUeXBlKSB7CisgICAgY2FzZSBFR0xQbGF0Zm9y
bTo6UGJ1ZmZlclN1cmZhY2U6CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BCVUZG
RVJfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVHTFBsYXRmb3JtOjpQaXhtYXBTdXJm
YWNlOgorICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEVHTFBsYXRmb3JtOjpXaW5kb3dTdXJmYWNlOgorICAgICAgICBh
dHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEVHTFBsYXRmb3JtOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVtYmVyQ29u
Zmlnc1JldHVybmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRGlzcGxheSgp
LCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51
bWJlckNvbmZpZ3NSZXR1cm5lZDsKK30KKworRUdMZW51bSBFR0xQbGF0Zm9ybTo6Z2xBUEkoKSBj
b25zdAoreworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICByZXR1cm4gRUdMX09QRU5HTF9FU19B
UEk7CisjZWxzZQorICAgIHJldHVybiBFR0xfT1BFTkdMX0FQSTsKKyNlbmRpZgorfQorCitFR0xp
bnQqIEVHTFBsYXRmb3JtOjpjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgc3RhdGlj
IEVHTGludCBjb250ZXh0QXR0cmlidXRlc1tdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAg
ICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisjZW5kaWYKKyAgICAgICAgRUdM
X05PTkUKKyAgICB9OworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlczsKK30KKworfTsgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvRUdMUGxhdGZvcm0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMjY4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvRUdMUGxhdGZvcm0uaApAQCAtMCwwICsxLDQx
IEBACisjaWZuZGVmIEVHTFBsYXRmb3JtX2gKKyNkZWZpbmUgRUdMUGxhdGZvcm1faAorCisjaW5j
bHVkZSA8S0hSL2tocnBsYXRmb3JtLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgaW50IEVHTEJvb2xl
YW47Cit0eXBlZGVmIHZvaWQgKkVHTENvbmZpZzsKK3R5cGVkZWYgdm9pZCAqRUdMQ29udGV4dDsK
K3R5cGVkZWYgdm9pZCAqRUdMRGlzcGxheTsKK3R5cGVkZWYgdm9pZCAqRUdMU3VyZmFjZTsKK3R5
cGVkZWYgdW5zaWduZWQgaW50IEVHTGVudW07Cit0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBFR0xp
bnQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRUdMUGxhdGZvcm0geworcHVibGlj
OgorICAgIGVudW0gU3VyZmFjZVR5cGUgeworICAgICAgICBXaW5kb3dTdXJmYWNlLAorICAgICAg
ICBQYnVmZmVyU3VyZmFjZSwKKyAgICAgICAgUGl4bWFwU3VyZmFjZSwKKyAgICAgICAgVW5rbm93
bgorICAgIH07CisKK3Byb3RlY3RlZDoKKyAgICBFR0xQbGF0Zm9ybSgpOworCisgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBFR0xCb29sZWFuIGNob29zZUNvbmZpZyhFR0xDb25maWcq
LCBTdXJmYWNlVHlwZSkgY29uc3Q7CisgICAgdmlydHVhbCBFR0xlbnVtIGdsQVBJKCkgY29uc3Q7
CisgICAgdmlydHVhbCBFR0xpbnQqIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICBF
R0xDb250ZXh0IG1fY29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBTdXJm
YWNlVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRm
b3JtRGVmYXVsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvRUdM
UGxhdGZvcm1EZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
YzY4ZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0VHTFBsYXRmb3JtRGVmYXVsdC5jcHAKQEAgLTAsMCArMSw5NCBAQAorI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkVHTFBsYXRmb3JtRGVmYXVsdC5oIgorCisjaWYgVVNFKEVH
TCkKKworI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitFR0xQbGF0Zm9ybURlZmF1bHQ6OkVHTFBsYXRmb3JtRGVm
YXVsdChFR0xQbGF0Zm9ybURlZmF1bHQ6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBF
R0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIGlmIChzaGFyZWREaXNwbGF5KCkgPT0g
RUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjcmVhdGVXaW5kb3dT
dXJmYWNlKG5hdGl2ZVdpbmRvdywgc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGNyZWF0ZVBidWZmZXJTdXJmYWNlKHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKG1fY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCk7CisgICAgQVNT
RVJUKG1fc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSk7Cit9CisKK0VHTERpc3BsYXkgRUdMUGxh
dGZvcm1EZWZhdWx0OjpzaGFyZWREaXNwbGF5KCkgY29uc3QKK3sKKyAgICBzdGF0aWMgRUdMRGlz
cGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGlu
aXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlz
cGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkg
IT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAs
IDApIHx8ICFlZ2xCaW5kQVBJKGdsQVBJKCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3Bs
YXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxh
eTsKK30KKworYm9vbCBFR0xQbGF0Zm9ybURlZmF1bHQ6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoRUdM
UGxhdGZvcm1EZWZhdWx0OjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9O
T19ESVNQTEFZKTsKKworICAgIGlmICghbmF0aXZlV2luZG93KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmVn
bENvbmZpZywgRUdMUGxhdGZvcm06OldpbmRvd1N1cmZhY2UpICE9IEVHTF9UUlVFKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250
ZXh0KHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0
dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRv
d1N1cmZhY2Uoc2hhcmVkRGlzcGxheSgpLCBlZ2xDb25maWcsIG5hdGl2ZVdpbmRvdywgMCk7Cisg
ICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNv
bnRleHQoc2hhcmVkRGlzcGxheSgpLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFj
ZTsKKyAgICBtX3R5cGUgPSBFR0xQbGF0Zm9ybTo6V2luZG93U3VyZmFjZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBFR0xQbGF0Zm9ybURlZmF1bHQ6OmNyZWF0ZVBidWZmZXJTdXJmYWNl
KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKHNoYXJlZERpc3BsYXko
KSAhPSBFR0xfTk9fRElTUExBWSk7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlm
IChjaG9vc2VDb25maWcoJmVnbENvbmZpZywgRUdMUGxhdGZvcm06OlBidWZmZXJTdXJmYWNlKSAh
PSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250
ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgc2hhcmlu
Z0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9O
T19DT05URVhUKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgaW50
IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdM
X05PTkUgfTsKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFj
ZShzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIGlm
IChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0
KHNoYXJlZERpc3BsYXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7Cisg
ICAgbV90eXBlID0gRUdMUGxhdGZvcm06OlBidWZmZXJTdXJmYWNlOworICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRmb3Jt
RGVmYXVsdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRm
b3JtRGVmYXVsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZTAxOTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
RUdMUGxhdGZvcm1EZWZhdWx0LmgKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBFR0xQbGF0Zm9y
bURlZmF1bHRfaAorI2RlZmluZSBFR0xQbGF0Zm9ybURlZmF1bHRfaAorCisjaWYgVVNFKEVHTCkK
KworI2luY2x1ZGUgIkVHTFBsYXRmb3JtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRUdMUGxhdGZvcm1EZWZhdWx0IDogcHJvdGVjdGVkIEVHTFBsYXRmb3JtIHsKK3Byb3RlY3Rl
ZDoKKyAgICB0eXBlZGVmIHVpbnQ2NF90IE5hdGl2ZVdpbmRvd1R5cGU7CisKKyAgICBFR0xQbGF0
Zm9ybURlZmF1bHQoTmF0aXZlV2luZG93VHlwZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7
CisKKyAgICB2aXJ0dWFsIEVHTERpc3BsYXkgc2hhcmVkRGlzcGxheSgpIGNvbnN0IE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIGJvb2wgY3JlYXRlV2luZG93U3VyZmFjZShOYXRpdmVXaW5kb3dU
eXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBib29sIGNyZWF0ZVBidWZmZXJT
dXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkKKworI2VuZGlmIC8vIEVHTFBsYXRmb3JtRGVm
YXVsdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
RUdMUGxhdGZvcm1XYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9FR0xQbGF0Zm9ybVdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUwODRjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvRUdMUGxhdGZvcm1XYXlsYW5kLmNwcApAQCAtMCwwICsxLDkxIEBACisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUdMUGxhdGZvcm1XYXlsYW5kLmgiCisKKyNp
ZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wu
aD4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8
Z2RrL2dkay5oPgorI2lmZGVmIEdES19XSU5ET1dJTkdfV0FZTEFORAorI2luY2x1ZGUgPGdkay9n
ZGt3YXlsYW5kLmg+CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VH
TFBsYXRmb3JtV2F5bGFuZDo6RUdMUGxhdGZvcm1XYXlsYW5kKEVHTFBsYXRmb3JtV2F5bGFuZDo6
TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQp
Cit7CisgICAgaWYgKHNoYXJlZERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoY2hvb3NlQ29uZmlnKCZj
b25maWcsIEVHTFBsYXRmb3JtOjpXaW5kb3dTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFy
ZWREaXNwbGF5KCksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkp
OworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm47CisK
KyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBjcmVhdGVTdXJmYWNlKDAsIGNvbmZpZyk7CisgICAg
aWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRl
eHQoc2hhcmVkRGlzcGxheSgpLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBt
X3R5cGUgPSBFR0xQbGF0Zm9ybTo6V2luZG93U3VyZmFjZTsKK30KKworRUdMRGlzcGxheSBFR0xQ
bGF0Zm9ybVdheWxhbmQ6OnNoYXJlZERpc3BsYXkoKSBjb25zdAoreworICAgIHN0YXRpYyBFR0xE
aXNwbGF5IHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOworCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19X
SU5ET1dJTkdfV0FZTEFORCkKKyAgICAgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNw
bGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgp
KTsKKyAgICAgICAgQVNTRVJUKEdES19JU19XQVlMQU5EX0RJU1BMQVkoZGlzcGxheSkpOworICAg
ICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5ID0gZ2RrX3dheWxhbmRfZGlzcGxheV9n
ZXRfd2xfZGlzcGxheShkaXNwbGF5KTsKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IGVnbEdl
dERpc3BsYXkod2xEaXNwbGF5KTsKKyNlbmRpZgorCisgICAgICAgIGlmIChzaGFyZWRFR0xEaXNw
bGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShzaGFyZWRFR0xEaXNwbGF5
LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnbEFQSSgpKSkpCisgICAgICAgICAgICBzaGFyZWRFR0xE
aXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorCisgICAgcmV0dXJuIHNoYXJlZEVHTERp
c3BsYXk7Cit9CisKK0VHTFN1cmZhY2UgRUdMUGxhdGZvcm1XYXlsYW5kOjpjcmVhdGVTdXJmYWNl
KEVHTFBsYXRmb3JtV2F5bGFuZDo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVHTENv
bmZpZyBjb25maWcpCit7CisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJ
TkdfV0FZTEFORCkKKyAgICBBU1NFUlQoIW5hdGl2ZVdpbmRvdyk7CisKKyAgICBHZGtEaXNwbGF5
KiBnZGtEaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdk
a19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworICAgIEFTU0VSVChHREtfSVNfV0FZTEFORF9ESVNQ
TEFZKGdka0Rpc3BsYXkpKTsKKworICAgIHN0cnVjdCB3bF9jb21wb3NpdG9yKiB3bENvbXBvc2l0
b3IgPSBnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9jb21wb3NpdG9yKGdka0Rpc3BsYXkpOwor
ICAgIGlmICghd2xDb21wb3NpdG9yKQorICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisK
KyAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogd2xTdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVf
c3VyZmFjZSh3bENvbXBvc2l0b3IpOworICAgIGlmICghd2xTdXJmYWNlKQorICAgICAgICByZXR1
cm4gRUdMX05PX1NVUkZBQ0U7CisKKyAgICBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyogZWdsV2luZG93
ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJmYWNlLCAwLCAwKTsKKyAgICBpZiAoIWVnbFdp
bmRvdykKKyAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworCisgICAgcmV0dXJuIGVnbENy
ZWF0ZVdpbmRvd1N1cmZhY2Uoc2hhcmVkRGlzcGxheSgpLCBjb25maWcsIGVnbFdpbmRvdywgMCk7
CisjZWxzZQorICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5E
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBs
YXRmb3JtV2F5bGFuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VH
TFBsYXRmb3JtV2F5bGFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3
ZDU1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvRUdMUGxhdGZvcm1XYXlsYW5kLmgKQEAgLTAsMCArMSwyOCBAQAorI2lmbmRlZiBFR0xQ
bGF0Zm9ybVdheWxhbmRfaAorI2RlZmluZSBFR0xQbGF0Zm9ybVdheWxhbmRfaAorCisjaWYgVVNF
KEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIkVHTFBsYXRmb3JtLmgiCisK
K3N0cnVjdCB3bF9lZ2xfd2luZG93OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVH
TFBsYXRmb3JtV2F5bGFuZCA6IHByb3RlY3RlZCBFR0xQbGF0Zm9ybSB7Citwcm90ZWN0ZWQ6Cisg
ICAgdHlwZWRlZiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyogTmF0aXZlV2luZG93VHlwZTsKKworICAg
IEVHTFBsYXRmb3JtV2F5bGFuZChOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KTsKKworICAgIHZpcnR1YWwgRUdMRGlzcGxheSBzaGFyZWREaXNwbGF5KCkgY29uc3Qg
T1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgRUdMU3VyZmFjZSBjcmVhdGVTdXJmYWNlKE5hdGl2
ZVdpbmRvd1R5cGUsIEVHTENvbmZpZyk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQorCisjZW5kaWYgLy8gRUdM
UGxhdGZvcm1XYXlsYW5kX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9FR0xQbGF0Zm9ybVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0VHTFBsYXRmb3JtWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjlkNjA2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybVguY3BwCkBAIC0wLDAgKzEsMTMyIEBACisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUdMUGxhdGZvcm1YLmgiCisKKyNpZiBVU0UoRUdMKSAm
JiBQTEFURk9STShYMTEpCisKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKyNpbmNsdWRlIDxF
R0wvZWdsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRUdMUGxhdGZvcm1YOjpFR0xQbGF0
Zm9ybVgoRUdMUGxhdGZvcm1YOjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBpZiAoc2hhcmVkRGlzcGxheSgpID09IEVHTF9O
T19ESVNQTEFZKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY3JlYXRlV2luZG93U3VyZmFj
ZShuYXRpdmVXaW5kb3csIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChjcmVhdGVQYnVmZmVyU3VyZmFjZShzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoY3JlYXRlUGl4bWFwU3VyZmFjZShzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEFTU0VSVChtX2NvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpOworICAgIEFT
U0VSVChtX3N1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpOworfQorCitFR0xEaXNwbGF5IEVHTFBs
YXRmb3JtWDo6c2hhcmVkRGlzcGxheSgpIGNvbnN0Cit7CisgICAgc3RhdGljIEVHTERpc3BsYXkg
c2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7CisKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXko
R0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworICAgICAgICBpZiAoc2hhcmVkRUdMRGlz
cGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoc2hhcmVkRUdMRGlzcGxh
eSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ2xBUEkoKSkpKQorICAgICAgICAgICAgc2hhcmVkRUdM
RGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKworICAgIHJldHVybiBzaGFyZWRFR0xE
aXNwbGF5OworfQorCitib29sIEVHTFBsYXRmb3JtWDo6Y3JlYXRlV2luZG93U3VyZmFjZShFR0xQ
bGF0Zm9ybVg6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb250ZXh0IHNoYXJp
bmdDb250ZXh0KQoreworICAgIEFTU0VSVChzaGFyZWREaXNwbGF5KCkgIT0gRUdMX05PX0RJU1BM
QVkpOworCisgICAgaWYgKCFuYXRpdmVXaW5kb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNvbmZpZygmZWdsQ29uZmln
LCBFR0xQbGF0Zm9ybTo6V2luZG93U3VyZmFjZSkgIT0gRUdMX1RSVUUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoc2hh
cmVkRGlzcGxheSgpLCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRl
cygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFj
ZShzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgbmF0aXZlV2luZG93LCAwKTsKKyAgICBpZiAo
c3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChz
aGFyZWREaXNwbGF5KCksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgbV9jb250ZXh0ID0gY29udGV4dDsKKyAgICBtX3N1cmZhY2UgPSBzdXJmYWNlOworICAg
IG1fdHlwZSA9IEVHTFBsYXRmb3JtOjpXaW5kb3dTdXJmYWNlOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEVHTFBsYXRmb3JtWDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9OT19E
SVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNvbmZp
ZygmZWdsQ29uZmlnLCBFR0xQbGF0Zm9ybTo6UGJ1ZmZlclN1cmZhY2UpICE9IEVHTF9UUlVFKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29u
dGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJp
YnV0ZXNbXSA9IHsgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OworICAg
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKHNoYXJlZERpc3Bs
YXkoKSwgZWdsQ29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7CisgICAgaWYgKHN1cmZhY2UgPT0g
RUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoc2hhcmVkRGlzcGxh
eSgpLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fY29u
dGV4dCA9IGNvbnRleHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBtX3R5cGUgPSBF
R0xQbGF0Zm9ybTo6UGJ1ZmZlclN1cmZhY2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
RUdMUGxhdGZvcm1YOjpjcmVhdGVQaXhtYXBTdXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCit7CisgICAgQVNTRVJUKHNoYXJlZERpc3BsYXkoKSAhPSBFR0xfTk9fRElTUExBWSk7CisK
KyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmVnbENvbmZp
ZywgRUdMUGxhdGZvcm06OlBpeG1hcFN1cmZhY2UpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KHNo
YXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0
ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEVHTGludCBkZXB0aDsKKyAgICBpZiAoZWdsR2V0Q29uZmlnQXR0cmli
KHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSAhPSBF
R0xfVFJVRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChzaGFyZWREaXNwbGF5KCksIGNv
bnRleHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUGl4bWFwIHBpeG1h
cCA9IFhDcmVhdGVQaXhtYXAoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1bHRS
b290V2luZG93KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwgZGVwdGgpOwor
ICAgIGlmICghcGl4bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3Bs
YXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBFR0xT
dXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKHNoYXJlZERpc3BsYXkoKSwg
ZWdsQ29uZmlnLCBwaXhtYXAsIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNF
KSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgY29udGV4dCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0
OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gRUdMUGxhdGZvcm06OlBp
eG1hcFN1cmZhY2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybVguaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9FR0xQbGF0Zm9ybVguaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDVhZTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0VHTFBsYXRmb3JtWC5oCkBAIC0wLDAg
KzEsMjggQEAKKyNpZm5kZWYgRUdMUGxhdGZvcm1YX2gKKyNkZWZpbmUgRUdMUGxhdGZvcm1YX2gK
KworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKKworI2luY2x1ZGUgIkVHTFBsYXRmb3Jt
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRUdMUGxhdGZvcm1YIDogcHJvdGVj
dGVkIEVHTFBsYXRmb3JtIHsKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIHVpbnQ2NF90IE5hdGl2
ZVdpbmRvd1R5cGU7CisKKyAgICBFR0xQbGF0Zm9ybVgoTmF0aXZlV2luZG93VHlwZSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCk7CisKKyAgICB2aXJ0dWFsIEVHTERpc3BsYXkgc2hhcmVkRGlz
cGxheSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGJvb2wgY3JlYXRlV2luZG93
U3VyZmFjZShOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAg
ICBib29sIGNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwor
ICAgIGJvb2wgY3JlYXRlUGl4bWFwU3VyZmFjZShFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBM
QVRGT1JNKFdBWUxBTkQpCisKKyNlbmRpZiAvLyBFR0xQbGF0Zm9ybVhfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRl
eCAzZDViZTIzLi40MjQyMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMjEsNyArMjEsMTEgQEAKIAogI2lm
IFVTRShFR0wpCiAKKyNpbmNsdWRlICJFR0xQbGF0Zm9ybURlZmF1bHQuaCIKKyNpbmNsdWRlICJF
R0xQbGF0Zm9ybVdheWxhbmQuaCIKKyNpbmNsdWRlICJFR0xQbGF0Zm9ybVguaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCkBAIC00MSwxNTcgKzQ1LDEwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEVHTERpc3BsYXkgZ1NoYXJlZEVHTERpc3BsYXkg
PSBFR0xfTk9fRElTUExBWTsKLQotI2lmIFVTRShPUEVOR0xfRVNfMikKLXN0YXRpYyBjb25zdCBF
R0xlbnVtIGdHTEFQSSA9IEVHTF9PUEVOR0xfRVNfQVBJOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBF
R0xlbnVtIGdHTEFQSSA9IEVHTF9PUEVOR0xfQVBJOwotI2VuZGlmCi0KLXN0YXRpYyBFR0xEaXNw
bGF5IHNoYXJlZEVHTERpc3BsYXkoKQordGVtcGxhdGU8Y2xhc3MgRUdMUGxhdGZvcm1DbGFzcz4K
K1Bhc3NPd25QdHI8R0xDb250ZXh0RUdMPEVHTFBsYXRmb3JtQ2xhc3M+ID4gR0xDb250ZXh0RUdM
PEVHTFBsYXRmb3JtQ2xhc3M+OjpjcmVhdGVDb250ZXh0KHR5cGVuYW1lIEVHTFBsYXRmb3JtQ2xh
c3M6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0KQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKCFp
bml0aWFsaXplZCkgewotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0jaWYgUExBVEZPUk0o
WDExKQotICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0
OjpzaGFyZWRYMTFEaXNwbGF5KCkpOwotI2Vsc2UKLSAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkg
PSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwotI2VuZGlmCi0gICAgICAgIGlm
IChnU2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUo
Z1NoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdHTEFQSSkpKQotICAgICAg
ICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLSAgICB9Ci0gICAgcmV0
dXJuIGdTaGFyZWRFR0xEaXNwbGF5OwotfQotCi1zdGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0
QXR0cmlidXRlc1tdID0gewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICBFR0xfQ09OVEVYVF9D
TElFTlRfVkVSU0lPTiwgMiwKLSNlbmRpZgotICAgIEVHTF9OT05FCi19OwotCi1zdGF0aWMgYm9v
bCBnZXRFR0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFj
ZVR5cGUgc3VyZmFjZVR5cGUpCi17Ci0gICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKLSNp
ZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVO
R0xfRVMyX0JJVCwKLSNlbHNlCi0gICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVO
R0xfQklULAotI2VuZGlmCi0gICAgICAgIEVHTF9SRURfU0laRSwgOCwKLSAgICAgICAgRUdMX0dS
RUVOX1NJWkUsIDgsCi0gICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCi0gICAgICAgIEVHTF9TVEVO
Q0lMX1NJWkUsIDgsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAotICAgICAgICBFR0xfU1VS
RkFDRV9UWVBFLCBFR0xfTk9ORSwKLSAgICAgICAgRUdMX05PTkUKLSAgICB9OwotCi0gICAgc3dp
dGNoIChzdXJmYWNlVHlwZSkgewotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFj
ZToKLSAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUEJVRkZFUl9CSVQ7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQaXhtYXBTdXJmYWNlOgotICAgICAgICBh
dHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEdMQ29udGV4dEVHTDo6V2luZG93U3VyZmFjZToKLSAgICAgICAgYXR0cmlidXRlTGlzdFsx
M10gPSBFR0xfV0lORE9XX0JJVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgRUdMaW50
IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKLSAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNoYXJl
ZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1Jl
dHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7Ci19Ci0KLVBhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMQ29udGV4
dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250
ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwotCi0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbmZpZyBjb25m
aWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJp
YnV0ZXMpOwotICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1
cmZhY2UoZGlzcGxheSwgY29uZmlnLCB3aW5kb3csIDApOwotICAgIGlmIChzdXJmYWNlID09IEVH
TF9OT19TVVJGQUNFKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpKTsK
LX0KLQotUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKLXsKLSAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJ
U1BMQVkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29uZmlnIGNvbmZpZzsK
LSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29u
dGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMp
OwotICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdM
X1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OwotICAgIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1ZmZlckF0
dHJpYnV0ZXMpOwotICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7Ci0gICAgICAg
IGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250
ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOwotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQpCi17Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9
IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlm
ICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlz
cGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBp
ZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBFR0xpbnQgZGVwdGg7Ci0gICAgaWYgKCFlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwg
Y29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChzaGFyZWRYMTFEaXNwbGF5KCks
IERlZmF1bHRSb290V2luZG93KHNoYXJlZFgxMURpc3BsYXkoKSksIDEsIDEsIGRlcHRoKTsKLSAg
ICBpZiAoIXBpeG1hcCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xTdXJmYWNl
IHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGl4bWFw
LCAwKTsKLQotICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRl
eHQsIHN1cmZhY2UsIFBpeG1hcFN1cmZhY2UpKTsKLSNlbHNlCi0gICAgcmV0dXJuIG51bGxwdHI7
Ci0jZW5kaWYKLX0KLQotUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCkKLXsKLSAgICBpZiAoIXNoYXJlZEVHTERpc3BsYXkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgIHN0
YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICNpZiAh
VVNFKE9QRU5HTF9FU18yKQpAQCAtMjAyLDEwMiArNTksMTE1IEBAIFBhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3csCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19j
YXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBP
d25QdHI8R0xDb250ZXh0RUdMPiBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4
dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7Ci0gICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7
CisgICAgT3duUHRyPEdMQ29udGV4dEVHTDxFR0xQbGF0Zm9ybUNsYXNzPiA+IGNvbnRleHQgPSBh
ZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMPEVHTFBsYXRmb3JtQ2xhc3M+KG5hdGl2ZVdpbmRvdywg
c2hhcmluZ0NvbnRleHQpKTsKKyAgICBpZiAoY29udGV4dC0+aXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CiAKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNv
bnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Ci0gICAgCi0g
ICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1H
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQot
ICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCi0gICAgLCBtX3R5cGUodHlwZSkKK3RlbXBsYXRlPGNs
YXNzIEVHTFBsYXRmb3JtQ2xhc3M+CitHTENvbnRleHRFR0w8RUdMUGxhdGZvcm1DbGFzcz46OkdM
Q29udGV4dEVHTCh0eXBlbmFtZSBFR0xQbGF0Zm9ybUNsYXNzOjpOYXRpdmVXaW5kb3dUeXBlIG5h
dGl2ZVdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKKyAgICA6IEVHTFBsYXRmb3Jt
Q2xhc3MobmF0aXZlV2luZG93LCBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4
dEVHTDxFR0xQbGF0Zm9ybUNsYXNzPio+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMCkK
ICAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKIHsKIH0KIAotR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0
RUdMKCkKK3RlbXBsYXRlPGNsYXNzIEVHTFBsYXRmb3JtQ2xhc3M+CitHTENvbnRleHRFR0w8RUdM
UGxhdGZvcm1DbGFzcz46On5HTENvbnRleHRFR0woKQogewogI2lmIFVTRShDQUlSTykKICAgICBp
ZiAobV9jYWlyb0RldmljZSkKICAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0Rl
dmljZSk7CiAjZW5kaWYKIAotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3Bs
YXkoKTsKLSAgICBpZiAobV9jb250ZXh0KSB7CisgICAgaWYgKEVHTFBsYXRmb3JtQ2xhc3M6Om1f
Y29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkgewogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9O
T19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xE
ZXN0cm95Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOworICAgICAgICBlZ2xNYWtlQ3VycmVu
dChFR0xQbGF0Zm9ybUNsYXNzOjpzaGFyZWREaXNwbGF5KCksIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChF
R0xQbGF0Zm9ybUNsYXNzOjpzaGFyZWREaXNwbGF5KCksIEVHTFBsYXRmb3JtQ2xhc3M6Om1fY29u
dGV4dCk7CiAgICAgfQogCi0gICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgZWdsRGVzdHJveVN1
cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICBpZiAoRUdMUGxhdGZvcm1DbGFzczo6bV9z
dXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQorICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShFR0xQ
bGF0Zm9ybUNsYXNzOjpzaGFyZWREaXNwbGF5KCksIEVHTFBsYXRmb3JtQ2xhc3M6Om1fc3VyZmFj
ZSk7CiB9CiAKLWJvb2wgR0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZl
cigpCit0ZW1wbGF0ZTxjbGFzcyBFR0xQbGF0Zm9ybUNsYXNzPgorYm9vbCBHTENvbnRleHRFR0w8
RUdMUGxhdGZvcm1DbGFzcz46OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKIHsKLSAg
ICByZXR1cm4gbV90eXBlID09IFdpbmRvd1N1cmZhY2U7CisgICAgcmV0dXJuIEVHTFBsYXRmb3Jt
Q2xhc3M6Om1fdHlwZSA9PSBFR0xQbGF0Zm9ybTo6V2luZG93U3VyZmFjZTsKIH0KIAotSW50U2l6
ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQordGVtcGxhdGU8Y2xhc3Mg
RUdMUGxhdGZvcm1DbGFzcz4KK0ludFNpemUgR0xDb250ZXh0RUdMPEVHTFBsYXRmb3JtQ2xhc3M+
OjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKIHsKICAgICBpZiAoIWNhblJlbmRlclRvRGVmYXVs
dEZyYW1lYnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICBFR0xpbnQg
d2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5
KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAgIHx8ICFlZ2xRdWVyeVN1
cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQp
KQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKEVHTFBsYXRmb3JtQ2xhc3M6OnNoYXJlZERpc3Bs
YXkoKSwgRUdMUGxhdGZvcm1DbGFzczo6bV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAg
ICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShFR0xQbGF0Zm9ybUNsYXNzOjpzaGFyZWREaXNwbGF5
KCksIEVHTFBsYXRmb3JtQ2xhc3M6Om1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCiAg
ICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKIH0KIAotYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCit0ZW1w
bGF0ZTxjbGFzcyBFR0xQbGF0Zm9ybUNsYXNzPgorYm9vbCBHTENvbnRleHRFR0w8RUdMUGxhdGZv
cm1DbGFzcz46Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAm
JiBtX3N1cmZhY2UpOworICAgIEFTU0VSVChFR0xQbGF0Zm9ybUNsYXNzOjptX2NvbnRleHQpOwor
ICAgIEFTU0VSVChFR0xQbGF0Zm9ybUNsYXNzOjptX3N1cmZhY2UpOwogCiAgICAgR0xDb250ZXh0
OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9
PSBtX2NvbnRleHQpCisgICAgaWYgKGVnbEdldEN1cnJlbnRDb250ZXh0KCkgPT0gRUdMUGxhdGZv
cm1DbGFzczo6bV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBl
Z2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBt
X2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChFR0xQbGF0Zm9ybUNsYXNzOjpz
aGFyZWREaXNwbGF5KCksIEVHTFBsYXRmb3JtQ2xhc3M6Om1fc3VyZmFjZSwgRUdMUGxhdGZvcm1D
bGFzczo6bV9zdXJmYWNlLCBFR0xQbGF0Zm9ybUNsYXNzOjptX2NvbnRleHQpOwogfQogCi12b2lk
IEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQordGVtcGxhdGU8Y2xhc3MgRUdMUGxhdGZvcm1D
bGFzcz4KK3ZvaWQgR0xDb250ZXh0RUdMPEVHTFBsYXRmb3JtQ2xhc3M+Ojpzd2FwQnVmZmVycygp
CiB7Ci0gICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hhcmVkRUdM
RGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIEFTU0VSVChFR0xQbGF0Zm9ybUNsYXNzOjptX3N1
cmZhY2UpOworICAgIGVnbFN3YXBCdWZmZXJzKEVHTFBsYXRmb3JtQ2xhc3M6OnNoYXJlZERpc3Bs
YXkoKSwgRUdMUGxhdGZvcm1DbGFzczo6bV9zdXJmYWNlKTsKIH0KIAotdm9pZCBHTENvbnRleHRF
R0w6OndhaXROYXRpdmUoKQordGVtcGxhdGU8Y2xhc3MgRUdMUGxhdGZvcm1DbGFzcz4KK3ZvaWQg
R0xDb250ZXh0RUdMPEVHTFBsYXRmb3JtQ2xhc3M+Ojp3YWl0TmF0aXZlKCkKIHsKICAgICBlZ2xX
YWl0TmF0aXZlKEVHTF9DT1JFX05BVElWRV9FTkdJTkUpOwogfQogCi1jYWlyb19kZXZpY2VfdCog
R0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCit0ZW1wbGF0ZTxjbGFzcyBFR0xQbGF0Zm9ybUNs
YXNzPgorY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDxFR0xQbGF0Zm9ybUNsYXNzPjo6Y2Fp
cm9EZXZpY2UoKQogewogICAgIGlmIChtX2NhaXJvRGV2aWNlKQogICAgICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgbV9j
YWlyb0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZEVHTERpc3BsYXkoKSwg
bV9jb250ZXh0KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUo
RUdMUGxhdGZvcm1DbGFzczo6c2hhcmVkRGlzcGxheSgpLCBFR0xQbGF0Zm9ybUNsYXNzOjptX2Nv
bnRleHQpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKIH0KIAotI2lmIEVO
QUJMRShXRUJHTCkKLVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR0xDb250ZXh0RUdMOjpwbGF0
Zm9ybUNvbnRleHQoKQorI2lmIFVTRSgzRF9HUkFQSElDUykKK3RlbXBsYXRlPGNsYXNzIEVHTFBs
YXRmb3JtQ2xhc3M+CitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDxFR0xQ
bGF0Zm9ybUNsYXNzPjo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9jb250ZXh0
OworICAgIHJldHVybiBFR0xQbGF0Zm9ybUNsYXNzOjptX2NvbnRleHQ7CiB9CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCit0ZW1wbGF0ZSBjbGFzcyBHTENvbnRleHRFR0w8RUdMUGxh
dGZvcm1XYXlsYW5kPjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFgxMSkKK3RlbXBsYXRlIGNsYXNz
IEdMQ29udGV4dEVHTDxFR0xQbGF0Zm9ybVg+OworI2VuZGlmCisjaWYgIVBMQVRGT1JNKFdBWUxB
TkQpICYmICFQTEFURk9STShYMTEpCit0ZW1wbGF0ZSBjbGFzcyBHTENvbnRleHRFR0w8RUdMUGxh
dGZvcm1EZWZhdWx0PjsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBVU0UoRUdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5oCmluZGV4IDc1MTZjNjkuLjc4Y2I1OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTIy
LDE4ICsyMiwxOSBAQAogCiAjaWYgVVNFKEVHTCkKIAorI2luY2x1ZGUgIkVHTFBsYXRmb3JtLmgi
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAKLSNpbmNsdWRlIDxFR0wvZWdsLmg+Cit0eXBlZGVm
IHZvaWQgKkVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7Cit0
ZW1wbGF0ZTxjbGFzcyBFR0xQbGF0Zm9ybUNsYXNzPgorY2xhc3MgR0xDb250ZXh0RUdMIDogcHVi
bGljIEdMQ29udGV4dCwgcHJvdGVjdGVkIEVHTFBsYXRmb3JtQ2xhc3MgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEdMQ29udGV4dEVHTCk7CiBwdWJsaWM6Ci0gICAgZW51bSBFR0xTdXJmYWNl
VHlwZSB7IFBidWZmZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2
ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsKLSAgICBzdGF0aWMg
UGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2lu
ZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KHR5cGVuYW1lIEVHTFBsYXRmb3JtQ2xhc3M6
Ok5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsKIAogICAg
IHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKQEAgLTQzLDIyICs0NCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRTaXpl
IGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKICAgICB2aXJ0dWFsIGNhaXJvX2RldmljZV90KiBj
YWlyb0RldmljZSgpOwogCi0jaWYgRU5BQkxFKFdFQkdMKQorI2lmIFVTRSgzRF9HUkFQSElDUykK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+
IGNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwotICAgIHN0
YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250
ZXh0IHNoYXJpbmdDb250ZXh0KTsKLQogICAgIHN0YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQo
R0xDb250ZXh0RUdMKik7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZEVHTERpc3BsYXko
dm9pZCk7CiAKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgRUdMU3Vy
ZmFjZVR5cGUpOworICAgIEdMQ29udGV4dEVHTCh0eXBlbmFtZSBFR0xQbGF0Zm9ybUNsYXNzOjpO
YXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyAgICBib29sIGlz
VmFsaWQoKSB7IHJldHVybiBFR0xQbGF0Zm9ybUNsYXNzOjppc1ZhbGlkKCk7IH0KIAotICAgIEVH
TENvbnRleHQgbV9jb250ZXh0OwotICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOwotICAgIEVHTFN1
cmZhY2VUeXBlIG1fdHlwZTsKICAgICBjYWlyb19kZXZpY2VfdCogbV9jYWlyb0RldmljZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNl
L1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggNTIwYzg0Yy4uM2ZiNWQ5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktp
dC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTEyNSw2ICsxMjUsNyBAQCBsaWJ3ZWJraXRndGtfQFdF
QktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBf
bGFfTElCQQogCSQoUE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9M
SUJTKSBcCisJJChXQVlMQU5EX0NMSUVOVF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhD
T01QT1NJVEVfTElCUykgXAogCSQoWERBTUFHRV9MSUJTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDYyNDc0MTEuLjNhZTk3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDgsNiArMjQ4
LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lU
R1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJVEUz
X0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoV0FZTEFORF9DTElFTlRfTElCUykgXAog
CSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykg
XApAQCAtNTI0LDcgKzUyNSw4IEBAIGxpYlBsYXRmb3JtR3RrMl9sYV9DUFBGTEFHUyA9IFwKIAkk
KEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUSzJfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZM
QUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlM
QU5EX0NMSUVOVF9DRkxBR1MpCiAKICMgSW5qZWN0ZWQgQnVuZGxlCiBpbmplY3RlZGJ1bmRsZWRp
ciA9ICQobGliZGlyKS93ZWJraXQyZ3RrLTMuMC9pbmplY3RlZC1idW5kbGUKQEAgLTY3NCw2ICs2
NzYsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xEQUREID0gXAogCSQoU0hNX0xJ
QlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChXQVlMQU5E
X0NMSUVOVF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQo
WFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVz
Lm00IGIvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CmluZGV4IDVmOTViNzAu
LjdhOTZjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5t
NAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKQEAgLTE4MSwxMiAr
MTgxLDE5IEBAIGVsc2UKICAgICAgICAgQUNfU1VCU1QoW1hUX0NGTEFHU10pCiAgICAgICAgIEFD
X1NVQlNUKFtYVF9MSUJTXSkKICAgIGZpCisKKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR1RLX1dB
WUxBTkRdLCBbZ3RrKy13YXlsYW5kLSRHVEtfQVBJX1ZFUlNJT05dLCBbaGF2ZV9ndGtfd2F5bGFu
ZD15ZXNdLCBbaGF2ZV9ndGtfd2F5bGFuZD1ub10pCiBmaQogQUNfU1VCU1QoR1RLX0NGTEFHUykK
IEFDX1NVQlNUKEdUS19MSUJTKQogQUNfU1VCU1QoQ0FJUk9fQ0ZMQUdTKQogQUNfU1VCU1QoQ0FJ
Uk9fTElCUykKIAoraWYgdGVzdCAiJGhhdmVfZ3RrX3dheWxhbmQiID0gInllcyI7IHRoZW4KKyAg
ICBQS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9DTElFTlRdLCBbd2F5bGFuZC1jbGllbnQgd2F5
bGFuZC1lZ2xdKQorICAgIEFDX1NVQlNUKFdBWUxBTkRfQ0xJRU5UX0NGTEFHUykKKyAgICBBQ19T
VUJTVChXQVlMQU5EX0NMSUVOVF9MSUJTKQorZmkKIAogZm91bmRfb3BlbmdsPW5vCiBoYXZlX2ds
eD1ubwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9jb25mSGVhZGVyLm00
IGIvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9jb25mSGVhZGVyLm00CmluZGV4IDBmODQzNmMu
Ljc2MDQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvY29uZkhlYWRl
ci5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b2NvbmZIZWFkZXIubTQKQEAgLTQz
LDYgKzQzLDEwIEBAIGZpCiBpZiB0ZXN0ICIkd2l0aF90YXJnZXQiID0gIngxMSI7IHRoZW4KICAg
ICBBQ19ERUZJTkUoW01PWl9YMTFdLCBbMV0sIFsgXSkKICAgICBBQ19ERUZJTkUoW1dURl9QTEFU
Rk9STV9YMTFdLCBbMV0sIFtEZWZpbmUgaWYgdGFyZ2V0IGlzIFgxMV0pCisKKyAgICBpZiB0ZXN0
ICIkaGF2ZV9ndGtfd2F5bGFuZCIgPSAieWVzIjsgdGhlbgorICAgICAgICBBQ19ERUZJTkUoW1dU
Rl9QTEFURk9STV9XQVlMQU5EXSwgWzFdLCBbRGVmaW5lIGlmIFdheWxhbmQgc3VwcG9ydCBpcyBw
cmVzZW50XSkKKyAgICBmaQogZmkKIAogaWYgdGVzdCAiJGVuYWJsZV9mYXN0X21hbGxvYyIgPSAi
bm8iOyB0aGVuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDNmMjRiMTMuLjg3ZDE5N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDEsNiArMjAxLDcgQEAg
UHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfTERBREQgPSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKExJ
QlNPVVBfTElCUykgXAogCSQoRlJFRVRZUEVfTElCUykgXAorCSQoV0FZTEFORF9DTElFTlRfTElC
UykgXAogCSQoV0lOTU1fTElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggYTNiM2Y5OC4uMDZjMDI2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjAsNiArMTYwLDcgQEAgUHJvZ3JhbXNfVGVz
dFdlYktpdEFQSV9UZXN0V2ViQ29yZV9MREFERCA9IFwKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJ
VEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoV0FZTEFORF9DTElFTlRfTElCUykg
XAogCSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207411</attachid>
            <date>2013-07-24 14:19:44 -0700</date>
            <delta_ts>2013-08-23 13:27:02 -0700</delta_ts>
            <desc>All changes, RFC version #2</desc>
            <filename>refactored</filename>
            <type>text/plain</type>
            <size>34132</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0
Zm9ybS9HTlVtYWtlZmlsZS5hbQppbmRleCAzNTg4NDQ3Li41MDkwNDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMTksNyArMTE5LDggQEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1Mg
PSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNS
RVRfQ0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJ
JChXQVlMQU5EX0NMSUVOVF9DRkxBR1MpCiAKIERlcml2ZWRTb3VyY2VzL1BsYXRmb3JtL0NvbG9y
RGF0YS5jcHA6ICQoV2ViQ29yZSkvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQoV2ViQ29yZSkv
bWFrZS1oYXNoLXRvb2xzLnBsCiAJJChBTV9WX0dFTikkKFBFUkwpICQoV2ViQ29yZSkvbWFrZS1o
YXNoLXRvb2xzLnBsICQoR0VOU09VUkNFU19QTEFURk9STSkgJChXZWJDb3JlKS9wbGF0Zm9ybS9D
b2xvckRhdGEuZ3BlcmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcxZDY2NDUu
LjBlYmNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMxMSw2ICs2MzEx
LDEyIEBAIHBsYXRmb3JtZ3RrX3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgVVNFX09QRU5HTAog
aWYgVVNFX0VHTAogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xEZWZhdWx0LmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxh
bmQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFgxMS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0xYMTEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaAogZW5kaWYgIyBFTkQgVVNFX0VHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAKaW5kZXggNjg3YzVlYS4uNzFi
ZjU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HTENvbnRleHQuY3BwCkBAIC0yMyw2ICsyMyw5IEBACiAKICNpZiBVU0UoRUdMKQogI2luY2x1
ZGUgIkdMQ29udGV4dEVHTC5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTERlZmF1bHQuaCIKKyNp
bmNsdWRlICJHTENvbnRleHRFR0xXYXlsYW5kLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMWDEx
LmgiCiAjZW5kaWYKIAogI2lmIFVTRShHTFgpCkBAIC0zNSw5ICszOCwxNiBAQAogI2luY2x1ZGUg
PFgxMS9YbGliLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisjaW5jbHVkZSA8
d2F5bGFuZC1jbGllbnQuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUg
PGdkay9nZGsuaD4KICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyNpZmRlZiBHREtfV0lORE9X
SU5HX1gxMQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjZW5kaWYKICNpZmRlZiBHREtfV0lORE9X
SU5HX1dBWUxBTkQKICNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgogI2VuZGlmCkBAIC0xNDUs
MjYgKzE1NSwzOSBAQCB2b2lkIEdMQ29udGV4dDo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0
KCkKICNlbmRpZgogfQogCi0KLQogUGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dEZvcldpbmRvdyh1aW50NjRfdCB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hh
cmluZ0NvbnRleHQpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJ
TkdfV0FZTEFORCkgJiYgVVNFKEVHTCkKKyNpZiBQTEFURk9STShHVEspICYmICFkZWZpbmVkKEdU
S19BUElfVkVSU0lPTl8yKQogICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkgPSBnZGtfZGlzcGxheV9t
YW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXQoKSk7Ci0K
KyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKSAmJiBVU0UoR0xYKQorICAgIGlmIChHREtf
SVNfWDExX0RJU1BMQVkoZGlzcGxheSkpIHsKKyAgICAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+
IGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBz
aGFyaW5nQ29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4gZ2x4Q29udGV4dC5yZWxlYXNlKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorI2lmIGRlZmluZWQoR0RL
X1dJTkRPV0lOR19XQVlMQU5EKSAmJiBVU0UoRUdMKQorICAgIEFTU0VSVCghd2luZG93SGFuZGxl
KTsKICAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSkgewotICAgICAgICBp
ZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgaWYgKE93blB0cjxH
TENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQ8R0xDb250
ZXh0RUdMV2F5bGFuZD4oMCwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJuIGVn
bENvbnRleHQucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAjZW5k
aWYKKyNlbmRpZgogCiAjaWYgVVNFKEdMWCkKICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4
Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJp
bmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlm
CisKICNpZiBVU0UoRUdMKQotICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0g
R0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQp
KQorI2lmIFBMQVRGT1JNKFgxMSkKKyAgICB0eXBlZGVmIEdMQ29udGV4dEVHTFgxMSBFR0xQbGF0
Zm9ybUNsYXNzOworI2Vsc2UKKyAgICB0eXBlZGVmIEdMQ29udGV4dEVHTERlZmF1bHQgRUdMUGxh
dGZvcm1DbGFzczsKKyNlbmRpZgorICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0
ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0PEVHTFBsYXRmb3JtQ2xhc3M+KHdpbmRvd0hh
bmRsZSwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICByZXR1cm4gZWdsQ29udGV4dC5yZWxlYXNl
KCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggM2Q1YmUyMy4u
ODZhZmZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIxLDcgKzIxLDExIEBACiAKICNpZiBVU0UoRUdMKQog
CisjaW5jbHVkZSAiR0xDb250ZXh0RUdMRGVmYXVsdC5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVH
TFdheWxhbmQuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xYMTEuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCkBAIC00MSwxNTYgKzQ1LDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgRUdMRGlzcGxheSBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9O
T19ESVNQTEFZOwotCi0jaWYgVVNFKE9QRU5HTF9FU18yKQotc3RhdGljIGNvbnN0IEVHTGVudW0g
Z0dMQVBJID0gRUdMX09QRU5HTF9FU19BUEk7Ci0jZWxzZQotc3RhdGljIGNvbnN0IEVHTGVudW0g
Z0dMQVBJID0gRUdMX09QRU5HTF9BUEk7Ci0jZW5kaWYKLQotc3RhdGljIEVHTERpc3BsYXkgc2hh
cmVkRUdMRGlzcGxheSgpCi17Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsK
LSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSNp
ZiBQTEFURk9STShYMTEpCi0gICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxh
eShHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7Ci0jZWxzZQotICAgICAgICBnU2hhcmVk
RUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7Ci0jZW5kaWYK
LSAgICAgICAgaWYgKGdTaGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWds
SW5pdGlhbGl6ZShnU2hhcmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQVBJ
KSkpCi0gICAgICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAg
IH0KLSAgICByZXR1cm4gZ1NoYXJlZEVHTERpc3BsYXk7Ci19Ci0KLXN0YXRpYyBjb25zdCBFR0xp
bnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIEVH
TF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLAotI2VuZGlmCi0gICAgRUdMX05PTkUKLX07Ci0K
LXN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdM
OjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkKLXsKLSAgICBFR0xpbnQgYXR0cmlidXRlTGlz
dFtdID0gewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQ
RSwgRUdMX09QRU5HTF9FUzJfQklULAotI2Vsc2UKLSAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQ
RSwgRUdMX09QRU5HTF9CSVQsCi0jZW5kaWYKLSAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAg
ICAgICBFR0xfR1JFRU5fU0laRSwgOCwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKLSAgICAg
ICAgRUdMX1NURU5DSUxfU0laRSwgOCwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCi0gICAg
ICAgIEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9OT05FLAotICAgICAgICBFR0xfTk9ORQotICAgIH07
Ci0KLSAgICBzd2l0Y2ggKHN1cmZhY2VUeXBlKSB7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBi
dWZmZXJTdXJmYWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJ
VDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6
Ci0gICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgotICAgICAgICBhdHRy
aWJ1dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VD
b25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1i
ZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKLX0KLQotUGFzc093
blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKLXsKLSAg
ICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNf
Y2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0KLSAg
ICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3Bs
YXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdM
Q29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dTdXJm
YWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGNvbnRleHQg
PSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGdD
b250ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3Jl
YXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7Ci0gICAgaWYgKHN1
cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29udGV4dCwgc3VyZmFjZSwgV2luZG93
U3VyZmFjZSkpOwotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQotewotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9
PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb25m
aWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFBidWZmZXJTdXJmYWNl
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBl
Z2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0
QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRl
c1tdID0geyBFR0xfV0lEVEgsIDEsIEVHTF9IRUlHSFQsIDEsIEVHTF9OT05FIH07Ci0gICAgRUdM
U3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgY29uZmln
LCBwYnVmZmVyQXR0cmlidXRlcyk7Ci0gICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0Up
IHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250
ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7Ci19Ci0KLVBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKLXsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbmZpZyBjb25m
aWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0
ZXMpOwotICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIEVHTGludCBkZXB0aDsKLSAgICBpZiAoIWVnbEdldENvbmZpZ0F0dHJp
YihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIFBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHNoYXJlZFgx
MURpc3BsYXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coc2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwg
ZGVwdGgpOwotICAgIGlmICghcGl4bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgY29u
ZmlnLCBwaXhtYXAsIDApOwotCi0gICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRl
eHRFR0woY29udGV4dCwgc3VyZmFjZSwgUGl4bWFwU3VyZmFjZSkpOwotI2Vsc2UKLSAgICByZXR1
cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250
ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0KQordGVtcGxhdGU8Y2xhc3MgRUdMUGxhdGZvcm1DbGFzcz4KK1Bh
c3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQodHlwZW5h
bWUgRUdMUGxhdGZvcm1DbGFzczo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKICAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7CkBAIC0yMDMsMjAgKzYwLDE3IEBAIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENv
bnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9
IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRl
eHQpLT5tX2NvbnRleHQgOiAwOwotICAgIE93blB0cjxHTENvbnRleHRFR0w+IGNvbnRleHQgPSB3
aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVs
bHB0cjsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBD
b250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLQotICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
Y29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLSAgICAK
LSAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisgICAgT3duUHRyPEdMQ29udGV4dEVHTD4g
Y29udGV4dCA9IGFkb3B0UHRyKG5ldyBFR0xQbGF0Zm9ybUNsYXNzKG5hdGl2ZVdpbmRvdywgZWds
U2hhcmluZ0NvbnRleHQpKTsKKyAgICBpZiAoY29udGV4dC0+aXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotR0xD
b250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1
cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAg
ICAsIG1fc3VyZmFjZShzdXJmYWNlKQotICAgICwgbV90eXBlKHR5cGUpCitHTENvbnRleHRFR0w6
OkdMQ29udGV4dEVHTCgpCisgICAgOiBtX2NvbnRleHQoRUdMX05PX0NPTlRFWFQpCisgICAgLCBt
X3N1cmZhY2UoRUdMX05PX1NVUkZBQ0UpCisgICAgLCBtX3R5cGUoVW5rbm93bikKICAgICAsIG1f
Y2Fpcm9EZXZpY2UoMCkKIHsKIH0KQEAgLTIyOCwyMCArODIsMTkgQEAgR0xDb250ZXh0RUdMOjp+
R0xDb250ZXh0RUdMKCkKICAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0Rldmlj
ZSk7CiAjZW5kaWYKIAotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXko
KTsKLSAgICBpZiAobV9jb250ZXh0KSB7CisgICAgaWYgKG1fY29udGV4dCAhPSBFR0xfTk9fQ09O
VEVYVCkgewogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0g
ICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VS
RkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5
LCBtX2NvbnRleHQpOworICAgICAgICBlZ2xNYWtlQ3VycmVudChzaGFyZWREaXNwbGF5KCksIEVH
TF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBl
Z2xEZXN0cm95Q29udGV4dChzaGFyZWREaXNwbGF5KCksIG1fY29udGV4dCk7CiAgICAgfQogCi0g
ICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgbV9z
dXJmYWNlKTsKKyAgICBpZiAobV9zdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQorICAgICAgICBl
Z2xEZXN0cm95U3VyZmFjZShzaGFyZWREaXNwbGF5KCksIG1fc3VyZmFjZSk7CiB9CiAKIGJvb2wg
R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcigpCiB7Ci0gICAgcmV0
dXJuIG1fdHlwZSA9PSBXaW5kb3dTdXJmYWNlOworICAgIHJldHVybiBtX3R5cGUgPT0gR0xDb250
ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOwogfQogCiBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVs
dEZyYW1lQnVmZmVyU2l6ZSgpCkBAIC0yNTAsOCArMTAzLDggQEAgSW50U2l6ZSBHTENvbnRleHRF
R0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwog
CiAgICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2Uoc2hh
cmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQotICAgICAgICB8
fCAhZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfSEVJ
R0hULCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWREaXNwbGF5KCks
IG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZh
Y2Uoc2hhcmVkRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQogICAg
ICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdo
dCk7CkBAIC0yNTksMTkgKzExMiwyMCBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZy
YW1lQnVmZmVyU2l6ZSgpCiAKIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQo
KQogewotICAgIEFTU0VSVChtX2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKKyAgICBBU1NFUlQobV9j
b250ZXh0KTsKKyAgICBBU1NFUlQobV9zdXJmYWNlKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGVnbEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250
ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChz
aGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOworICAg
IHJldHVybiBlZ2xNYWtlQ3VycmVudChzaGFyZWREaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJm
YWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQog
ewogICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVHTERp
c3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBlZ2xTd2FwQnVmZmVycyhzaGFyZWREaXNwbGF5KCks
IG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKQEAgLTI4
NSwxOSArMTM5LDk1IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNl
KCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0
ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNh
aXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZERpc3BsYXkoKSwgbV9jb250ZXh0KTsKICNlbmRp
ZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wpCisj
aWYgVVNFKDNEX0dSQVBISUNTKQogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHTENvbnRleHRF
R0w6OnBsYXRmb3JtQ29udGV4dCgpCiB7CiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KICNlbmRp
ZgogCitFR0xEaXNwbGF5IEdMQ29udGV4dEVHTDo6c2hhcmVkRGlzcGxheSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOworfQorCitFR0xCb29sZWFuIEdMQ29udGV4dEVHTDo6
Y2hvb3NlQ29uZmlnKEVHTENvbmZpZyogY29uZmlnICwgR0xDb250ZXh0RUdMOjpTdXJmYWNlVHlw
ZSBzdXJmYWNlVHlwZSkgY29uc3QKK3sKKyAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0gewor
I2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09Q
RU5HTF9FUzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09Q
RU5HTF9CSVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAorICAgICAgICBFR0xf
R1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAgRUdMX1NU
RU5DSUxfU0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIEVHTF9T
VVJGQUNFX1RZUEUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBz
d2l0Y2ggKHN1cmZhY2VUeXBlKSB7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJm
YWNlOgorICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6CisgICAgICAg
IGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgorICAgICAgICBhdHRyaWJ1dGVMaXN0
WzEzXSA9IEVHTF9XSU5ET1dfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdMQ29udGV4
dEVHTDo6VW5rbm93bjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBFR0xfRkFMU0U7CisgICAgfQorCisgICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5l
ZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNoYXJlZERpc3BsYXkoKSwgYXR0cmlidXRl
TGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdz
UmV0dXJuZWQ7Cit9CisKK0VHTGVudW0gR0xDb250ZXh0RUdMOjpnbEFQSSgpIGNvbnN0Cit7Cisj
aWYgVVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiBFR0xfT1BFTkdMX0VTX0FQSTsKKyNlbHNl
CisgICAgcmV0dXJuIEVHTF9PUEVOR0xfQVBJOworI2VuZGlmCit9CisKK0VHTGludCogR0xDb250
ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgc3RhdGljIEVHTGludCBj
b250ZXh0QXR0cmlidXRlc1tdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdM
X0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisjZW5kaWYKKyAgICAgICAgRUdMX05PTkUKKyAg
ICB9OworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlczsKK30KKworYm9vbCBHTENvbnRleHRF
R0w6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQgIT0gRUdMX05PX0NP
TlRFWFQgJiYgbV9zdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFOworfQorCisjaWYgUExBVEZPUk0o
V0FZTEFORCkKK3RlbXBsYXRlIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQ8R0xDb250ZXh0RUdMV2F5bGFuZD4odHlwZW5hbWUgR0xDb250ZXh0RUdM
V2F5bGFuZDo6TmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiA9IDApOworI2VuZGlmCisjaWYg
UExBVEZPUk0oWDExKQordGVtcGxhdGUgUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dDxHTENvbnRleHRFR0xYMTE+KHR5cGVuYW1lIEdMQ29udGV4dEVH
TFgxMTo6TmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiA9IDApOworI2VuZGlmCisjaWYgIVBM
QVRGT1JNKFdBWUxBTkQpICYmICFQTEFURk9STShYMTEpCit0ZW1wbGF0ZSBQYXNzT3duUHRyPEdM
Q29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0PEdMQ29udGV4dEVHTERlZmF1
bHQ+KHR5cGVuYW1lIEdMQ29udGV4dEVHTERlZmF1bHQ6Ok5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29u
dGV4dCogPSAwKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBVU0UoRUdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5oCmluZGV4IDc1MTZjNjkuLjlkYTg0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTIzLDE4
ICsyMywzMiBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNs
dWRlIDxLSFIva2hycGxhdGZvcm0uaD4KIAotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KK3R5cGVkZWYg
dW5zaWduZWQgaW50IEVHTEJvb2xlYW47Cit0eXBlZGVmIHZvaWQgKkVHTENvbmZpZzsKK3R5cGVk
ZWYgdm9pZCAqRUdMQ29udGV4dDsKK3R5cGVkZWYgdm9pZCAqRUdMRGlzcGxheTsKK3R5cGVkZWYg
dm9pZCAqRUdMU3VyZmFjZTsKK3R5cGVkZWYgdW5zaWduZWQgaW50IEVHTGVudW07Cit0eXBlZGVm
IGtocm9ub3NfaW50MzJfdCBFR0xpbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R0xDb250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoR0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1
ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKLSAgICBzdGF0aWMg
UGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlw
ZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBH
TENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyAgICBlbnVtIFN1cmZhY2VUeXBlIHsKKyAgICAg
ICAgV2luZG93U3VyZmFjZSwKKyAgICAgICAgUGJ1ZmZlclN1cmZhY2UsCisgICAgICAgIFBpeG1h
cFN1cmZhY2UsCisgICAgICAgIFVua25vd24KKyAgICB9OwogCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RUdMUGxhdGZvcm1DbGFzcz4KKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNy
ZWF0ZUNvbnRleHQodHlwZW5hbWUgRUdMUGxhdGZvcm1DbGFzczo6TmF0aXZlV2luZG93VHlwZSwg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOworCisgICAgR0xDb250ZXh0RUdMKCk7CiAg
ICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNDMsMjIgKzU3
LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFNpemUgZGVmYXVsdEZyYW1lQnVmZmVyU2l6
ZSgpOwogICAgIHZpcnR1YWwgY2Fpcm9fZGV2aWNlX3QqIGNhaXJvRGV2aWNlKCk7CiAKLSNpZiBF
TkFCTEUoV0VCR0wpCisjaWYgVVNFKDNEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKICNlbmRpZgogCi1wcml2YXRlOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQo
RUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgRUdMRGlzcGxheSBzaGFyZWREaXNwbGF5KCkgY29uc3Q7
CisgICAgdmlydHVhbCBFR0xCb29sZWFuIGNob29zZUNvbmZpZyhFR0xDb25maWcqLCBTdXJmYWNl
VHlwZSkgY29uc3Q7CisgICAgdmlydHVhbCBFR0xlbnVtIGdsQVBJKCkgY29uc3Q7CisgICAgdmly
dHVhbCBFR0xpbnQqIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICBFR0xDb250ZXh0
IG1fY29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKKyAgICBTdXJmYWNlVHlwZSBt
X3R5cGU7CiAKK3ByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENv
bnRleHRFR0wqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lk
KTsKIAotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNl
VHlwZSk7CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKLSAgICBFR0xDb250ZXh0IG1fY29u
dGV4dDsKLSAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKLSAgICBFR0xTdXJmYWNlVHlwZSBtX3R5
cGU7CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
RGVmYXVsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNkYjZkOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0xEZWZhdWx0LmNwcApAQCAtMCwwICsxLDkzIEBACisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMRGVmYXVsdC5oIgorCisjaWYgVVNFKEVHTCkKKwor
I2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHTENvbnRleHRF
R0xEZWZhdWx0OjpHTENvbnRleHRFR0xEZWZhdWx0KEdMQ29udGV4dEVHTERlZmF1bHQ6Ok5hdGl2
ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQorewor
ICAgIGlmIChzaGFyZWREaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChjcmVhdGVXaW5kb3dTdXJmYWNlKG5hdGl2ZVdpbmRvdywgc2hhcmluZ0Nv
bnRleHQpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNyZWF0ZVBidWZmZXJTdXJmYWNlKHNo
YXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fY29udGV4dCA9
PSBFR0xfTk9fQ09OVEVYVCk7CisgICAgQVNTRVJUKG1fc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFD
RSk7Cit9CisKK0VHTERpc3BsYXkgR0xDb250ZXh0RUdMRGVmYXVsdDo6c2hhcmVkRGlzcGxheSgp
IGNvbnN0Cit7CisgICAgc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9O
T19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYg
KCFpbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAg
c2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7Cisg
ICAgICAgIGlmIChzaGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5p
dGlhbGl6ZShzaGFyZWRFR0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnbEFQSSgpKSkp
CisgICAgICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQor
CisgICAgcmV0dXJuIHNoYXJlZEVHTERpc3BsYXk7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMRGVm
YXVsdDo6Y3JlYXRlV2luZG93U3VyZmFjZShHTENvbnRleHRFR0xEZWZhdWx0OjpOYXRpdmVXaW5k
b3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBB
U1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIGlmICghbmF0
aXZlV2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb25maWcgZWdsQ29u
ZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpXaW5k
b3dTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdM
Q29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCksIGVnbENv
bmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250
ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xT
dXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKHNoYXJlZERpc3BsYXkoKSwg
ZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBj
b250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250ZXh0
RUdMOjpXaW5kb3dTdXJmYWNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdMQ29udGV4
dEVHTERlZmF1bHQ6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCit7CisgICAgQVNTRVJUKHNoYXJlZERpc3BsYXkoKSAhPSBFR0xfTk9fRElTUExBWSk7CisK
KyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmVnbENvbmZp
ZywgR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFjZSkgIT0gRUdMX1RSVUUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
c2hhcmVkRGlzcGxheSgpLCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmli
dXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0g
eyBFR0xfV0lEVEgsIDEsIEVHTF9IRUlHSFQsIDEsIEVHTF9OT05FIH07CisgICAgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2Uoc2hhcmVkRGlzcGxheSgpLCBlZ2xD
b25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VS
RkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChzaGFyZWREaXNwbGF5KCksIGNvbnRl
eHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9jb250ZXh0ID0gY29u
dGV4dDsKKyAgICBtX3N1cmZhY2UgPSBzdXJmYWNlOworICAgIG1fdHlwZSA9IEdMQ29udGV4dEVH
TDo6UGJ1ZmZlclN1cmZhY2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGJmNGNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQu
aApAQCAtMCwwICsxLDMwIEBACisjaWZuZGVmIEVHTFBsYXRmb3JtRGVmYXVsdF9oCisjZGVmaW5l
IEVHTFBsYXRmb3JtRGVmYXVsdF9oCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSAiR0xDb250
ZXh0RUdMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR0xDb250ZXh0RUdMRGVm
YXVsdCA6IHByb3RlY3RlZCBHTENvbnRleHRFR0wgeworICAgIGZyaWVuZCBjbGFzcyBHTENvbnRl
eHRFR0w7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHVpbnQ2NF90IE5hdGl2ZVdpbmRvd1R5cGU7
CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEVHTERpc3BsYXkgc2hhcmVkRGlzcGxheSgpIGNv
bnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIEdMQ29udGV4dEVHTERlZmF1bHQoTmF0aXZl
V2luZG93VHlwZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisKKyAgICBib29sIGNyZWF0
ZVdpbmRvd1N1cmZhY2UoTmF0aXZlV2luZG93VHlwZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4
dCk7CisgICAgYm9vbCBjcmVhdGVQYnVmZmVyU3VyZmFjZShFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wp
CisKKyNlbmRpZiAvLyBFR0xQbGF0Zm9ybURlZmF1bHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMTNjMmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
V2F5bGFuZC5jcHAKQEAgLTAsMCArMSw5MSBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdMQ29udGV4dEVHTFdheWxhbmQuaCIKKworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdB
WUxBTkQpCisKKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
KworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaWZkZWYgR0RLX1dJ
TkRPV0lOR19XQVlMQU5ECisjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KKyNlbmRpZgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR0xDb250ZXh0RUdMV2F5bGFuZDo6R0xDb250
ZXh0RUdMV2F5bGFuZChHTENvbnRleHRFR0xXYXlsYW5kOjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2
ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBpZiAoc2hhcmVkRGlz
cGxheSgpID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm47CisKKyAgICBFR0xDb25m
aWcgY29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmNvbmZpZywgR0xDb250ZXh0RUdMOjpX
aW5kb3dTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRUdMQ29u
dGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCksIGNvbmZpZywg
c2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09
IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm47CisKKyAgICBFR0xTdXJmYWNlIHN1cmZh
Y2UgPSBjcmVhdGVTdXJmYWNlKDAsIGNvbmZpZyk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05P
X1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoc2hhcmVkRGlzcGxheSgpLCBj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dCA9IGNvbnRl
eHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBtX3R5cGUgPSBHTENvbnRleHRFR0w6
OldpbmRvd1N1cmZhY2U7Cit9CisKK0VHTERpc3BsYXkgR0xDb250ZXh0RUdMV2F5bGFuZDo6c2hh
cmVkRGlzcGxheSgpIGNvbnN0Cit7CisgICAgc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlz
cGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFs
c2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7
CisKKyNpZiBQTEFURk9STShHVEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQor
ICAgICAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVm
YXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworICAgICAgICBBU1NFUlQo
R0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSk7CisgICAgICAgIHN0cnVjdCB3bF9kaXNw
bGF5KiB3bERpc3BsYXkgPSBnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3Bs
YXkpOworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheSh3bERpc3BsYXkp
OworI2VuZGlmCisKKyAgICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BM
QVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5k
QVBJKGdsQVBJKCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElT
UExBWTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKK30KKworRUdMU3Vy
ZmFjZSBHTENvbnRleHRFR0xXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKEdMQ29udGV4dEVHTFdheWxh
bmQ6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb25maWcgY29uZmlnKQorewor
I2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCisgICAg
QVNTRVJUKCFuYXRpdmVXaW5kb3cpOworCisgICAgR2RrRGlzcGxheSogZ2RrRGlzcGxheSA9IGdk
a19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2Vy
X2dldCgpKTsKKyAgICBBU1NFUlQoR0RLX0lTX1dBWUxBTkRfRElTUExBWShnZGtEaXNwbGF5KSk7
CisKKyAgICBzdHJ1Y3Qgd2xfY29tcG9zaXRvciogd2xDb21wb3NpdG9yID0gZ2RrX3dheWxhbmRf
ZGlzcGxheV9nZXRfd2xfY29tcG9zaXRvcihnZGtEaXNwbGF5KTsKKyAgICBpZiAoIXdsQ29tcG9z
aXRvcikKKyAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworCisgICAgc3RydWN0IHdsX3N1
cmZhY2UqIHdsU3VyZmFjZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2Uod2xDb21wb3Np
dG9yKTsKKyAgICBpZiAoIXdsU3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNF
OworCisgICAgc3RydWN0IHdsX2VnbF93aW5kb3cqIGVnbFdpbmRvdyA9IHdsX2VnbF93aW5kb3df
Y3JlYXRlKHdsU3VyZmFjZSwgMCwgMCk7CisgICAgaWYgKCFlZ2xXaW5kb3cpCisgICAgICAgIHJl
dHVybiBFR0xfTk9fU1VSRkFDRTsKKworICAgIHJldHVybiBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNl
KHNoYXJlZERpc3BsYXkoKSwgY29uZmlnLCBlZ2xXaW5kb3csIDApOworI2Vsc2UKKyAgICByZXR1
cm4gRUdMX05PX1NVUkZBQ0U7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFu
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiOWZmNjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMV2F5bGFuZC5oCkBAIC0wLDAgKzEsMzAgQEAKKyNpZm5kZWYgRUdMUGxhdGZvcm1XYXlsYW5k
X2gKKyNkZWZpbmUgRUdMUGxhdGZvcm1XYXlsYW5kX2gKKworI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworc3RydWN0IHdsX2Vn
bF93aW5kb3c7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR0xDb250ZXh0RUdMV2F5
bGFuZCA6IHB1YmxpYyBHTENvbnRleHRFR0wgeworICAgIGZyaWVuZCBjbGFzcyBHTENvbnRleHRF
R0w7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0cnVjdCB3bF9lZ2xfd2luZG93KiBOYXRpdmVX
aW5kb3dUeXBlOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBFR0xEaXNwbGF5IHNoYXJlZERp
c3BsYXkoKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBHTENvbnRleHRFR0xXYXls
YW5kKE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIEVH
TFN1cmZhY2UgY3JlYXRlU3VyZmFjZShOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb25maWcpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZP
Uk0oV0FZTEFORCkKKworI2VuZGlmIC8vIEVHTFBsYXRmb3JtV2F5bGFuZF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNGE3NjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMWDExLmNwcApAQCAtMCwwICsxLDEzMiBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdMQ29udGV4dEVHTFgxMS5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oWDExKQor
CisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0dMQ29udGV4dEVHTFgxMTo6R0xDb250ZXh0RUdMWDExKEdMQ29udGV4
dEVHTFgxMTo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQpCit7CisgICAgaWYgKHNoYXJlZERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNyZWF0ZVdpbmRvd1N1cmZhY2UobmF0aXZlV2lu
ZG93LCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoY3JlYXRlUGJ1
ZmZlclN1cmZhY2Uoc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNy
ZWF0ZVBpeG1hcFN1cmZhY2Uoc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBBU1NFUlQobV9jb250ZXh0ID09IEVHTF9OT19DT05URVhUKTsKKyAgICBBU1NFUlQobV9zdXJm
YWNlID09IEVHTF9OT19TVVJGQUNFKTsKK30KKworRUdMRGlzcGxheSBHTENvbnRleHRFR0xYMTE6
OnNoYXJlZERpc3BsYXkoKSBjb25zdAoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVH
TERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9
IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOworCisgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4
dDo6c2hhcmVkWDExRGlzcGxheSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0g
RUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDAp
IHx8ICFlZ2xCaW5kQVBJKGdsQVBJKCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkg
PSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsK
K30KKworYm9vbCBHTENvbnRleHRFR0xYMTE6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoR0xDb250ZXh0
RUdMWDExOjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9OT19ESVNQTEFZ
KTsKKworICAgIGlmICghbmF0aXZlV2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmVnbENvbmZpZywg
R0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFy
ZWREaXNwbGF5KCksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVz
KCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNl
KHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAgIGlmIChz
dXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNo
YXJlZERpc3BsYXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAg
bV90eXBlID0gR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEdMQ29udGV4dEVHTFgxMTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9O
T19ESVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNv
bmZpZygmZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJmYWNlKSAhPSBFR0xfVFJV
RSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWds
Q3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQs
IGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhU
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJB
dHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsK
KyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShzaGFyZWRE
aXNwbGF5KCksIGVnbENvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERp
c3BsYXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBt
X2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBl
ID0gR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFjZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBHTENvbnRleHRFR0xYMTE6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMQ29udGV4dCBzaGFy
aW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9OT19ESVNQ
TEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNvbmZpZygm
ZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2UpICE9IEVHTF9UUlVFKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVD
b250ZXh0KHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4
dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEVHTGludCBkZXB0aDsKKyAgICBpZiAoZWdsR2V0Q29u
ZmlnQXR0cmliKHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRl
cHRoKSAhPSBFR0xfVFJVRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChzaGFyZWREaXNw
bGF5KCksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUGl4
bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCks
IERlZmF1bHRSb290V2luZG93KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwg
ZGVwdGgpOworICAgIGlmICghcGl4bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNo
YXJlZERpc3BsYXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKHNoYXJlZERp
c3BsYXkoKSwgZWdsQ29uZmlnLCBwaXhtYXAsIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9O
T19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwg
Y29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQg
PSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250
ZXh0RUdMOjpQaXhtYXBTdXJmYWNlOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
WDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
WDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ0MzhlZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0xYMTEuaApAQCAtMCwwICsxLDMwIEBACisjaWZuZGVmIEVHTFBsYXRmb3JtWF9oCisjZGVm
aW5lIEVHTFBsYXRmb3JtWF9oCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCisKKyNp
bmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
TENvbnRleHRFR0xYMTEgOiBwdWJsaWMgR0xDb250ZXh0RUdMIHsKKyAgICBmcmllbmQgY2xhc3Mg
R0xDb250ZXh0RUdMOworCitwdWJsaWM6CisgICAgdHlwZWRlZiB1aW50NjRfdCBOYXRpdmVXaW5k
b3dUeXBlOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBFR0xEaXNwbGF5IHNoYXJlZERpc3Bs
YXkoKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBHTENvbnRleHRFR0xYMTEoTmF0
aXZlV2luZG93VHlwZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgYm9vbCBjcmVh
dGVXaW5kb3dTdXJmYWNlKE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpOworICAgIGJvb2wgY3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29u
dGV4dCk7CisgICAgYm9vbCBjcmVhdGVQaXhtYXBTdXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0Nv
bnRleHQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVH
TCkgJiYgUExBVEZPUk0oV0FZTEFORCkKKworI2VuZGlmIC8vIEVHTFBsYXRmb3JtWF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDUyMGM4NGMuLjNmYjVkOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCkBAIC0xMjUsNiArMTI1LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEK
IAkkKFBOR19MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAor
CSQoV0FZTEFORF9DTElFTlRfTElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYQ09NUE9TSVRF
X0xJQlMpIFwKIAkkKFhEQU1BR0VfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA2MjQ3
NDExLi4zYWU5N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMjQ4LDYgKzI0OCw3IEBAIGxp
YndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElf
TUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJTKSBc
CiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfQ0xJRU5UX0xJQlMpIFwKIAkkKFdFQlBf
TElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYQ09NUE9TSVRFX0xJQlMpIFwKQEAgLTUy
NCw3ICs1MjUsOCBAQCBsaWJQbGF0Zm9ybUd0azJfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFN
RVJfQ0ZMQUdTKSBcCiAJJChHVEsyX0NGTEFHUykgXAogCSQoTElCU0VDUkVUX0NGTEFHUykgXAot
CSQoTElCU09VUF9DRkxBR1MpCisJJChMSUJTT1VQX0NGTEFHUykgXAorCSQoV0FZTEFORF9DTElF
TlRfQ0ZMQUdTKQogCiAjIEluamVjdGVkIEJ1bmRsZQogaW5qZWN0ZWRidW5kbGVkaXIgPSAkKGxp
YmRpcikvd2Via2l0Mmd0ay0zLjAvaW5qZWN0ZWQtYnVuZGxlCkBAIC02NzQsNiArNjc2LDcgQEAg
UHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCA9IFwKIAkkKFNITV9MSUJTKSBcCiAJ
JChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoV0FZTEFORF9DTElFTlRf
TElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNCBiL1Nv
dXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNAppbmRleCA1Zjk1YjcwLi43YTk2YzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKKysrIGIv
U291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CkBAIC0xODEsMTIgKzE4MSwxOSBA
QCBlbHNlCiAgICAgICAgIEFDX1NVQlNUKFtYVF9DRkxBR1NdKQogICAgICAgICBBQ19TVUJTVChb
WFRfTElCU10pCiAgICBmaQorCisgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dUS19XQVlMQU5EXSwg
W2d0aystd2F5bGFuZC0kR1RLX0FQSV9WRVJTSU9OXSwgW2hhdmVfZ3RrX3dheWxhbmQ9eWVzXSwg
W2hhdmVfZ3RrX3dheWxhbmQ9bm9dKQogZmkKIEFDX1NVQlNUKEdUS19DRkxBR1MpCiBBQ19TVUJT
VChHVEtfTElCUykKIEFDX1NVQlNUKENBSVJPX0NGTEFHUykKIEFDX1NVQlNUKENBSVJPX0xJQlMp
CiAKK2lmIHRlc3QgIiRoYXZlX2d0a193YXlsYW5kIiA9ICJ5ZXMiOyB0aGVuCisgICAgUEtHX0NI
RUNLX01PRFVMRVMoW1dBWUxBTkRfQ0xJRU5UXSwgW3dheWxhbmQtY2xpZW50IHdheWxhbmQtZWds
XSkKKyAgICBBQ19TVUJTVChXQVlMQU5EX0NMSUVOVF9DRkxBR1MpCisgICAgQUNfU1VCU1QoV0FZ
TEFORF9DTElFTlRfTElCUykKK2ZpCiAKIGZvdW5kX29wZW5nbD1ubwogaGF2ZV9nbHg9bm8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvY29uZkhlYWRlci5tNCBiL1NvdXJj
ZS9hdXRvdG9vbHMvU2V0dXBBdXRvY29uZkhlYWRlci5tNAppbmRleCAwZjg0MzZjLi43NjA0MThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b2NvbmZIZWFkZXIubTQKKysr
IGIvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9jb25mSGVhZGVyLm00CkBAIC00Myw2ICs0Mywx
MCBAQCBmaQogaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJ4MTEiOyB0aGVuCiAgICAgQUNfREVG
SU5FKFtNT1pfWDExXSwgWzFdLCBbIF0pCiAgICAgQUNfREVGSU5FKFtXVEZfUExBVEZPUk1fWDEx
XSwgWzFdLCBbRGVmaW5lIGlmIHRhcmdldCBpcyBYMTFdKQorCisgICAgaWYgdGVzdCAiJGhhdmVf
Z3RrX3dheWxhbmQiID0gInllcyI7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKFtXVEZfUExBVEZP
Uk1fV0FZTEFORF0sIFsxXSwgW0RlZmluZSBpZiBXYXlsYW5kIHN1cHBvcnQgaXMgcHJlc2VudF0p
CisgICAgZmkKIGZpCiAKIGlmIHRlc3QgIiRlbmFibGVfZmFzdF9tYWxsb2MiID0gIm5vIjsgdGhl
bgpkaWZmIC0tZ2l0IGEvVG9vbHMvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9HTlVtYWtlZmlsZS5h
bQppbmRleCAzZjI0YjEzLi44N2QxOTdkIDEwMDY0NAotLS0gYS9Ub29scy9HTlVtYWtlZmlsZS5h
bQorKysgYi9Ub29scy9HTlVtYWtlZmlsZS5hbQpAQCAtMjAxLDYgKzIwMSw3IEBAIFByb2dyYW1z
X0R1bXBSZW5kZXJUcmVlX0xEQUREID0gXAogCSQoR0xJQl9MSUJTKSBcCiAJJChMSUJTT1VQX0xJ
QlMpIFwKIAkkKEZSRUVUWVBFX0xJQlMpIFwKKwkkKFdBWUxBTkRfQ0xJRU5UX0xJQlMpIFwKIAkk
KFdJTk1NX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IGEzYjNmOTguLjA2YzAyNmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9HTlVtYWtlZmlsZS5hbQpAQCAtMTYwLDYgKzE2MCw3IEBAIFByb2dyYW1zX1Rlc3RXZWJLaXRB
UElfVGVzdFdlYkNvcmVfTERBREQgPSBcCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJT
KSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfQ0xJRU5UX0xJQlMpIFwKIAkkKFdF
QlBfTElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209504</attachid>
            <date>2013-08-23 13:27:08 -0700</date>
            <delta_ts>2013-09-23 09:44:38 -0700</delta_ts>
            <desc>Pre-review patch</desc>
            <filename>bug-118944-20130823132708.patch</filename>
            <type>text/plain</type>
            <size>48061</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlY2I4NTg4N2RmMjc4
ZWEwOGU4ODM1ZjBlYjI4MTJkMmExZTE3MzNkLi4zNDkzOWIwNjBiZjkwMzBiNTNkY2M1ODQwNWZj
MjNiNGNlYmNkMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOC0yMyAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIHRoZSBXYXlsYW5kIGRl
cGVuZGVuY3kncyBDIGNvbXBpbGVyIGZsYWdzIHRvIHRoZSBsaXN0IG9mIHRoZXNlIGZsYWdzCisg
ICAgICAgIGZvciB0aGUgbGliUGxhdGZvcm1HVEsgbGlicmFyeS4KKwogMjAxMy0wNi0xNCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBH
VEsgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MjA4NWNhYTBiYzY1ZWU1ZWZmN2FhMWFhNzY4
ODM5M2VkNjdmYTUuLmQ3YWJjMDYyNTMwMjkyYTUwNTYyOGYxODExODcyZWYxYzhiYjUxZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSw4NCBAQAogMjAxMy0wOC0yMyAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5k
ZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVmYWN0b3IgdGhlIEdMQ29udGV4dEVHTCBjbGFzcyB0byBtYWtlIGl0IG9wZXJhdGlvbmFs
IHVuZGVyIGRpZmZlcmVudCBFR0wgcGxhdGZvcm1zLgorCisgICAgICAgIFRoZSBHTENvbnRleHQ6
OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cgdW5kZXIgdGhlIEdUSyBwb3J0IG5vdyBkZXRlY3RzIHRo
ZSBuYXR1cmUgb2YgdGhlIEdka0Rpc3BsYXkgdGhhdCdzCisgICAgICAgIGJlaW5nIHVzZWQgLSBm
b3IgWDExIGRpc3BsYXlzIGEgR0xDb250ZXh0R0xYIGlzIGNyZWF0ZWQsIHdoaWxlIGZvciBXYXls
YW5kIGRpc3BsYXlzIGEgR0xDb250ZXh0RUdMV2F5bGFuZAorICAgICAgICBpcyB1c2VkLiBPbiBv
dGhlciBwb3J0cywgd2hlbiB0aGUgRUdMIHN1cHBvcnQgaXMgZW5hYmxlZCwgdGhlIEdMQ29udGV4
dEVHTFgxMSBpcyB1c2VkIGlmIHRoYXQgcG9ydCBzdXBwb3J0cworICAgICAgICBYMTEgZGlzcGxh
eXMsIGFuZCB0aGUgR0xDb250ZXh0RUdMRGVmYXVsdCBpcyB1c2VkIG90aGVyd2lzZS4KKworICAg
ICAgICBUaGUgR0xDb250ZXh0RUdMIGlzIHJlZmFjdG9yZWQgdG8gc2VydmUgYXMgdGhlIGJhc2Ug
Y2xhc3MgZm9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMgR0xDb250ZXh0RUdMKiBjbGFzc2Vz
LgorICAgICAgICBGb3Igbm93LCBzdWNoIGNsYXNzZXMgYXJlIEdMQ29udGV4dEVHTFgxMSwgR0xD
b250ZXh0RUdMV2F5bGFuZCBhbmQgR0xDb250ZXh0RUdMRGVmYXVsdC4gVGhlIGJhc2UgY2xhc3Mg
Z3JvdXBzCisgICAgICAgIG11Y2ggb2YgdGhlIGxvZ2ljIHRoYXQncyBub3QgcGxhdGZvcm0tc3Bl
Y2lmaWMsIGJ1dCBwcm92aWRlcyBhIGNvdXBsZSBvZiBvdmVycmlkYWJsZSB2aXJ0dWFsIG1ldGhv
ZHMgdGhhdCB0aGUKKyAgICAgICAgc3ViY2xhc3NlcyBjYW4gcmVpbXBsZW1lbnQgdG8gcHJvdmlk
ZSBwcm9wZXIgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBHTENvbnRleHRFR0w6OmNyZWF0ZUNv
bnRleHQgZXhwZWN0cyBvbmUgb2YgdGhlIHN1YmNsYXNzZXMgYXMgdGhlIHRlbXBsYXRlIHBhcmFt
ZXRlci4gRWFjaCBzdWJjbGFzcyBzaG91bGQgY2FycnkKKyAgICAgICAgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIG5hdGl2ZSB3aW5kb3cgdHlwZSB0aGF0IHRoYXQgcGxhdGZvcm0gc3BlY2lmaWVzLiBU
aGUgbWV0aG9kIHRoZW4gY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZgorICAgICAgICBjbGFzcywg
ZXhwZWN0aW5nIHRoYXQgdGhlIGNvbnN0cnVjdG9yIHNldHMgdXAgcHJvcGVyIEVHTENvbnRleHQg
YW5kIEVHTFN1cmZhY2UgdGhhdCB3b3VsZCBiZSB1c2VkLiBJZiBwcm92aWRlZCwKKyAgICAgICAg
dGhlIGluc3RhbmNlIGlzIGRlZW1lZCB2YWxpZCBhbmQgcmV0dXJuZWQuCisKKyAgICAgICAgQXBh
cnQgZnJvbSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RydWN0b3JzLCB0aGUgc3ViY2xhc3Nl
cyBhbHNvIG92ZXJyaWRlIHRoZSBHTENvbnRleHRFR0w6OnNoYXJlZERpc3BsYXkoKSBtZXRob2Qu
CisgICAgICAgIFRoZSBiYXNlIG1ldGhvZCBzaW1wbHkgcmV0dXJucyBFR0xfTk9fRElTUExBWSwg
YnV0IHN1YmNsYXNzZXMgb3ZlcnJpZGUgdGhhdCBiZWhhdmlvciB0byBlaXRoZXIgcmV0dXJuIHRo
ZSBkZWZhdWx0CisgICAgICAgIGRpc3BsYXkgKGxpa2UgaW4gR0xDb250ZXh0RUdMRGVmYXVsdCkg
b3IgdGhlIGRpc3BsYXkgcHJvdmlkZWQgYnkgdGhlIGRpc3BsYXkgcHJvdG9jb2wgaW4gdXNlIChs
aWtlIGluIGJvdGggR0xDb250ZXh0RUdMWDExCisgICAgICAgIGFuZCBHTENvbnRleHRFR0xXYXls
YW5kKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCB0aGUgbmV3IGZpbGVz
IHRvIHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3Bw
OiBJbmNsdWRlIHRoZSBzdWJjbGFzc2VzJyBoZWFkZXJzLgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KTogRm9yIHRoZSBHVEsgcG9ydCwgdXNlIEdM
Q29udGV4dEdMWCBjb250ZXh0IHVuZGVyIFgxMSBhbmQgR0xDb250ZXh0RUdMV2F5bGFuZAorICAg
ICAgICB1bmRlciBXYXlsYW5kLiBGb3Igb3RoZXIgcG9ydHMgdGhhdCBlbmFibGUgdGhlIEVHTCBz
dXBwb3J0LCB1c2UgR0xDb250ZXh0RUdMWDExIGlmIHRoZSBwb3J0IHN1cHBvcnRzIFgxMSwgYW5k
IHVzZQorICAgICAgICBHTENvbnRleHRFR0xEZWZhdWx0IG90aGVyd2lzZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCk6IFBhc3MgdGhlIGRlc2lyZWQgc3ViY2xhc3Mg
dGhyb3VnaCBhIHRlbXBsYXRlLiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLAor
ICAgICAgICByZXR1cm5pbmcgYSBQYXNzUmVmUHRyIG9mIGl0IGlmIGl0J3MgdmFsaWQuCisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6IERlZmF1bHQgdG8gdGhl
IGludmFsaWQgb3IgdW5rbm93biB2YWx1ZXMgZm9yIHRoZSBvYmplY3QncyBFR0wgc3VyZmFjZSBh
bmQgY29udGV4dCBhbmQKKyAgICAgICAgdGhlIHR5cGUgb2YgdGhlIHN1cmZhY2UuCisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOiBUZXN0IHRoZSBjb250ZXh0
IHN0cmljdGx5IGFnYWluc3QgdGhlIEVHTF9OT19DT05URVhUIHZhbHVlLiBEaXR0byBmb3IgdGhl
IHN1cmZhY2UKKyAgICAgICAgYW5kIEVHTF9OT19TVVJGQUNFLiBVc2UgdGhlIHNoYXJlZERpc3Bs
YXkoKSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNhblJlbmRlclRv
RGVmYXVsdEZyYW1lYnVmZmVyKTogUHJvdmlkZSBhIHByb3BlciBzY29wZSBmb3IgdGhlIHN1cmZh
Y2UgdHlwZSB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6ZGVmYXVsdEZy
YW1lQnVmZmVyU2l6ZSk6IFVzZSB0aGUgc2hhcmVkRGlzcGxheSgpIG1ldGhvZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KTogU3BsaXQgdGhlIGFz
c2VydCB0byBtYWtlIGl0IG1vcmUgY2xlYXIgaW4gdGhlIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAg
ICAgVXNlIHRoZSBzaGFyZWREaXNwbGF5KCkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMOjpzd2FwQnVmZmVycyk6IFVzZSB0aGUgc2hhcmVkRGlzcGxheSgpIG1ldGhvZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6c2hhcmVkRGlzcGxheSk6IFJldHVybiBFR0xf
Tk9fRElTUExBWSBhcyB0aGUgZGVmYXVsdCB2YWx1ZS4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJp
ZGUgdGhpcyBtZXRob2QKKyAgICAgICAgdG8gcHJvdmlkZSB0aGUgcHJvcGVyIGRpc3BsYXkuCisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyk6IFRoaXMgbWV0aG9k
IHJlbWFpbnMgdW5jaGFuZ2VkIGFwYXJ0IGZyb20gdGhlIHNoYXJlZERpc3BsYXkoKSB1c2UuCisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmdsQVBJKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmlzVmFsaWQpOiBSZXR1cm5zIHRydWUgaWYgdGhlIG9i
amVjdCdzIHN1cmZhY2UgYW5kIGNvbnRleHQgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIG5vbi1u
dWxsIHZhbHVlcyAoYXMKKyAgICAgICAgdGhleSBhcmUgcHJlc2VudGVkIGJ5IEVHTF9OT19TVVJG
QUNFIGFuZCBFR0xfTk9fQ09OVEVYVCwgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6IFN0b3AgaW5jbHVkaW5nIHRoZSA8RUdML2Vn
bC5oPiBhcyBpdCBsZWFrcyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgYml0cyBzdHJhaWdodCBpbnRv
IHRoaXMKKyAgICAgICAgaGVhZGVyLCBjYXVzaW5nIGZ1cnRoZXIgaXNzdWVzIHdoZW4gdGhpcyBo
ZWFkZXIgZ2V0cyBpbmNsdWRlZCBlbHNld2hlcmUuIFRoZSBuZWNlc3NhcnkgRUdMIEFQSSBiaXRz
IGFyZSBkZWZpbmVkIG1hbnVhbGx5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0xEZWZhdWx0LmNwcDogQWRkZWQuIFRoZSAnZGVmYXVsdCcgc3ViY2xhc3MsIHBy
aW1hcmlseSB1c2VkIHVuZGVyIG5vbi1YMTEgYW5kIG5vbi1XYXlsYW5kIGRpc3BsYXlzLAorICAg
ICAgICBmb3IgaW5zdGFuY2UgaW4gdGhlIEFwcGxlV2luIHBvcnQuCisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0xEZWZhdWx0OjpHTENvbnRleHRFR0xEZWZhdWx0KTogVHJ5IHRvIGNyZWF0
ZSBlaXRoZXIgYSB3aW5kb3cgc3VyZmFjZSBvciBhIHBidWZmZXIgc3VyZmFjZSwgc2ltcGx5IGtl
ZXBpbmcKKyAgICAgICAgdGhlIHByZS1yZWZhY3RvcmluZyBiZWhhdmlvci4KKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dEVHTERlZmF1bHQ6OnNoYXJlZERpc3BsYXkpOiBUcnkgdG8gZ2V0IHRo
ZSBFR0xEaXNwbGF5IGZvciB0aGUgRUdMX0RFRkFVTFRfRElTUExBWSB2YWx1ZS4gQWdhaW4sIGV4
YWN0bHkgd2hhdCB3YXMKKyAgICAgICAgZG9uZSBmb3IgdGhpcyBFR0wgcGxhdGZvcm0gYmVmb3Jl
IHRoaXMgcmVmYWN0b3JpbmcuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xEZWZhdWx0
OjpjcmVhdGVXaW5kb3dTdXJmYWNlKTogRGl0dG8gb24gdGhlIHByZS1yZWZhY3RvcmluZyBiZWhh
dmlvci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTERlZmF1bHQ6OmNyZWF0ZVBidWZm
ZXJTdXJmYWNlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTERlZmF1bHQuaDogQWRkZWQuIEZvciBub24tR1RLIHBvcnRzLCB0aGUgPGVncGxhdGZv
cm0uaD4gaGVhZGVyIGlzIGluY2x1ZGVkLCB3aXRoIHRoZSBuYXRpdmUgd2luZG93CisgICAgICAg
IHR5cGUgc2V0IHRvIHRoZSBFR0xOYXRpdmVXaW5kb3dUeXBlLiBGb3IgdGhlIEdUSyBwb3J0LCB1
aW50NjRfdCBpcyB1c2VkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0xXYXlsYW5kLmNwcDogQWRkZWQuIFRoZSBHTENvbnRleHRFR0wgc3ViY2xhc3MgdGhhdCdz
IHNwZWNpZmljIHRvIHRoZSBXYXlsYW5kIGRpc3BsYXlzLgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMV2F5bGFuZDo6R0xDb250ZXh0RUdMV2F5bGFuZCk6IEluaXRpYWxpemUgdGhlIGNv
bnRleHQgYW5kIHRoZSBzdXJmYWNlLCBjbGVhbmluZyB1cCBiZWZvcmUgcmV0dXJuaW5nIGlmIHRo
aW5ncyBnbyBhd3J5LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMV2F5bGFuZDo6c2hh
cmVkRGlzcGxheSk6IEZvciB0aGUgR1RLIHBvcnQsIHVzZSB0aGUgZGlzcGxheSB0aGF0J3MgcHJv
dmlkZWQgYnkgdGhlIFdheWxhbmQtc3BlY2lmaWMgZGVmYXVsdCBHZGtEaXNwbGF5LgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMV2F5bGFuZDo6Y3JlYXRlU3VyZmFjZSk6IEF0IHRoZSBt
b21lbnQsIGEgZHVtbXkgc3VyZmFjZSBpcyB1c2VkIHRvIHJlbmRlciBhbGwgdGhlIGluc3RydWN0
aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFu
ZC5oOiBBZGRlZC4gR0xDb250ZXh0RUdMV2F5bGFuZCB1c2VzIGEgcG9pbnRlciB0byBhIHdsX2Vn
bF93aW5kb3cgc3RydWN0IGFzIHRoZSBuYXRpdmUgd2luZG93IHR5cGUuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHA6IEFkZGVkLiBSZXRhaW5zIHRo
ZSBwcmUtcmVmYWN0b3JpbmcgYmVoYXZpb3Igb2YgR0xDb250ZXhFR0wgdW5kZXIgWDExIGRpc3Bs
YXlzLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMWDExOjpHTENvbnRleHRFR0xYMTEp
OiBUcnkgdG8gY3JlYXRlIGVpdGhlciBhIHdpbmRvdyBzdXJmYWNlLCBhIHBidWZmZXIgc3VyZmFj
ZSBvciBhIHBpeG1hcCBzdXJmYWNlIGJlZm9yZSBnaXZpbmcgdXAuCisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0xYMTE6OnNoYXJlZERpc3BsYXkpOiBHTENvbnRleHQ6OnNoYXJlZFgxMURp
c3BsYXkoKSBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCB0byB0aGUgZWdsR2V0RGlzcGxheSBjYWxs
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMWDExOjpjcmVhdGVXaW5kb3dTdXJmYWNl
KTogQ3JlYXRlIHRoZSBuYXRpdmUtd2luZG93LWJhc2VkIHN1cmZhY2UgaWYgcG9zc2libGUsIGNs
ZWFuaW5nIHVwIGlmIHRoaW5ncyBibG93IHVwIGVhcmx5LgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMWDExOjpjcmVhdGVQYnVmZmVyU3VyZmFjZSk6IFRyeSB0byBjcmVhdGUgYSAxeDFw
eCBwaXhlbCBidWZmZXIgc3VyZmFjZSwgYWdhaW4gY2xlYW5pbmcgdXAgaWYgZmFpbGluZyBlYXJs
eS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgxMTo6Y3JlYXRlUGl4bWFwU3VyZmFj
ZSk6IFRyeSBvdCBjcmVhdGUgYSBzdXJmYWNlIGJhc2VkIG9uIGEgMXgxcHggWDExIFBpeG1hcC4g
RGl0dG8gb24gdGhlIHBvc3NpYmxlIGNsZWFudXAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTFgxMS5oOiBBZGRlZC4gVGhlIEdMQ29udGV4dEVHTFgxMSBzdWJj
bGFzcyB1c2VzIHVpbnQ2NF90IGFzIHRoZSBuYXRpdmUgd2luZG93IHR5cGUsIGJhc2VkIG9uIFgx
MSBYSUQuCisKKzIwMTMtMDgtMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgorCiAgICAgICAgIEd1YXJkIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0KCkgd2l0aCBV
U0UoM0RfR1JBUEhJQ1MpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjAyMTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDNhYzM2ZmE3NmY4ODlmOWNkNDBk
NmY3MGY0NTZjZjM0ZWViMzk3NjYuLjlkMTJjNmU2MzhjZWFjZGUwMTVkZjhhZmI1Yzg2ZjJlNDA0
N2EwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOC0yMyAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdl
YkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIHRoZSBXYXlsYW5kIGRlcGVu
ZGVuY3kncyBsaW5raW5nIGZsYWdzIHRvIHRoZSBsaXN0IG9mIHRoZXNlIGZsYWdzCisgICAgICAg
IGZvciB0aGUgbGlid2Via2l0Z3RrIGxpYnJhcnkuCisKIDIwMTMtMDgtMjEgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xMTk4MzY+IFtHVEtdIENocm9tZUNsaWVudDo6cGFpbnQgaXMgc3VzY2VwdGlibGUgdG8gc3lz
dGVtIHRpbWUgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDNjMjFkOWYzZWNmOGZjZTJjZDA4M2Q4YmNh
YTVkNGIyZWRlNGM3YWUuLjljZDc3OWM0MjMxYmUwM2JmYWQ3MmVjMDdjMzI1NjIzZTk3YzE5MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOC0yMyAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQg
dW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIHRoZSBXYXlsYW5kIGRlcGVuZGVuY3kncyBsaW5r
aW5nIGZsYWdzIHRvIHRoZSBsaXN0IG9mIHRoZXNlIGZsYWdzCisgICAgICAgIGZvciB0aGUgbGli
d2Via2l0Mmd0ayBhbmQgdGhlIGxpYlBsYXRmb3JtR3RrMiBsaWJyYXJpZXMgYW5kIHRoZSBXZWJL
aXRQbHVnaW5Qcm9jZXNzIGV4ZWN1dGFibGUuCisKIDIwMTMtMDgtMjIgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdyb25nIGludGVy
ZmFjZSB2ZXJzaW9uIHVzZWQgaW4gV2ViS2l0V2ViUGFnZSBmb3IgbG9hZGVyIGNsaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1BsYXRmb3Jt
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDM1ODg0NDdlOTQ1NzlkNWJiODM1MjI2NmM4NzI5OTMyMzM5
NzY2MGQuLjhkNzUxYmRhNWFkOTVhMzNiODIyY2EyNmU3YjhlMzQ3YzI3Y2YyZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
R05VbWFrZWZpbGUuYW0KQEAgLTExOSw3ICsxMTksOCBAQCBsaWJQbGF0Zm9ybUd0a19sYV9DUFBG
TEFHUyA9IFwKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1MpIFwKIAkkKExJ
QlNFQ1JFVF9DRkxBR1MpIFwKLQkkKExJQlNPVVBfQ0ZMQUdTKQorCSQoTElCU09VUF9DRkxBR1Mp
IFwKKwkkKFdBWUxBTkRfQ0ZMQUdTKQogCiBEZXJpdmVkU291cmNlcy9QbGF0Zm9ybS9Db2xvckRh
dGEuY3BwOiAkKFdlYkNvcmUpL3BsYXRmb3JtL0NvbG9yRGF0YS5ncGVyZiAkKFdlYkNvcmUpL21h
a2UtaGFzaC10b29scy5wbAogCSQoQU1fVl9HRU4pJChQRVJMKSAkKFdlYkNvcmUpL21ha2UtaGFz
aC10b29scy5wbCAkKEdFTlNPVVJDRVNfUExBVEZPUk0pICQoV2ViQ29yZSkvcGxhdGZvcm0vQ29s
b3JEYXRhLmdwZXJmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0YTAxNjRlZjVj
NWU4ZjU1YWY0NGYzYWM4YzIzOGE3NWNjMDRmNzRkLi5jODg3NjdlYTNlMWUyOTQzZGIwOTUxN2Qz
MTg4NDAwNzY4MzU4ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYyNjQs
NiArNjI2NCwxMiBAQCBwbGF0Zm9ybWd0a19zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIFVTRV9P
UEVOR0wKIGlmIFVTRV9FR0wKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFu
ZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xXYXlsYW5kLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xYMTEuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMWDExLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmgKIGVuZGlmICMgRU5EIFVTRV9FR0wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCmluZGV4IDFmMGNkNjZlYmY2MzgxNWUx
MDQ2OWIxYmEyNzIzYmQ3NWZkNzQ3ZTQuLjNlOTc1ZTU0MDE2OThlYTdiNGU5OGMzYTJhM2I3MDRj
NzA5ZDlhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dM
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250
ZXh0LmNwcApAQCAtMjMsNiArMjMsOSBAQAogCiAjaWYgVVNFKEVHTCkKICNpbmNsdWRlICJHTENv
bnRleHRFR0wuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xEZWZhdWx0LmgiCisjaW5jbHVkZSAi
R0xDb250ZXh0RUdMV2F5bGFuZC5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTFgxMS5oIgogI2Vu
ZGlmCiAKICNpZiBVU0UoR0xYKQpAQCAtMzgsNiArNDEsOSBAQAogI2lmIFBMQVRGT1JNKEdUSykK
ICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCisjaWZkZWYg
R0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2VuZGlmCiAjaWZkZWYg
R0RLX1dJTkRPV0lOR19XQVlMQU5ECiAjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KICNlbmRp
ZgpAQCAtMTQ1LDI2ICsxNTEsMzkgQEAgdm9pZCBHTENvbnRleHQ6OmNsZWFudXBBY3RpdmVDb250
ZXh0c0F0RXhpdCgpCiAjZW5kaWYKIH0KIAotCi0KIFBhc3NPd25QdHI8R0xDb250ZXh0PiBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hh
bmRsZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKIHsKLSNpZiBQTEFURk9STShHVEspICYm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiBVU0UoRUdMKQorI2lmIFBMQVRGT1JN
KEdUSykgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCiAgICAgR2RrRGlzcGxheSogZGlz
cGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxh
eV9tYW5hZ2VyX2dldCgpKTsKLQorI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpICYmIFVT
RShHTFgpCisgICAgaWYgKEdES19JU19YMTFfRElTUExBWShkaXNwbGF5KSkgeworICAgICAgICBp
ZiAoT3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29u
dGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBn
bHhDb250ZXh0LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2Vu
ZGlmCisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpICYmIFVTRShFR0wpCisgICAg
QVNTRVJUKCF3aW5kb3dIYW5kbGUpOwogICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGRp
c3BsYXkpKSB7Ci0gICAgICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xD
b250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQor
ICAgICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6
Y3JlYXRlQ29udGV4dDxHTENvbnRleHRFR0xXYXlsYW5kPigwLCBzaGFyaW5nQ29udGV4dCkpCiAg
ICAgICAgICAgICByZXR1cm4gZWdsQ29udGV4dC5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICNlbmRpZgorI2VuZGlmCiAKICNpZiBVU0UoR0xYKQogICAgIGlmIChP
d25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0
KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICByZXR1cm4gZ2x4Q29udGV4
dC5yZWxlYXNlKCk7CiAjZW5kaWYKKwogI2lmIFVTRShFR0wpCi0gICAgaWYgKE93blB0cjxHTENv
bnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFu
ZGxlLCBzaGFyaW5nQ29udGV4dCkpCisjaWYgUExBVEZPUk0oWDExKQorICAgIHR5cGVkZWYgR0xD
b250ZXh0RUdMWDExIEVHTFBsYXRmb3JtQ29udGV4dDsKKyNlbHNlCisgICAgdHlwZWRlZiBHTENv
bnRleHRFR0xEZWZhdWx0IEVHTFBsYXRmb3JtQ29udGV4dDsKKyNlbmRpZgorICAgIGlmIChPd25Q
dHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0PEVH
TFBsYXRmb3JtQ29udGV4dD4od2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCiAgICAgICAg
IHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmNwcAppbmRleCA2ODdiYmUyZGNmOGY4Nzg5MWQ2ZWIwZWIyMTE2OGNiZTc2Zjk1MDg0
Li42ZWQ2Njc2MDA2M2YxZDNiNWQwMmIzMzNkYmUzMjQ5MTM2MjczNjg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApA
QCAtMjEsNyArMjEsMTEgQEAKIAogI2lmIFVTRShFR0wpCiAKKyNpbmNsdWRlICJHTENvbnRleHRF
R0xEZWZhdWx0LmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMV2F5bGFuZC5oIgorI2luY2x1ZGUg
IkdMQ29udGV4dEVHTFgxMS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5j
bHVkZSA8RUdML2VnbC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogI2lmIFVTRShDQUlS
TykKQEAgLTQxLDE1NiArNDUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBF
R0xEaXNwbGF5IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0KLSNpZiBVU0Uo
T1BFTkdMX0VTXzIpCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0VT
X0FQSTsKLSNlbHNlCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0FQ
STsKLSNlbmRpZgotCi1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICAg
ICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkWDEx
RGlzcGxheSgpKTsKLSNlbHNlCi0gICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlz
cGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKLSNlbmRpZgotICAgICAgICBpZiAoZ1NoYXJlZEVH
TERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKGdTaGFyZWRFR0xE
aXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnR0xBUEkpKSkKLSAgICAgICAgICAgIGdTaGFy
ZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgfQotICAgIHJldHVybiBnU2hhcmVk
RUdMRGlzcGxheTsKLX0KLQotc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0dHJpYnV0ZXNb
XSA9IHsKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJ
T04sIDIsCi0jZW5kaWYKLSAgICBFR0xfTk9ORQotfTsKLQotc3RhdGljIGJvb2wgZ2V0RUdMQ29u
ZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZh
Y2VUeXBlKQotewotICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7Ci0jaWYgVVNFKE9QRU5H
TF9FU18yKQotICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQs
Ci0jZWxzZQotICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKLSNl
bmRpZgotICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCi0gICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4
LAotICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAotICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCA4
LAotICAgICAgICBFR0xfQUxQSEFfU0laRSwgOCwKLSAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwg
RUdMX05PTkUsCi0gICAgICAgIEVHTF9OT05FCi0gICAgfTsKLQotICAgIHN3aXRjaCAoc3VyZmFj
ZVR5cGUpIHsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1ZmZlclN1cmZhY2U6Ci0gICAgICAg
IGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwU3VyZmFjZToKLSAgICAgICAgYXR0cmlidXRlTGlz
dFsxM10gPSBFR0xfUElYTUFQX0JJVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTENvbnRl
eHRFR0w6OldpbmRvd1N1cmZhY2U6Ci0gICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJ
TkRPV19CSVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIEVHTGludCBudW1iZXJDb25m
aWdzUmV0dXJuZWQ7Ci0gICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhzaGFyZWRFR0xEaXNwbGF5
KCksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYg
bnVtYmVyQ29uZmlnc1JldHVybmVkOwotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQotewotICAgIEVHTENvbnRleHQgZWdsU2hhcmlu
Z0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNo
YXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9
IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlm
ICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlz
cGxheSwgY29uZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAg
ICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3Bs
YXksIGNvbmZpZywgd2luZG93LCAwKTsKLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFD
RSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdM
Q29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKSk7Ci19Ci0KLVBhc3NP
d25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hh
cmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFn
ZXRFR0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxh
eSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAo
Y29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwgMSwg
RUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xD
cmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsK
LSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgewotICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29udGV4dCwgc3VyZmFj
ZSwgUGJ1ZmZlclN1cmZhY2UpKTsKLX0KLQotUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQot
ewotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xE
aXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENv
bmZpZygmY29uZmlnLCBQaXhtYXBTdXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZp
Zywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQg
PT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMaW50
IGRlcHRoOwotICAgIGlmICghZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdM
X0RFUFRIX1NJWkUsICZkZXB0aCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUGl4
bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9v
dFdpbmRvdyhzaGFyZWRYMTFEaXNwbGF5KCkpLCAxLCAxLCBkZXB0aCk7Ci0gICAgaWYgKCFwaXht
YXApCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0g
ZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBpeG1hcCwgMCk7Ci0KLSAg
ICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNl
LCBQaXhtYXBTdXJmYWNlKSk7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19
Ci0KLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCit0
ZW1wbGF0ZTxjbGFzcyBFR0xQbGF0Zm9ybUNvbnRleHQ+CitQYXNzT3duUHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHR5cGVuYW1lIEVHTFBsYXRmb3JtQ29udGV4
dDo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRl
eHQpCiB7Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBzdGF0aWMg
Ym9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CkBAIC0yMDMsMjAg
KzYwLDE3IEBAIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8g
c3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAw
OwotICAgIE93blB0cjxHTENvbnRleHRFR0w+IGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5k
b3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKLSAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVnbFNoYXJpbmdD
b250ZXh0KTsKLQotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBi
dWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLSAgICAKLSAgICByZXR1cm4gY29udGV4
dC5yZWxlYXNlKCk7CisgICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29udGV4dCA9IGFkb3B0UHRy
KG5ldyBFR0xQbGF0Zm9ybUNvbnRleHQobmF0aXZlV2luZG93LCBlZ2xTaGFyaW5nQ29udGV4dCkp
OworICAgIGlmIChjb250ZXh0LT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBjb250ZXh0LnJl
bGVhc2UoKTsKKworICAgIHJldHVybiBudWxscHRyOwogfQogCi1HTENvbnRleHRFR0w6OkdMQ29u
dGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFj
ZVR5cGUgdHlwZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9zdXJmYWNlKHN1
cmZhY2UpCi0gICAgLCBtX3R5cGUodHlwZSkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKCkK
KyAgICA6IG1fY29udGV4dChFR0xfTk9fQ09OVEVYVCkKKyAgICAsIG1fc3VyZmFjZShFR0xfTk9f
U1VSRkFDRSkKKyAgICAsIG1fdHlwZShVbmtub3duKQogI2lmIFVTRShDQUlSTykKICAgICAsIG1f
Y2Fpcm9EZXZpY2UoMCkKICNlbmRpZgpAQCAtMjMwLDIwICs4NCwxOSBAQCBHTENvbnRleHRFR0w6
On5HTENvbnRleHRFR0woKQogICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2
aWNlKTsKICNlbmRpZgogCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxh
eSgpOwotICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICBpZiAobV9jb250ZXh0ICE9IEVHTF9OT19D
T05URVhUKSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsK
LSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19T
VVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3Bs
YXksIG1fY29udGV4dCk7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KHNoYXJlZERpc3BsYXkoKSwg
RUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAg
IGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgbV9jb250ZXh0KTsKICAgICB9CiAK
LSAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCBt
X3N1cmZhY2UpOworICAgIGlmIChtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAg
IGVnbERlc3Ryb3lTdXJmYWNlKHNoYXJlZERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKIH0KIAogYm9v
bCBHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKIHsKLSAgICBy
ZXR1cm4gbV90eXBlID09IFdpbmRvd1N1cmZhY2U7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBHTENv
bnRleHRFR0w6OldpbmRvd1N1cmZhY2U7CiB9CiAKIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCkKQEAgLTI1Miw4ICsxMDUsOCBAQCBJbnRTaXplIEdMQ29udGV4
dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7
CiAKICAgICBFR0xpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShz
aGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAg
IHx8ICFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9I
RUlHSFQsICZoZWlnaHQpKQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKHNoYXJlZERpc3BsYXko
KSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3Vy
ZmFjZShzaGFyZWREaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCiAg
ICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKQEAgLTI2MSwxOSArMTE0LDIwIEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0
RnJhbWVCdWZmZXJTaXplKCkKIAogYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVu
dCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOworICAgIEFTU0VSVCht
X2NvbnRleHQpOworICAgIEFTU0VSVChtX3N1cmZhY2UpOwogCiAgICAgR0xDb250ZXh0OjptYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQoKSA9PSBtX2Nv
bnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50
KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7Cisg
ICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1
cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycygp
CiB7CiAgICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hhcmVkRUdM
RGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZERpc3BsYXko
KSwgbV9zdXJmYWNlKTsKIH0KIAogdm9pZCBHTENvbnRleHRFR0w6OndhaXROYXRpdmUoKQpAQCAt
Mjg4LDcgKzE0Miw3IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNl
KCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0
ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNh
aXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZERpc3BsYXkoKSwgbV9jb250ZXh0KTsKICNlbmRp
ZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CkBAIC0zMDIsNiArMTU2LDgyIEBAIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0M0QgR0xDb250ZXh0RUdMOjpwbGF0Zm9ybUNvbnRleHQoKQogfQog
I2VuZGlmCiAKK0VHTERpc3BsYXkgR0xDb250ZXh0RUdMOjpzaGFyZWREaXNwbGF5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7Cit9CisKK0VHTEJvb2xlYW4gR0xDb250ZXh0
RUdMOjpjaG9vc2VDb25maWcoRUdMQ29uZmlnKiBjb25maWcgLCBHTENvbnRleHRFR0w6OlN1cmZh
Y2VUeXBlIHN1cmZhY2VUeXBlKSBjb25zdAoreworICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10g
PSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBF
R0xfT1BFTkdMX0VTMl9CSVQsCisjZWxzZQorICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBF
R0xfT1BFTkdMX0JJVCwKKyNlbmRpZgorICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCisgICAgICAg
IEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAorICAgICAgICBF
R0xfU1RFTkNJTF9TSVpFLCA4LAorICAgICAgICBFR0xfQUxQSEFfU0laRSwgOCwKKyAgICAgICAg
RUdMX1NVUkZBQ0VfVFlQRSwgRUdMX05PTkUsCisgICAgICAgIEVHTF9OT05FCisgICAgfTsKKwor
ICAgIHN3aXRjaCAoc3VyZmFjZVR5cGUpIHsKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1ZmZl
clN1cmZhY2U6CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwU3VyZmFjZToKKyAg
ICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUElYTUFQX0JJVDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHTENvbnRleHRFR0w6OldpbmRvd1N1cmZhY2U6CisgICAgICAgIGF0dHJpYnV0
ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0xD
b250ZXh0RUdMOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1Jl
dHVybmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRGlzcGxheSgpLCBhdHRy
aWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNv
bmZpZ3NSZXR1cm5lZDsKK30KKworRUdMZW51bSBHTENvbnRleHRFR0w6OmdsQVBJKCkgY29uc3QK
K3sKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgcmV0dXJuIEVHTF9PUEVOR0xfRVNfQVBJOwor
I2Vsc2UKKyAgICByZXR1cm4gRUdMX09QRU5HTF9BUEk7CisjZW5kaWYKK30KKworRUdMaW50KiBH
TENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgRUdM
aW50IGNvbnRleHRBdHRyaWJ1dGVzW10gPSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAg
ICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKKyNlbmRpZgorICAgICAgICBFR0xfTk9O
RQorICAgIH07CisgICAgcmV0dXJuIGNvbnRleHRBdHRyaWJ1dGVzOworfQorCitib29sIEdMQ29u
dGV4dEVHTDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dCAhPSBFR0xf
Tk9fQ09OVEVYVCAmJiBtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0U7Cit9CisKKyNpZiBQTEFU
Rk9STShXQVlMQU5EKQordGVtcGxhdGUgUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dDxHTENvbnRleHRFR0xXYXlsYW5kPih0eXBlbmFtZSBHTENvbnRl
eHRFR0xXYXlsYW5kOjpOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqID0gMCk7CisjZW5kaWYK
KyNpZiBQTEFURk9STShYMTEpCit0ZW1wbGF0ZSBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVDb250ZXh0PEdMQ29udGV4dEVHTFgxMT4odHlwZW5hbWUgR0xDb250
ZXh0RUdMWDExOjpOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqID0gMCk7CisjZW5kaWYKKyNp
ZiAhUExBVEZPUk0oV0FZTEFORCkgJiYgIVBMQVRGT1JNKFgxMSkKK3RlbXBsYXRlIFBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQ8R0xDb250ZXh0RUdM
RGVmYXVsdD4odHlwZW5hbWUgR0xDb250ZXh0RUdMRGVmYXVsdDo6TmF0aXZlV2luZG93VHlwZSwg
R0xDb250ZXh0KiA9IDApOworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggZDFiMjhlYTMxNTk1ZmI4YTllYTM0YzBhOWU0YTAz
N2ZiMzlmMzQzYy4uNWE1NTM3ZjhjOWU5YzM1ZGE2M2FiNWMxYzJhYjA2OTIxOWEzN2ViYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuaApAQCAtMjMsMTcgKzIzLDMwIEBACiAjaWYgVVNFKEVHTCkKIAogI2luY2x1ZGUgIkdMQ29u
dGV4dC5oIgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogCi0jaW5jbHVkZSA8RUdML2Vn
bC5oPgordHlwZWRlZiB1bnNpZ25lZCBFR0xCb29sZWFuOwordHlwZWRlZiB2b2lkICpFR0xDb25m
aWc7Cit0eXBlZGVmIHZvaWQgKkVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQgKkVHTERpc3BsYXk7
Cit0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVudW07Cit0
eXBlZGVmIGtocm9ub3NfaW50MzJfdCBFR0xpbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZhY2VUeXBl
IHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKLSAgICBz
dGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2lu
ZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwotICAgIHN0YXRpYyBQYXNz
T3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dU
eXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyAgICBlbnVtIFN1cmZhY2VUeXBlIHsK
KyAgICAgICAgV2luZG93U3VyZmFjZSwKKyAgICAgICAgUGJ1ZmZlclN1cmZhY2UsCisgICAgICAg
IFBpeG1hcFN1cmZhY2UsCisgICAgICAgIFVua25vd24KKyAgICB9OworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRUdMUGxhdGZvcm1Db250ZXh0PgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlQ29udGV4dCh0eXBlbmFtZSBFR0xQbGF0Zm9ybUNvbnRleHQ6Ok5hdGl2ZVdp
bmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsKIAogICAgIHZpcnR1YWwg
fkdMQ29udGV4dEVHTCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
QEAgLTQ5LDE4ICs2MiwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIHBsYXRmb3JtQ29udGV4dCgpOwogI2VuZGlmCiAKLXByaXZhdGU6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250
ZXh0IHNoYXJpbmdDb250ZXh0KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+
IGNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Citwcm90ZWN0
ZWQ6CisgICAgR0xDb250ZXh0RUdMKCk7CisgICAgdmlydHVhbCBFR0xEaXNwbGF5IHNoYXJlZERp
c3BsYXkoKSBjb25zdDsKKyAgICBFR0xCb29sZWFuIGNob29zZUNvbmZpZyhFR0xDb25maWcqLCBT
dXJmYWNlVHlwZSkgY29uc3Q7CisgICAgRUdMZW51bSBnbEFQSSgpIGNvbnN0OworICAgIEVHTGlu
dCogY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdDsKKworICAgIEVHTENvbnRleHQgbV9jb250ZXh0
OworICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOworICAgIFN1cmZhY2VUeXBlIG1fdHlwZTsKIAor
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVHTCop
OwogICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KHZvaWQpOwogCi0gICAg
R0xDb250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKKyAg
ICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAotICAgIEVHTENvbnRleHQgbV9jb250ZXh0OwotICAg
IEVHTFN1cmZhY2UgbV9zdXJmYWNlOwotICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKICNpZiBV
U0UoQ0FJUk8pCiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xEZWZhdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xEZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2RiNmQ5Y2M0YzdmZmJiMzNjYjk4N2I2
MzMxYTg3NjM3NjQxZjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuY3BwCkBAIC0wLDAgKzEsOTMgQEAK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xEZWZhdWx0LmgiCisK
KyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dMQ29udGV4dEVHTERlZmF1bHQ6OkdMQ29udGV4dEVHTERlZmF1bHQoR0xDb250ZXh0
RUdMRGVmYXVsdDo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQpCit7CisgICAgaWYgKHNoYXJlZERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExB
WSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNyZWF0ZVdpbmRvd1N1cmZhY2UobmF0aXZl
V2luZG93LCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoY3JlYXRl
UGJ1ZmZlclN1cmZhY2Uoc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQobV9jb250ZXh0ID09IEVHTF9OT19DT05URVhUKTsKKyAgICBBU1NFUlQobV9zdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKTsKK30KKworRUdMRGlzcGxheSBHTENvbnRleHRFR0xEZWZhdWx0
OjpzaGFyZWREaXNwbGF5KCkgY29uc3QKK3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRF
R0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQg
PSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0g
dHJ1ZTsKKworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVG
QVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJ
U1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xC
aW5kQVBJKGdsQVBJKCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9f
RElTUExBWTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKK30KKworYm9v
bCBHTENvbnRleHRFR0xEZWZhdWx0OjpjcmVhdGVXaW5kb3dTdXJmYWNlKEdMQ29udGV4dEVHTERl
ZmF1bHQ6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQoreworICAgIEFTU0VSVChzaGFyZWREaXNwbGF5KCkgIT0gRUdMX05PX0RJU1BMQVkp
OworCisgICAgaWYgKCFuYXRpdmVXaW5kb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNvbmZpZygmZWdsQ29uZmlnLCBH
TENvbnRleHRFR0w6OldpbmRvd1N1cmZhY2UpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KHNoYXJl
ZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMo
KSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2Uo
c2hhcmVkRGlzcGxheSgpLCBlZ2xDb25maWcsIG5hdGl2ZVdpbmRvdywgMCk7CisgICAgaWYgKHN1
cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoc2hh
cmVkRGlzcGxheSgpLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBt
X3R5cGUgPSBHTENvbnRleHRFR0w6OldpbmRvd1N1cmZhY2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgR0xDb250ZXh0RUdMRGVmYXVsdDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVH
TF9OT19ESVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29z
ZUNvbmZpZygmZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJmYWNlKSAhPSBFR0xf
VFJVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0g
ZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRl
eHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05U
RVhUKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZm
ZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUg
fTsKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShzaGFy
ZWREaXNwbGF5KCksIGVnbENvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJm
YWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJl
ZERpc3BsYXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90
eXBlID0gR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFjZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xEZWZh
dWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
RGVmYXVsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmNmNzQyMWEyZjQ0OGU2MDVmMjNkOTc0MDlhZDkwMTFh
NzViM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5oCkBAIC0wLDAgKzEsMzggQEAKKyNpZm5kZWYgR0xD
b250ZXh0RUdMRGVmYXVsdF9oCisjZGVmaW5lIEdMQ29udGV4dEVHTERlZmF1bHRfaAorCisjaWYg
VVNFKEVHTCkKKworI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgIVBMQVRGT1JNKEdU
SykKKyNpbmNsdWRlIDxlZ2xwbGF0Zm9ybS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR0xDb250ZXh0RUdMRGVmYXVsdCA6IHByb3RlY3RlZCBHTENvbnRleHRFR0wg
eworICAgIGZyaWVuZCBjbGFzcyBHTENvbnRleHRFR0w7CisKK3B1YmxpYzoKKyNpZiAhUExBVEZP
Uk0oR1RLKQorICAgIHR5cGVkZWYgRUdMTmF0aXZlV2luZG93VHlwZSBOYXRpdmVXaW5kb3dUeXBl
OworI2Vsc2UKKyAgICB0eXBlZGVmIHVpbnQ2NF90IE5hdGl2ZVdpbmRvd1R5cGU7CisjZW5kaWYK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgRUdMRGlzcGxheSBzaGFyZWREaXNwbGF5KCkgY29u
c3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgR0xDb250ZXh0RUdMRGVmYXVsdChOYXRpdmVX
aW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKworICAgIGJvb2wgY3JlYXRl
V2luZG93U3VyZmFjZShOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
KTsKKyAgICBib29sIGNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkK
KworI2VuZGlmIC8vIEdMQ29udGV4dEVHTERlZmF1bHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRhMTNjMmRkZjIyMTllMzk3ZmUzZDk3MzZmMTc0M2Q1OWNiNGRlZDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw5MSBAQAorI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTFdheWxhbmQuaCIKKworI2lmIFVTRShFR0wpICYmIFBM
QVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaWZk
ZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECisjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KKyNl
bmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR0xDb250ZXh0RUdMV2F5bGFu
ZDo6R0xDb250ZXh0RUdMV2F5bGFuZChHTENvbnRleHRFR0xXYXlsYW5kOjpOYXRpdmVXaW5kb3dU
eXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBpZiAo
c2hhcmVkRGlzcGxheSgpID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm47CisKKyAg
ICBFR0xDb25maWcgY29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWcoJmNvbmZpZywgR0xDb250
ZXh0RUdMOjpXaW5kb3dTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCks
IGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChj
b250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm47CisKKyAgICBFR0xTdXJm
YWNlIHN1cmZhY2UgPSBjcmVhdGVTdXJmYWNlKDAsIGNvbmZpZyk7CisgICAgaWYgKHN1cmZhY2Ug
PT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoc2hhcmVkRGlz
cGxheSgpLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4
dCA9IGNvbnRleHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBtX3R5cGUgPSBHTENv
bnRleHRFR0w6OldpbmRvd1N1cmZhY2U7Cit9CisKK0VHTERpc3BsYXkgR0xDb250ZXh0RUdMV2F5
bGFuZDo6c2hhcmVkRGlzcGxheSgpIGNvbnN0Cit7CisgICAgc3RhdGljIEVHTERpc3BsYXkgc2hh
cmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXpl
ZCA9IHRydWU7CisKKyNpZiBQTEFURk9STShHVEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19X
QVlMQU5EKQorICAgICAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdl
cl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworICAgICAg
ICBBU1NFUlQoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSk7CisgICAgICAgIHN0cnVj
dCB3bF9kaXNwbGF5KiB3bERpc3BsYXkgPSBnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNw
bGF5KGRpc3BsYXkpOworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheSh3
bERpc3BsYXkpOworI2VuZGlmCisKKyAgICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdM
X05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8
ICFlZ2xCaW5kQVBJKGdsQVBJKCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBF
R0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKK30K
KworRUdMU3VyZmFjZSBHTENvbnRleHRFR0xXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKEdMQ29udGV4
dEVHTFdheWxhbmQ6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb25maWcgY29u
ZmlnKQoreworI2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxB
TkQpCisgICAgQVNTRVJUKCFuYXRpdmVXaW5kb3cpOworCisgICAgR2RrRGlzcGxheSogZ2RrRGlz
cGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxh
eV9tYW5hZ2VyX2dldCgpKTsKKyAgICBBU1NFUlQoR0RLX0lTX1dBWUxBTkRfRElTUExBWShnZGtE
aXNwbGF5KSk7CisKKyAgICBzdHJ1Y3Qgd2xfY29tcG9zaXRvciogd2xDb21wb3NpdG9yID0gZ2Rr
X3dheWxhbmRfZGlzcGxheV9nZXRfd2xfY29tcG9zaXRvcihnZGtEaXNwbGF5KTsKKyAgICBpZiAo
IXdsQ29tcG9zaXRvcikKKyAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworCisgICAgc3Ry
dWN0IHdsX3N1cmZhY2UqIHdsU3VyZmFjZSA9IHdsX2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2Uo
d2xDb21wb3NpdG9yKTsKKyAgICBpZiAoIXdsU3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIEVHTF9O
T19TVVJGQUNFOworCisgICAgc3RydWN0IHdsX2VnbF93aW5kb3cqIGVnbFdpbmRvdyA9IHdsX2Vn
bF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSwgMCwgMCk7CisgICAgaWYgKCFlZ2xXaW5kb3cpCisg
ICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKworICAgIHJldHVybiBlZ2xDcmVhdGVXaW5k
b3dTdXJmYWNlKHNoYXJlZERpc3BsYXkoKSwgY29uZmlnLCBlZ2xXaW5kb3csIDApOworI2Vsc2UK
KyAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xX
YXlsYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMV2F5bGFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMmE3NmU0YWE1NDMwZGYxNDI3ODg2Y2JiZDA4ZWVh
MTBhOWEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5oCkBAIC0wLDAgKzEsMzAgQEAKKyNpZm5kZWYg
R0xDb250ZXh0RUdMV2F5bGFuZF9oCisjZGVmaW5lIEdMQ29udGV4dEVHTFdheWxhbmRfaAorCisj
aWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgIkdMQ29udGV4dEVH
TC5oIgorCitzdHJ1Y3Qgd2xfZWdsX3dpbmRvdzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHTENvbnRleHRFR0xXYXlsYW5kIDogcHVibGljIEdMQ29udGV4dEVHTCB7CisgICAgZnJp
ZW5kIGNsYXNzIEdMQ29udGV4dEVHTDsKKworcHVibGljOgorICAgIHR5cGVkZWYgc3RydWN0IHds
X2VnbF93aW5kb3cqIE5hdGl2ZVdpbmRvd1R5cGU7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IEVHTERpc3BsYXkgc2hhcmVkRGlzcGxheSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIEdMQ29udGV4dEVHTFdheWxhbmQoTmF0aXZlV2luZG93VHlwZSwgRUdMQ29udGV4dCBzaGFy
aW5nQ29udGV4dCk7CisgICAgRUdMU3VyZmFjZSBjcmVhdGVTdXJmYWNlKE5hdGl2ZVdpbmRvd1R5
cGUsIEVHTENvbmZpZyk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQorCisjZW5kaWYgLy8gR0xDb250ZXh0RUdM
V2F5bGFuZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMWDExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNGE3NjVmZTRkNjY5NmQzZWVj
NDA0ZDg0ZDc5ZDJhOTFjNmJjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcApAQCAtMCwwICsxLDEzMiBA
QAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTFgxMS5oIgorCisj
aWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oWDExKQorCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisj
aW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dMQ29udGV4dEVH
TFgxMTo6R0xDb250ZXh0RUdMWDExKEdMQ29udGV4dEVHTFgxMTo6TmF0aXZlV2luZG93VHlwZSBu
YXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgaWYgKHNoYXJl
ZERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGNyZWF0ZVdpbmRvd1N1cmZhY2UobmF0aXZlV2luZG93LCBzaGFyaW5nQ29udGV4dCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoY3JlYXRlUGJ1ZmZlclN1cmZhY2Uoc2hhcmluZ0NvbnRleHQp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNyZWF0ZVBpeG1hcFN1cmZhY2Uoc2hhcmluZ0Nv
bnRleHQpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9jb250ZXh0ID09IEVHTF9O
T19DT05URVhUKTsKKyAgICBBU1NFUlQobV9zdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKTsKK30K
KworRUdMRGlzcGxheSBHTENvbnRleHRFR0xYMTE6OnNoYXJlZERpc3BsYXkoKSBjb25zdAorewor
ICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsK
KyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6
ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHNoYXJlZEVHTERp
c3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKTsKKyAg
ICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0
aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdsQVBJKCkpKSkK
KyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisK
KyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKK30KKworYm9vbCBHTENvbnRleHRFR0xYMTE6
OmNyZWF0ZVdpbmRvd1N1cmZhY2UoR0xDb250ZXh0RUdMWDExOjpOYXRpdmVXaW5kb3dUeXBlIG5h
dGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoc2hh
cmVkRGlzcGxheSgpICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIGlmICghbmF0aXZlV2luZG93
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAg
IGlmIChjaG9vc2VDb25maWcoJmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNl
KSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBj
b250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgc2hh
cmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVH
TF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xTdXJmYWNlIHN1
cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmln
LCBuYXRpdmVXaW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7
CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0Owor
ICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250ZXh0RUdMOjpXaW5k
b3dTdXJmYWNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdMQ29udGV4dEVHTFgxMTo6
Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBB
U1NFUlQoc2hhcmVkRGlzcGxheSgpICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIEVHTENvbmZp
ZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNvbmZpZygmZWdsQ29uZmlnLCBHTENvbnRleHRF
R0w6OlBidWZmZXJTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChzaGFyZWREaXNwbGF5
KCksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAg
IGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwg
MSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBl
Z2xDcmVhdGVQYnVmZmVyU3VyZmFjZShzaGFyZWREaXNwbGF5KCksIGVnbENvbmZpZywgcGJ1ZmZl
ckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAg
ICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgY29udGV4dCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1f
c3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250ZXh0RUdMOjpQYnVmZmVyU3Vy
ZmFjZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHTENvbnRleHRFR0xYMTE6OmNyZWF0
ZVBpeG1hcFN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQo
c2hhcmVkRGlzcGxheSgpICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xD
b25maWc7CisgICAgaWYgKGNob29zZUNvbmZpZygmZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBp
eG1hcFN1cmZhY2UpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBF
R0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgZWds
Q29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNv
bnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVH
TGludCBkZXB0aDsKKyAgICBpZiAoZWdsR2V0Q29uZmlnQXR0cmliKHNoYXJlZERpc3BsYXkoKSwg
ZWdsQ29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSAhPSBFR0xfVFJVRSkgeworICAgICAg
ICBlZ2xEZXN0cm95Q29udGV4dChzaGFyZWREaXNwbGF5KCksIGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAo
R0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KEdMQ29udGV4
dDo6c2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwgZGVwdGgpOworICAgIGlmICghcGl4bWFwKSB7
CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBl
Z2xDcmVhdGVQaXhtYXBTdXJmYWNlKHNoYXJlZERpc3BsYXkoKSwgZWdsQ29uZmlnLCBwaXhtYXAs
IDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERl
c3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9
IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250ZXh0RUdMOjpQaXhtYXBTdXJmYWNlOworICAg
IHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBV
U0UoRUdMKSAmJiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFmZDI4ZmRh
MDUzYjk1OWFmMDYzNTQ3Y2JiOTVhMDY0OTNhZDAzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuaApAQCAtMCww
ICsxLDMwIEBACisjaWZuZGVmIEdMQ29udGV4dEVHTFgxMV9oCisjZGVmaW5lIEdMQ29udGV4dEVH
TFgxMV9oCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCisKKyNpbmNsdWRlICJHTENv
bnRleHRFR0wuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHTENvbnRleHRFR0xY
MTEgOiBwdWJsaWMgR0xDb250ZXh0RUdMIHsKKyAgICBmcmllbmQgY2xhc3MgR0xDb250ZXh0RUdM
OworCitwdWJsaWM6CisgICAgdHlwZWRlZiB1aW50NjRfdCBOYXRpdmVXaW5kb3dUeXBlOworCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoKSBjb25zdCBP
VkVSUklERTsKKworcHJpdmF0ZToKKyAgICBHTENvbnRleHRFR0xYMTEoTmF0aXZlV2luZG93VHlw
ZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgYm9vbCBjcmVhdGVXaW5kb3dTdXJm
YWNlKE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIGJv
b2wgY3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAg
Ym9vbCBjcmVhdGVQaXhtYXBTdXJmYWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZP
Uk0oWDExKQorCisjZW5kaWYgLy8gR0xDb250ZXh0RUdMWDExX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0KaW5kZXggNTIyNzcwYjc5ZDY5NmNkYmU5MjAyNTIzMTIxMzQ2ZDU2Yzk1OGRlZS4uMGNm
Y2Y0MDQxYTU1ZTg3Y2E4NmRmYTg1NjI4MDFlNmZhN2FmY2RjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFr
ZWZpbGUuYW0KQEAgLTEyNSw2ICsxMjUsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQo
UE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChX
QVlMQU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWENPTVBPU0lURV9MSUJTKSBcCiAJ
JChYREFNQUdFX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggOTNkMjE0NmVkZTI2MThi
MzUxYWVmNWE4YTIzODFjMDllODUzZjJmMy4uNDY0Njg3YTQxZjgwMzMzMTU5NzI3NGYzMzExZTNl
YmQ0YjVjZDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTI0Niw2ICsyNDYsNyBAQCBsaWJ3
ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoUE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAog
CSQoVU5JQ09ERV9MSUJTKSBcCisJJChXQVlMQU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAog
CSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYQ09NUE9TSVRFX0xJQlMpIFwKQEAgLTUyMiw3ICs1MjMs
OCBAQCBsaWJQbGF0Zm9ybUd0azJfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdT
KSBcCiAJJChHVEsyX0NGTEFHUykgXAogCSQoTElCU0VDUkVUX0NGTEFHUykgXAotCSQoTElCU09V
UF9DRkxBR1MpCisJJChMSUJTT1VQX0NGTEFHUykgXAorCSQoV0FZTEFORF9DRkxBR1MpCiAKICMg
SW5qZWN0ZWQgQnVuZGxlCiBpbmplY3RlZGJ1bmRsZWRpciA9ICQobGliZGlyKS93ZWJraXQyZ3Rr
LTMuMC9pbmplY3RlZC1idW5kbGUKQEAgLTY3Miw2ICs2NzQsNyBAQCBQcm9ncmFtc19XZWJLaXRQ
bHVnaW5Qcm9jZXNzX0xEQUREID0gXAogCSQoU0hNX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykg
XAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChXQVlMQU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykg
XAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
YXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBl
bmRlbmNpZXMubTQKaW5kZXggZDg0MDFjZjA4Y2ZkMGM0MDZlMzk0NzQzNDVjYjVlYjUwMTIxMGVl
Yi4uOTMxNWYxZDJhOTI5OTcyMmZiYTMzNzhiNDYxMWQ5NDFjN2EwMGQzZiAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9v
bHMvRmluZERlcGVuZGVuY2llcy5tNApAQCAtNzgsNiArNzgsNyBAQCBjYXNlICIkd2l0aF9ndGsi
IGluCiAgICAgICAgIEdBSUxfUkVRVUlSRURfVkVSU0lPTj1nYWlsMl9yZXF1aXJlZF92ZXJzaW9u
CiAgICAgICAgIDs7CiAgICAgMy4wKSBHVEtfUkVRVUlSRURfVkVSU0lPTj1ndGszX3JlcXVpcmVk
X3ZlcnNpb24KKyAgICAgICAgR1RLX1dBWUxBTkRfUkVRVUlSRURfVkVSU0lPTj1ndGszX3dheWxh
bmRfcmVxdWlyZWRfdmVyc2lvbgogICAgICAgICBHVEtfQVBJX1ZFUlNJT049My4wCiAgICAgICAg
IFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTj0zCiAgICAgICAgIFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTj0wCkBAIC0xODEsMTIgKzE4MiwyNCBAQCBlbHNlCiAgICAgICAgIEFDX1NVQlNU
KFtYVF9DRkxBR1NdKQogICAgICAgICBBQ19TVUJTVChbWFRfTElCU10pCiAgICBmaQorCisgICAg
aWYgdGVzdCAiJEdUS19BUElfVkVSU0lPTiIgPSAiMy4wIjsgdGhlbgorICAgICAgICBQS0dfQ0hF
Q0tfTU9EVUxFUyhHVEtfV0FZTEFORCwgZ3RrKy13YXlsYW5kLSRHVEtfQVBJX1ZFUlNJT04gPj0g
JEdUS19XQVlMQU5EX1JFUVVJUkVEX1ZFUlNJT04sIFtoYXZlX2d0a193YXlsYW5kPXllc10sIFto
YXZlX2d0a193YXlsYW5kPW5vXSkKKyAgICBlbHNlCisgICAgICAgIGhhdmVfZ3RrX3dheWxhbmQ9
bm8KKyAgICBmaQogZmkKIEFDX1NVQlNUKEdUS19DRkxBR1MpCiBBQ19TVUJTVChHVEtfTElCUykK
IEFDX1NVQlNUKENBSVJPX0NGTEFHUykKIEFDX1NVQlNUKENBSVJPX0xJQlMpCiAKK2lmIHRlc3Qg
IiRoYXZlX2d0a193YXlsYW5kIiA9ICJ5ZXMiOyB0aGVuCisgICAgUEtHX0NIRUNLX01PRFVMRVMo
W1dBWUxBTkRdLCBbd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2xdKQorICAgIEFDX1NVQlNUKFdB
WUxBTkRfQ0ZMQUdTKQorICAgIEFDX1NVQlNUKFdBWUxBTkRfTElCUykKK2ZpCisKIEFDX0NIRUNL
X0hFQURFUlMoW0dML2dseC5oXSwgW2hhdmVfZ2x4PSJ5ZXMiXSwgW2hhdmVfZ2x4PSJubyJdKQog
QUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBHTFggc3VwcG9ydF0pCiBpZiB0ZXN0
ICIkZW5hYmxlX2dseCIgIT0gIm5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29s
cy9TZXR1cEF1dG9jb25mSGVhZGVyLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9jb25m
SGVhZGVyLm00CmluZGV4IDliMzdlYjc0ZjVlNTU0NmFjOTAxZTJjYWE5MzkxM2IwZWZjNTU4MDMu
LjJlZmEwOWIxYzBkY2JmZDQ0MDU5Mzk3YTVhYzEzOTJmYzdjMmZkZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvY29uZkhlYWRlci5tNAorKysgYi9Tb3VyY2UvYXV0b3Rv
b2xzL1NldHVwQXV0b2NvbmZIZWFkZXIubTQKQEAgLTQzLDYgKzQzLDE0IEBAIGZpCiBpZiB0ZXN0
ICIkd2l0aF90YXJnZXQiID0gIngxMSI7IHRoZW4KICAgICBBQ19ERUZJTkUoW01PWl9YMTFdLCBb
MV0sIFsgXSkKICAgICBBQ19ERUZJTkUoW1dURl9QTEFURk9STV9YMTFdLCBbMV0sIFtEZWZpbmUg
aWYgdGFyZ2V0IGlzIFgxMV0pCisKKyAgICAjIEZJWE1FOiBDb21waWxhdGlvbiBmb3IgdGhlIFdh
eWxhbmQgdGFyZ2V0IGlzIGF0IHRoZSBtb21lbnQgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHN1
cHBvcnQgZm9yIHRoZQorICAgICMgWDExIHRhcmdldCBkdWUgdG8gdGhlIHBsdWdpbiBzdXBwb3J0
IGluIFdlYktpdDIgYmVpbmcgZW5hYmxlZCBieSBkZWZhdWx0IGFuZCByZWx5aW5nIHN0cmljdGx5
IG9uIFgxMSBBUElzLgorICAgICMgSW4gdGhlIGZ1dHVyZSBpdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gY29tcGlsZSBXZWJLaXRHVEsrIGZvciB0aGUgV2F5bGFuZCB0YXJnZXQgb25seSwgdGhyb3Vn
aCBzcGVjaWZ5aW5nCisgICAgIyB0aGUgLS13aXRoLXRhcmdldD13YXlsYW5kIGNvbmZpZ3VyYXRp
b24gZmxhZy4KKyAgICBpZiB0ZXN0ICIkaGF2ZV9ndGtfd2F5bGFuZCIgPSAieWVzIjsgdGhlbgor
ICAgICAgICBBQ19ERUZJTkUoW1dURl9QTEFURk9STV9XQVlMQU5EXSwgWzFdLCBbRGVmaW5lIGlm
IHRhcmdldCBpcyBXYXlsYW5kXSkKKyAgICBmaQogZmkKIAogaWYgdGVzdCAiJGVuYWJsZV9mYXN0
X21hbGxvYyIgPSAibm8iOyB0aGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1ZlcnNp
b25zLm00IGIvU291cmNlL2F1dG90b29scy9WZXJzaW9ucy5tNAppbmRleCBmYTg4ZDNlMTY2MzU3
M2IwNjdiMzNmMGMzNTI3NzAwMzljYWFkMDRkLi45YTNmYzEzMzk5NWViNDE5YzQ5NDc1ZDEzM2I5
ZDJkM2QzODNhNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1ZlcnNpb25zLm00Cisr
KyBiL1NvdXJjZS9hdXRvdG9vbHMvVmVyc2lvbnMubTQKQEAgLTE5LDYgKzE5LDcgQEAgbTRfZGVm
aW5lKFtndGsyX3JlcXVpcmVkX3ZlcnNpb25dLCBbMi4yNC4xMF0pCiBtNF9kZWZpbmUoW2dhaWwy
X3JlcXVpcmVkX3ZlcnNpb25dLCBbMS44XSkKIG00X2RlZmluZShbZ3RrM19yZXF1aXJlZF92ZXJz
aW9uXSwgWzMuNi4wXSkKIG00X2RlZmluZShbZ2FpbDNfcmVxdWlyZWRfdmVyc2lvbl0sIFszLjBd
KQorbTRfZGVmaW5lKFtndGszX3dheWxhbmRfcmVxdWlyZWRfdmVyc2lvbl0sIFszLjkuNl0pCiAK
IG00X2RlZmluZShbYXRzcGkyX3JlcXVpcmVkX3ZlcnNpb25dLCBbMi41LjNdKQogbTRfZGVmaW5l
KFtjYWlyb19yZXF1aXJlZF92ZXJzaW9uXSwgWzEuMTBdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY0ODgyZjhmZWYzYmRkOGJhYjIwMjY3MTMw
OWYxZmMwYjViZjdjNzguLmFkM2JjOWY2ZjY0NjAxMzg5ZGE5YWI0Nzg1NzBjZjYzOWMwYWU4NDYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMy0wOC0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbTogQWRkIHRoZSBXYXlsYW5kIGRlcGVuZGVuY3kncyBsaW5raW5nIGZsYWdzIHRvIHRoZSBs
aXN0IG9mIHRoZXNlIGZsYWdzCisgICAgICAgIGZvciB0aGUgRHVtcFJlbmRlclRyZWUgZXhlY3V0
YWJsZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOiBEaXR0byBmb3Ig
dGhlIFRlc3RXZWJDb3JlIGV4ZWN1dGFibGUuCisKIDIwMTMtMDgtMjIgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgTExWTSBiaW5hcnkgZHJvcHMgYW5k
IHNjcmlwdHMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gU1ZOCmRpZmYgLS1naXQgYS9Ub29s
cy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCmluZGV4IDYzYTRhMWMzZGJk
OTk3ZjE3ZDk4MTk5NDk4YzFlNzQyZDE0YzY4NTUuLmUxZDZiMzA1NDk0ZTE4MDY2Yzc0ODM2NTlk
NDkzM2JkYmM1M2M5MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rv
b2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTksNiArMTk5LDcgQEAgUHJvZ3JhbXNfRHVtcFJlbmRl
clRyZWVfTERBREQgPSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKExJQlNPVVBfTElCUykgXAogCSQo
RlJFRVRZUEVfTElCUykgXAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXSU5NTV9MSUJTKSBcCiAJ
JChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5h
bQppbmRleCBiY2YwYTUxYWY2N2MxMDk1MTBkZThmZTA5NTM2NTJlNTk3ZDZmOTg0Li5jYTU3YjBl
Nzg1ZWZkNzIxNjMxN2M2MmRlZGNjOGZlZTc5YTA3Zjg1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFr
ZWZpbGUuYW0KQEAgLTE1OSw2ICsxNTksNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RX
ZWJDb3JlX0xEQUREID0gXAogCSQoUE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQo
VU5JQ09ERV9MSUJTKSBcCisJJChXQVlMQU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQo
WFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggYTcxNzgzNjA0YzZjNzllYTgyNDVmOWEzY2RlYzMyNjcyNzYyYjFhNC4u
NGY0OGY1YzI5MGNjNDVmZWZlYzljZTBkODc0YTQ1ZjM2MDgzZWQ4ZCAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA4LTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2Vi
R0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNDog
Q2hlY2sgdGhhdCB0aGUgR1RLKy1XYXlsYW5kIGRlcGVuZGVuY3kgaXMgcHJlc2VudC4gSWYgaXQg
aXMsIGFsc28gY2hlY2sKKyAgICAgICAgZm9yIHRoZSBXYXlsYW5kIGNsaWVudCBhbmQgV2F5bGFu
ZCBFR0wgZGVwZW5kZW5jaWVzLgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRv
Y29uZkhlYWRlci5tNDogRGVmaW5lIFdURl9QTEFURk9STV9XQVlMQU5EIHRvIDEgaWYgYWxsIHRo
ZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIGFyZQorICAgICAgICBwcmVzZW50IGFuZCB3aGVuIGJ1
aWxkaW5nIGZvciB0aGUgWDExIHRhcmdldC4gVGhlIGxhdHRlciBwYXJ0IGlzIGEgc3RyaWN0IHJl
cXVpcmVtZW50IGZvciBub3cgZHVlIHRvIHRoZSBwbHVnaW4gY29kZQorICAgICAgICBiZWluZyBo
ZWF2aWx5IHRpZWQgdG8gdGhlIFgxMSBBUElzLgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
VmVyc2lvbnMubTQ6IFJlcXVpcmUgdGhlIEdUSysgV2F5bGFuZCBkZXBlbmRlbmN5IGZyb20gdGhl
IDMuMTAgcmVsZWFzZSBjeWNsZS4KKwogMjAxMy0wOC0xNSAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgYnVpbGQgZml4IGFmdGVy
IHIxNTQxMDYuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212358</attachid>
            <date>2013-09-23 09:44:45 -0700</date>
            <delta_ts>2013-10-04 12:55:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20130923094443.patch</filename>
            <type>text/plain</type>
            <size>44703</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlY2I4NTg4N2RmMjc4
ZWEwOGU4ODM1ZjBlYjI4MTJkMmExZTE3MzNkLi5hM2MxOTMxZTBlNWVmZDRhZDFlZjJhMTEwYmQy
YzNjMjIzNjRiMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yMyAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfQ0ZMQUdT
IHRvIHRoZSBsaXN0IG9mIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBsaWJQbGF0Zm9ybUd0ay5s
YSBzb3VyY2VzLgorCiAyMDEzLTA2LTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGZjNTNjYzhkYzU0OGQ3M2MxYWM4YzVhMjIxMzdjMGQzNmM3ZmVhNC4uNjkxZmUxYWE5MDVkNWYz
ZjhlNDMyZmVhZDI0NGM3OGJmYjFhNDNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisy
MDEzLTA5LTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgR0xDb250ZXh0RUdMIGNsYXNzIGlz
IHJlZmFjdG9yZWQgc28gaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHBsYXRmb3JtLXNwZWNpZmlj
IHN1YmNsYXNzZXMgb2YgaXQuIFN1YmNsYXNzZXMgbXVzdAorICAgICAgICBzZXQgdXAgdGhlIEVH
TERpc3BsYXkgYW5kIEVHTENvbnRleHQgaW4gdGhlaXIgY29uc3RydWN0b3JzIGFuZCBkZXRlcm1p
bmUgdGhlIHR5cGUgb2YgdGhlIHN1cmZhY2UgdGhleSB1c2VkIGZvciB0aGUKKyAgICAgICAgY29u
dGV4dCBjcmVhdGlvbi4gSWYgYWxsIHRoaXMgaXMgZG9uZSBhY2NvcmRpbmdseSwgdGhlIEdMQ29u
dGV4dEVHTCBpbnN0YW5jZSBpcyBkZWVtZWQgdmFsaWQgYW5kIGNhbiBiZSB1c2VkIGZ1cnRoZXIu
CisKKyAgICAgICAgU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgbWV0aG9kcyB0aGF0IHJldHVybiB0
aGUgZGVzaXJlZCBFR0xDb25maWcsIHRoZSBHTCBBUEkgb3IgdGhlIGNvbnRleHQgYXR0cmlidXRl
cywgaWYgbmVjZXNzYXJ5LgorICAgICAgICBBcGFydCBmcm9tIHRob3NlIHRocmVlIG1ldGhvZHMg
YW5kIHN1YmNsYXNzLXNwZWNpZmljIHNldHVwcywgdGhlIGNvZGUgaXMgc2hhcmVkIHRocm91Z2gg
dGhlIEdMQ29udGV4dEVHTCBwYXJlbnQgY2xhc3MuCisgICAgICAgIFRoaXMgY292ZXJzIGNvbXBs
ZXRlIGNsZWFudXAgdXBvbiB0aGUgb2JqZWN0IGRlc3RydWN0aW9uLCBidWZmZXIgc3dhcHBpbmcg
Y2FsbHMgYW5kIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIHNpemUgcXVlcnlpbmcuCisKKyAgICAg
ICAgVGhlIHRlbXBsYXRpemVkIEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCB0YWtlcyB0aGUg
ZGVzaXJlZCBHTENvbnRleHRFR0wgc3ViY2xhc3MgdHlwZSBhcyB0aGUgdGVtcGxhdGUgYXJndW1l
bnQgYW5kCisgICAgICAgIHJldHVybnMgYSBuZXcgb2JqZWN0IG9mIHRoYXQgdHlwZSBpZiB0aGUg
Y29udGV4dCBpcyB2YWxpZCwgYW5kIGEgbnVsbHB0ciBvdGhlcndpc2UuCisKKyAgICAgICAgRm91
ciBzdXJmYWNlIHR5cGVzIChhcGFydCBmcm9tIHRoZSBkZWZhdWx0IFVua25vd24gdHlwZSkgYXJl
IHN1cHBvcnRlZDoKKyAgICAgICAgLSB3aW5kb3cgc3VyZmFjZSwgdXNlZCB3aGVuIHRoZSBzdXJm
YWNlIHdhcyBhY3F1aXJlZCB0aHJvdWdoIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UsCisgICAgICAg
IC0gcGJ1ZmZlciBzdXJmYWNlLCB1c2VkIHdoZW4gdGhlIHN1cmZhY2Ugd2FzIGFjcXVpcmVkIHRo
cm91Z2ggZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UsCisgICAgICAgIC0gcGl4bWFwIHN1cmZhY2Us
IHVzZWQgd2hlbiB0aGUgc3VyZmFjZSB3YXMgYWNxdWlyZWQgdGhyb3VnaCBlZ2xDcmVhdGVQaXht
YXBTdXJmYWNlLAorICAgICAgICAtIHN1cmZhY2VsZXNzLCB3aGVuIHRoZSBjb250ZXh0IHdhcyBh
cXVpcmVkIHdpdGhvdXQgYSB2YWxpZCBzdXJmYWNlLCBwb3NzaWJsZSB3aXRoIHRoZSBFR0xfS0hS
X3N1cmZhY2VsZXNzX2NvbnRleHQgZXh0ZW5zaW9uLgorCisgICAgICAgIFRoZSBHTENvbnRleHRF
R0xYMTEgc3ViY2xhc3MgcmV0YWlucyB0aGUgY3VycmVudCBiZWhhdmlvciwgY3JlYXRpbmcgZWl0
aGVyIGEgd2luZG93LCBwYnVmZmVyIG9yIHBpeG1hcCBzdXJmYWNlIGFuZCBwcm92aWRlCisgICAg
ICAgIGEgY29udGV4dCBiYXNlZCBvbiB0aGF0LiBUaGUgR0xDb250ZXh0RUdMRGVmYXVsdCBzdWJj
bGFzcyB0cmllcyB0byBjcmVhdGUgZWl0aGVyIGEgd2luZG93IG9yIHBidWZmZXIgc3VyZmFjZSBh
bmQgcHJvdmlkZSBhCisgICAgICAgIGNvbnRleHQgYmFzZWQgb24gdGhhdC4gVGhlIEdMQ29udGV4
dEVHTFdheWxhbmQgc3ViY2xhc3MgcmVsaWVzIG9uIHRoZSBzdXJmYWNlbGVzcyBjb250ZXh0IGV4
dGVuc2lvbiwgY3JlYXRpbmcgYSBjb250ZXh0CisgICAgICAgIHdpdGhvdXQgYSB2YWxpZCBleHRl
bnNpb24uCisKKyAgICAgICAgR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93IG5vdyBy
ZXR1cm5zIGVpdGhlciBHTENvbnRleHRFR0xYMTEgb3IgR0xDb250ZXh0RUdMV2F5bGFuZCBvYmpl
Y3QgdW5kZXIgdGhlIEdUSyBwb3J0LAorICAgICAgICBkZXBlbmRpbmcgb24gd2hhdCBkaXNwbGF5
IGlzIGJlaW5nIHVzZWQuIE9uIG90aGVyIHBvcnRzIHRoZSBjdXJyZW50IGJlaGF2aW9yIGlzIHBy
ZXNlcnZlZCwgcmV0dXJuaW5nIEdMQ29udGV4dEdMWCBpZgorICAgICAgICBHTFggc3VwcG9ydCBp
cyBlbmFibGVkLCBvciwgaWYgRUdMIHN1cHBvcnQgaXMgZW5hYmxlZCwgZWl0aGVyIEdMQ29udGV4
dEVHTFgxMSBmb3Igbm9uLUdUSyBwb3J0cyB0aGF0IGVuYWJsZSBYMTEgc3VwcG9ydCAKKyAgICAg
ICAgb3IgR0xDb250ZXh0RUdMRGVmYXVsdCBmb3Igb3RoZXIgcG9ydHMgKGxpa2UgdGhlIFdpbmRv
d3MtYmFzZWQgcG9ydHMpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkIGJ1
aWxkIHRhcmdldHMgZm9yIHRoZSBuZXcgZmlsZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6Y3JlYXRlQ29u
dGV4dEZvcldpbmRvdyk6IENob29zZSBiZXR3ZWVuIEdMQ29udGV4dEdMWCBvciBXYXlsYW5kLXNw
ZWNpZmljIEdMQ29udGV4dEVHTCBmb3IgdGhlIEdUSyBwb3J0LAorICAgICAgICBkZXBlbmRpbmcg
b24gdGhlIGRpc3BsYXkgYmVpbmcgdXNlZC4gQmVoYXZpb3IgaXMgcmV0YWluZWQgZm9yIG90aGVy
IHBvcnRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KTogVGFrZSB0
aGUgdHlwZSBvZiB0aGUgZGVzaXJlZCBzdWJjbGFzcyBvZiBHTENvbnRleHRFR0wgdGhyb3VnaCB0
aGUgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIEEgbmV3IG9iamVjdCBvZiB0aGF0IHR5cGUg
aXMgY3JlYXRlZCwgYW5kIHJldHVybmVkIGlmIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QgaXMgYSB2
YWxpZCBHTENvbnRleHRFR0wuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29u
dGV4dEVHTCk6IEluaXRpYWxpemUgdGhlIG1lbWJlcnMgdG8gaW52YWxpZCB2YWx1ZXMuCisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOiBDbGVhbiB1cCB0aGUg
RUdMIGNvbnRleHQgYW5kIHN1cmZhY2UgaWYgdGhleSB3ZXJlIGluaXRpYWxpemVkLgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcik6
IFB1dCB0aGUgZW51bSB2YWx1ZSBpbnRvIHRoZSBwcm9wZXIgc2NvcGUuCisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOiBBc3NlcnQgdGhhdCB0
aGUgb2JqZWN0IGlzIHZhbGlkIHdoZW4gdGhlIG1ldGhvZCBpcyBpbnZva2VkLiBUaGUgRUdMIGRp
c3BsYXkKKyAgICAgICAgaXMgbm93IGxvY2F0ZWQgaW4gYSBtZW1iZXIgdmFyaWFibGUuCisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6IERpdHRvLiBPbmx5
IHN3YXAgdGhlIGJ1ZmZlcnMgaWYgdGhlIHN1cmZhY2UgbWVtYmVyIHZhcmlhYmxlIGhhcyBhIHZh
bGlkIHZhbHVlICh3aGljaCBtYXkKKyAgICAgICAgbm90IGJlIHRydWUgaW4gdGhlIGNhc2Ugb2Yg
YSBzdXJmYWNlbGVzcyBjb250ZXh0KS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6
Y2Fpcm9EZXZpY2UpOiBEaXR0byBvbiB0aGUgb2JqZWN0IHZhbGlkaXR5IGFuZCB0aGUgRUdMIGRp
c3BsYXkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpj
aG9vc2VDb25maWcpOiBBIHNoYXJlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJvcGVyIEVHTENv
bmZpZyBjaG9vc2luZy4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlCisgICAgICAgIGNv
bnN0cnVjdG9yIG9mIGFueSBzdWJjbGFzcyB0aGF0IHJlcXVpcmVzIGEgcHJvcGVyIEVHTENvbmZp
ZyBmb3IgdGhlIHN1cmZhY2UgY3JlYXRpb24uIEl0IHNob3VsZG4ndCBiZSBjYWxsZWQgaWYgdGhh
dCBzdWJjbGFzcworICAgICAgICB3aWxsIHByb3ZpZGUgYSBzdXJmYWNlbGVzcyBjb250ZXh0LiBD
YW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIHJlcXVpcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpnbEFQSSk6IEEgc2hhcmVkIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBHTCBBUEkgdGhhdCdzIHRvIGJlIHVzZWQsIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQtdGltZSBj
b25maWd1cmF0aW9uLgorICAgICAgICBDYW4gYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgaWYg
cmVxdWlyZWQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1
dGVzKTogQSBzaGFyZWQgaW1wbGVtZW50YXRpb24gdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIHdo
YXQgYXR0cmlidXRlcyB0aGUgRUdMQ29udGV4dAorICAgICAgICBzaG91bGQgcG9zc2VzLiBDYW4g
YmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIHJlcXVpcmVkLgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjppc1ZhbGlkKTogQSB2YWxpZGl0eSBjaGVja2VyIG1ldGhvZCB0aGF0
IGNoZWNrcyBpZiBib3RoIHRoZSBjb250ZXh0IGFuZCBzdXJmYWNlIGFyZSBvZiB2YWxpZCB2YWx1
ZSwgdGhlCisgICAgICAgIGxhdHRlciBwb3NzaWJseSBiZWluZyBudWxsIGlmIHRoZSBjb250ZXh0
IGlzIG9mIHRoZSBzdXJmYWNlbGVzcyB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuaDogRG9uJ3QgaW5jbHVkZSB0aGUgPEVHTC9lZ2wuaD4gaGVhZGVy
IGRpcmVjdGx5IGFzIHRoYXQgbGVha3MgdGhlIHBsYXRmb3JtIGluZm9ybWF0aW9uIGludG8KKyAg
ICAgICAgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IGNvZGUuIEluc3RlYWQsIDxLSFIva2hycGxh
dGZvcm0uaD4gaXMgaW5jbHVkZWQgaW5zdGVhZCwgd2l0aCB0aGUgcmVxdWlyZWQgRUdMIHR5cGVz
IG1hbnVhbGx5IGRlZmluZWQKKyAgICAgICAgdG8gdGhlIHNhbWUgdHlwZXMgYXMgaW4gdGhlIDxF
R0wvZWdsLmg+IGhlYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMRGVmYXVsdC5jcHA6IEFkZGVkLiBUaGUgZGVmYXVsdCBHTENvbnRleHRFR0wgc3ViY2xh
c3MgaW1wbGVtZW50YXRpb24uIFJldGFpbnMgY3VycmVudCBiZWhhdmlvci4KKyAgICAgICAgKFdl
YkNvcmU6OnNoYXJlZERpc3BsYXkpOiBVc2UgdGhlIEVHTF9ERUZBVUxUX0RJU1BMQVkgYXMgdGhl
IG9yaWdpbiBvZiB0aGUgc2hhcmVkIEVHTERpc3BsYXkuCisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0xEZWZhdWx0OjpHTENvbnRleHRFR0xEZWZhdWx0KTogVHJ5IHRvIHByb3ZpZGUgZWl0
aGVyIGEgd2luZG93IG9yIHBidWZmZXIgRUdMU3VyZmFjZSBhbmQgdGhlIHJlc3VsdGluZyBFR0xD
b250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMRGVmYXVsdDo6Y3JlYXRlV2lu
ZG93U3VyZmFjZSk6IENyZWF0ZSBhIHdpbmRvdyBzdXJmYWNlIGlmIHBvc3NpYmxlLgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMRGVmYXVsdDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UpOiBD
cmVhdGUgYSBwYnVmZmVyIHN1cmZhY2UgaWYgcG9zc2libGUuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuaDogQWRkZWQuIFN1YmNsYXNzZXMgR0xD
b250ZXh0RUdMIGFuZCBvbiBub24tR1RLIHBvcnRzIHVzZXMgdGhlIG5hdGl2ZSB3aW5kb3cgdHlw
ZSBhcworICAgICAgICBwcm92aWRlZCBieSB0aGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPiBoZWFkZXIu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3Bw
OiBBZGRlZC4gVGhlIFdheWxhbmQtc3BlY2lmaWMgR0xDb250ZXh0RUdMIHN1YmNsYXNzIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6IE9uIEdUSywgdXNl
IHRoZSB3bF9kaXNwbGF5IG9iamVjdCAoYXMgcHJvdmlkZWQgYnkgdGhlIEdUSysgdG9vbGtpdCBm
b3IgdGhlIGRlZmF1bHQgR2RrRGlzcGxheSkgYXMgdGhlIG9yaWdpbgorICAgICAgICBvZiB0aGUg
c2hhcmVkIEVHTERpc3BsYXkuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xXYXlsYW5k
OjpHTENvbnRleHRFR0xXYXlsYW5kKTogQ2hlY2sgdGhhdCB0aGUgc3VyZmFjZWxlc3MgY29udGV4
dCBleHRlbnNpb24gaXMgYXZhaWxhYmxlLCBmYWlsaW5nIGlmIGl0J3Mgbm90LgorICAgICAgICBB
IHN1cmZhY2VsZXNzIEVHTENvbnRleHQgaXMgY3JlYXRlZCBvdGhlcndpc2UuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuaDogQWRkZWQuIFN1YmNs
YXNzZXMgR0xDb250ZXh0RUdMIGFuZCB1c2VzIGEgd2xfZWdsX3dpbmRvdyBwb2ludGVyIGFzIHRo
ZSBuYXRpdmUgd2luZG93IHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTFgxMS5jcHA6IEFkZGVkLiBUaGUgWDExLXNwZWNpZmljIEdMQ29udGV4dEVHTCBz
dWJjbGFzcyBpbXBsZW1lbnRhdGlvbi4gUmV0YWlucyBjdXJyZW50IGJlaGF2aW9yLgorICAgICAg
ICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6IFVzZSB0aGUgc2hhcmVkIFgxMSBkaXNwbGF5IChh
cyBzZXQgdXAgaW4gR0xDb250ZXh0IGNsYXNzKSBhcyB0aGUgb3JpZ2luIG9mIHRoZSBzaGFyZWQg
RUdMRGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgxMTo6R0xDb250ZXh0
RUdMWDExKTogVHJ5IHRvIHByb3ZpZGUgZWl0aGVyIGEgd2luZG93LCBwYnVmZmVyIG9yIHBpeG1h
cCBFR0xTdXJmYWNlIGFuZCB0aGUgcmVzdWx0aW5nIEVHTENvbnRleHQuCisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0xYMTE6OmNyZWF0ZVdpbmRvd1N1cmZhY2UpOiBDcmVhdGUgYSB3aW5k
b3cgc3VyZmFjZSBpZiBwb3NzaWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgx
MTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UpOiBDcmVhdGUgYSBwYnVmZmVyIHN1cmZhY2UgaWYgcG9z
c2libGUuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xYMTE6OmNyZWF0ZVBpeG1hcFN1
cmZhY2UpOiBDcmVhdGUgYSBwaXhtYXAgc3VyZmFjZSBpZiBwb3NzaWJsZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmg6IEFkZGVkLiBTdWJjbGFzc2Vz
IEdMQ29udGV4dEVHTCBhbmQgdXNlcyB0aGUgdWludDY0X3QgdHlwZSBhcyB0aGUgbmF0aXZlIHdp
bmRvdyB0eXBlLgorCiAyMDEzLTA5LTIzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbmlmeSBjb2RlIHBhdGhzIGxlYWRpbmcgdG8gcmVuZGVyIHRyZWUgdGVh
cmRvd24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMjQzMzkxMjNkZDRlMTVhZmQwYjE2ZjE5ZjhlMzEx
NWU5Y2FmY2MxYS4uYzExZGI1MzAzMWMzMjFmYmE0MjNiMzZiZDRjNTgzOWM2Yjk2ZjBlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTIzICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9y
dCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgV0FZTEFORF9MSUJTIHRvIHRoZSBsaXN0IG9m
IGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgZm9yIHRoZSBsaWJ3ZWJraXRndGsuc28gbGlicmFy
eS4KKwogMjAxMy0wOS0yMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIGJ1aWxkIGZpeCB3aGVuIGJ1aWxkaW5nIHdpdGggR1RL
KyAyLjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWE2YzYyNzdkNTRjNzU3OThmMjkxN2U5Y2UzZDc3MjcxY2Jm
NWVhYy4uODNjNWUzZTI2M2VlOTk2YjgzODM1YjUzMTllNzc3YjkyMjBkZDUzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXls
YW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOiBBZGQgV0FZTEFORF9MSUJTIHRvIHRoZSBsaXN0IG9mIGxpYnJhcmllcyB0
byBsaW5rIGFnYWluc3QgZm9yIHRoZSBsaWJ3ZWJraXQyZ3RrLnNvIGxpYnJhcnkKKyAgICAgICAg
YW5kIHRoZSBwbHVnaW4gcHJvY2Vzcy4gQWRkIFdBWUxBTkRfQ0ZMQUdTIHRvIHRoZSBsaXN0IG9m
IEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBsaWJQbGF0ZnJvbUd0azIubGEgc291cmNlcy4KKwog
MjAxMy0wOS0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBDbGVhbnVwIENNYWtlIGZpbGVzIGluIFdlYktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpp
bmRleCAzNTg4NDQ3ZTk0NTc5ZDViYjgzNTIyNjZjODcyOTkzMjMzOTc2NjBkLi44ZDc1MWJkYTVh
ZDk1YTMzYjgyMmNhMjZlN2I4ZTM0N2MyN2NmMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCkBA
IC0xMTksNyArMTE5LDggQEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RS
RUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZMQUdTKSBc
Ci0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlMQU5EX0NG
TEFHUykKIAogRGVyaXZlZFNvdXJjZXMvUGxhdGZvcm0vQ29sb3JEYXRhLmNwcDogJChXZWJDb3Jl
KS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwK
IAkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwgJChHRU5T
T1VSQ0VTX1BMQVRGT1JNKSAkKFdlYkNvcmUpL3BsYXRmb3JtL0NvbG9yRGF0YS5ncGVyZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjM4ZjZkMDc0NGMyMGZhMjAzMjRjYjJlNjQ4
YTllOTY5YjA1NzkwMi4uYjk1MjRiMmM0NTFiZDg5MzU3NmQyODhhNTU5YWI1NGQ1NDk3YTFjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MzI0LDYgKzYzMjQsMTIgQEAgcGxh
dGZvcm1ndGtfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBVU0VfT1BFTkdMCiBpZiBVU0VfRUdM
CiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0xEZWZhdWx0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5o
CiBlbmRpZiAjIEVORCBVU0VfRUdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR0xDb250ZXh0LmNwcAppbmRleCBlZGE5ODcyMDJiZmVmZTgxNjJlNDA2OGNkMjk5ODQxNTFi
YjI4NWE3Li5jMTEwZTNmMjAyZGM1NjBkYTEwZDYwMGFkZGVlYjlmNGY1MzJmMjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTIzLDYg
KzIzLDkgQEAKIAogI2lmIFVTRShFR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisjaW5j
bHVkZSAiR0xDb250ZXh0RUdMRGVmYXVsdC5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTFdheWxh
bmQuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xYMTEuaCIKICNlbmRpZgogCiAjaWYgVVNFKEdM
WCkKQEAgLTM4LDYgKzQxLDkgQEAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z2RrL2dk
ay5oPgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorI2lmZGVmIEdES19XSU5ET1dJTkdfWDEx
CisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNlbmRpZgogI2lmZGVmIEdES19XSU5ET1dJTkdfV0FZ
TEFORAogI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CiAjZW5kaWYKQEAgLTE0NSwyNyArMTUx
LDQwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29udGV4dHNBdEV4aXQoKQogI2Vu
ZGlmCiB9CiAKLQotCiBQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250
ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5E
T1dJTkdfV0FZTEFORCkgJiYgVVNFKEVHTCkKKyNpZiBQTEFURk9STShHVEspICYmICFkZWZpbmVk
KEdUS19BUElfVkVSU0lPTl8yKQogICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkgPSBnZGtfZGlzcGxh
eV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXQoKSk7
Ci0KKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKSAmJiBVU0UoR0xYKQorICAgIGlmIChH
REtfSVNfWDExX0RJU1BMQVkoZGlzcGxheSkpIHsKKyAgICAgICAgaWYgKE93blB0cjxHTENvbnRl
eHQ+IGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxl
LCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4gZ2x4Q29udGV4dC5yZWxlYXNl
KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorI2lmIGRlZmluZWQo
R0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiBVU0UoRUdMKQorICAgIEFTU0VSVCghd2luZG93SGFu
ZGxlKTsKICAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSkgewotICAgICAg
ICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRl
Q29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgaWYgKE93blB0
cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQ8R0xD
b250ZXh0RUdMV2F5bGFuZD4oMCwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJu
IGVnbENvbnRleHQucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAj
ZW5kaWYKKyNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE5JWCkKICNpZiBVU0UoR0xYKQogICAgIGlm
IChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250
ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICByZXR1cm4gZ2x4Q29u
dGV4dC5yZWxlYXNlKCk7CiAjZW5kaWYKKwogI2lmIFVTRShFR0wpCi0gICAgaWYgKE93blB0cjxH
TENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93
SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisjaWYgUExBVEZPUk0oWDExKQorICAgIHR5cGVkZWYg
R0xDb250ZXh0RUdMWDExIEVHTFBsYXRmb3JtQ29udGV4dDsKKyNlbHNlCisgICAgdHlwZWRlZiBH
TENvbnRleHRFR0xEZWZhdWx0IEVHTFBsYXRmb3JtQ29udGV4dDsKKyNlbmRpZgorICAgIGlmIChP
d25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0
PEVHTFBsYXRmb3JtQ29udGV4dD4od2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCiAgICAg
ICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
CmluZGV4IDA5YTdlZDhhYTAwM2UxY2Q0ZWJlYmIxNDFmY2FkODAwZmMzMWMwZWIuLjRiMzBmNWJk
Mjg2NjFiOTZmMzUyZDgxMDYyOGU5YTQ4YWJhZGMzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0yMSw3ICsy
MSwxMSBAQAogCiAjaWYgVVNFKEVHTCkKIAorI2luY2x1ZGUgIkdMQ29udGV4dEVHTERlZmF1bHQu
aCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xXYXlsYW5kLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0
RUdMWDExLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDxFR0wv
ZWdsLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiAjaWYgVVNFKENBSVJPKQpAQCAtNDEs
MTU3ICs0NSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBFR0xEaXNwbGF5
IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0KLSNpZiBVU0UoT1BFTkdMX0VT
XzIpCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0VTX0FQSTsKLSNl
bHNlCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0FQSTsKLSNlbmRp
ZgotCi1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKK3RlbXBsYXRlPGNsYXNz
IEVHTFBsYXRmb3JtQ29udGV4dD4KK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZUNvbnRleHQodHlwZW5hbWUgRUdMUGxhdGZvcm1Db250ZXh0OjpOYXRpdmVXaW5k
b3dUeXBlIG5hdGl2ZVdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKIHsKICAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsK
LSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICAgICAg
Z1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkWDExRGlz
cGxheSgpKTsKLSNlbHNlCi0gICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxh
eShFR0xfREVGQVVMVF9ESVNQTEFZKTsKLSNlbmRpZgotICAgICAgICBpZiAoZ1NoYXJlZEVHTERp
c3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKGdTaGFyZWRFR0xEaXNw
bGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnR0xBUEkpKSkKLSAgICAgICAgICAgIGdTaGFyZWRF
R0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgfQotICAgIHJldHVybiBnU2hhcmVkRUdM
RGlzcGxheTsKLX0KLQotc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0dHJpYnV0ZXNbXSA9
IHsKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04s
IDIsCi0jZW5kaWYKLSAgICBFR0xfTk9ORQotfTsKLQotc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmln
KEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKQotewotICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7Ci0jaWYgVVNFKE9QRU5HTF9F
U18yKQotICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0j
ZWxzZQotICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKLSNlbmRp
ZgotICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCi0gICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAot
ICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAotICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCA4LAot
ICAgICAgICBFR0xfQUxQSEFfU0laRSwgOCwKLSAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdM
X05PTkUsCi0gICAgICAgIEVHTF9OT05FCi0gICAgfTsKLQotICAgIHN3aXRjaCAoc3VyZmFjZVR5
cGUpIHsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1ZmZlclN1cmZhY2U6Ci0gICAgICAgIGF0
dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwU3VyZmFjZToKLSAgICAgICAgYXR0cmlidXRlTGlzdFsx
M10gPSBFR0xfUElYTUFQX0JJVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTENvbnRleHRF
R0w6OldpbmRvd1N1cmZhY2U6Ci0gICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRP
V19CSVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIEVHTGludCBudW1iZXJDb25maWdz
UmV0dXJuZWQ7Ci0gICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhzaGFyZWRFR0xEaXNwbGF5KCks
IGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVt
YmVyQ29uZmlnc1JldHVybmVkOwotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250
ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBH
TENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQotewotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0Nv
bnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJp
bmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNo
YXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICgh
Z2V0RUdMQ29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxh
eSwgY29uZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBp
ZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXks
IGNvbmZpZywgd2luZG93LCAwKTsKLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29u
dGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKSk7Ci19Ci0KLVBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVk
RUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRF
R0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAoY29u
dGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBz
dGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdM
X0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVh
dGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKLSAg
ICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgewotICAgICAgICBlZ2xEZXN0cm95Q29u
dGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29udGV4dCwgc3VyZmFjZSwg
UGJ1ZmZlclN1cmZhY2UpKTsKLX0KLQotUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQotewot
I2lmIFBMQVRGT1JNKFgxMSkKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNw
bGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZp
ZygmY29uZmlnLCBQaXhtYXBTdXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywg
c2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQgPT0g
RUdMX05PX0NPTlRFWFQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMaW50IGRl
cHRoOwotICAgIGlmICghZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RF
UFRIX1NJWkUsICZkZXB0aCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUGl4bWFw
IHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9vdFdp
bmRvdyhzaGFyZWRYMTFEaXNwbGF5KCkpLCAxLCAxLCBkZXB0aCk7Ci0gICAgaWYgKCFwaXhtYXAp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWds
Q3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBpeG1hcCwgMCk7Ci0KLSAgICBp
ZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQ
aXhtYXBTdXJmYWNlKSk7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0K
LVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCi17Ci0g
ICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBzdWNj
ZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAjaWYgIVVTRShPUEVOR0xfRVNf
MikKQEAgLTIwMywyMCArNjAsMTggQEAgUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hh
cmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCkt
Pm1fY29udGV4dCA6IDA7Ci0gICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29udGV4dCA9IHdpbmRv
dyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRy
OwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRl
eHQoZWdsU2hhcmluZ0NvbnRleHQpOwotCi0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250
ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwotICAgIAotICAg
IHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBPd25QdHI8R0xDb250ZXh0RUdMPiBjb250
ZXh0ID0gYWRvcHRQdHIobmV3IEVHTFBsYXRmb3JtQ29udGV4dChuYXRpdmVXaW5kb3csIGVnbFNo
YXJpbmdDb250ZXh0KSk7CisgICAgaWYgKGNvbnRleHQtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIGNvbnRleHQucmVsZWFzZSgpOworCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdMQ29u
dGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZSh0eXBlKQorR0xDb250ZXh0RUdMOjpH
TENvbnRleHRFR0woKQorICAgIDogbV9kaXNwbGF5KEVHTF9OT19ESVNQTEFZKQorICAgICwgbV9j
b250ZXh0KEVHTF9OT19DT05URVhUKQorICAgICwgbV9zdXJmYWNlKEVHTF9OT19TVVJGQUNFKQor
ICAgICwgbV90eXBlKFVua25vd24pCiAjaWYgVVNFKENBSVJPKQogICAgICwgbV9jYWlyb0Rldmlj
ZSgwKQogI2VuZGlmCkBAIC0yMzAsMzAgKzg1LDMzIEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4
dEVHTCgpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogI2Vu
ZGlmCiAKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAg
aWYgKG1fY29udGV4dCkgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMCk7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBF
R0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xEZXN0cm95Q29udGV4
dChkaXNwbGF5LCBtX2NvbnRleHQpOwotICAgIH0KKyAgICBpZiAobV9kaXNwbGF5ICE9IEVHTF9O
T19ESVNQTEFZKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpIHsK
KyAgICAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAg
ICAgICAgIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19T
VVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dCht
X2Rpc3BsYXksIG1fY29udGV4dCk7CisgICAgICAgIH0KIAotICAgIGlmIChtX3N1cmZhY2UpCi0g
ICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgIGlm
IChtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgICAgICBlZ2xEZXN0cm95U3Vy
ZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgfQogfQogCiBib29sIEdMQ29udGV4dEVH
TDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewotICAgIHJldHVybiBtX3R5cGUg
PT0gV2luZG93U3VyZmFjZTsKKyAgICByZXR1cm4gbV90eXBlID09IEdMQ29udGV4dEVHTDo6V2lu
ZG93U3VyZmFjZTsKIH0KIAogSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZl
clNpemUoKQogeworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworCiAgICAgaWYgKCFjYW5SZW5kZXJU
b0RlZmF1bHRGcmFtZWJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAg
RUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdM
RGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQotICAgICAgICB8fCAhZWds
UXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAm
aGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSwg
RUdMX1dJRFRILCAmd2lkdGgpCisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2UobV9kaXNwbGF5
LCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQogICAgICAgICByZXR1cm4gSW50U2l6
ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC0yNjEsMTkgKzEx
OSwyMCBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAK
IGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIEFTU0VSVCht
X2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAogICAgIEdM
Q29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGVnbEdldEN1cnJlbnRDb250
ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBl
Z2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBt
X2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3VyZmFj
ZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1
ZmZlcnMoKQogewotICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNo
YXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAg
ICBpZiAobV9zdXJmYWNlKQorICAgICAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3Vy
ZmFjZSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKQEAgLTI4OCw3ICsx
NDcsOCBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAg
ICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVk
RUdMRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIG1f
Y2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3BsYXksIG1fY29udGV4
dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpAQCAtMzAyLDYgKzE2Miw3
OCBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250
ZXh0KCkKIH0KICNlbmRpZgogCitFR0xCb29sZWFuIEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmln
KEVHTENvbmZpZyogY29uZmlnICwgR0xDb250ZXh0RUdMOjpTdXJmYWNlVHlwZSBzdXJmYWNlVHlw
ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKwor
ICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAg
ICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCisjZWxzZQorICAg
ICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKKyNlbmRpZgorICAgICAg
ICBFR0xfUkVEX1NJWkUsIDgsCisgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAgICBF
R0xfQkxVRV9TSVpFLCA4LAorICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCA4LAorICAgICAgICBF
R0xfQUxQSEFfU0laRSwgOCwKKyAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX05PTkUsCisg
ICAgICAgIEVHTF9OT05FCisgICAgfTsKKworICAgIHN3aXRjaCAoc3VyZmFjZVR5cGUpIHsKKyAg
ICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1ZmZlclN1cmZhY2U6CisgICAgICAgIGF0dHJpYnV0ZUxp
c3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdMQ29u
dGV4dEVHTDo6UGl4bWFwU3VyZmFjZToKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xf
UElYTUFQX0JJVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OldpbmRv
d1N1cmZhY2U6CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR0xDb250ZXh0RUdMOjpTdXJmYWNlbGVzczoKKyAgICBj
YXNlIEdMQ29udGV4dEVHTDo6VW5rbm93bjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCisgICAgRUdMaW50IG51bWJlckNv
bmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKG1fZGlzcGxheSwgYXR0
cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJD
b25maWdzUmV0dXJuZWQ7Cit9CisKK0VHTGVudW0gR0xDb250ZXh0RUdMOjpnbEFQSSgpIGNvbnN0
Cit7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiBFR0xfT1BFTkdMX0VTX0FQSTsK
KyNlbHNlCisgICAgcmV0dXJuIEVHTF9PUEVOR0xfQVBJOworI2VuZGlmCit9CisKK0VHTGludCog
R0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgc3RhdGljIEVH
TGludCBjb250ZXh0QXR0cmlidXRlc1tdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAg
ICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisjZW5kaWYKKyAgICAgICAgRUdMX05P
TkUKKyAgICB9OworICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlczsKK30KKworYm9vbCBHTENv
bnRleHRFR0w6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQgIT0gRUdM
X05PX0NPTlRFWFQgJiYgKG1fc3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSB8fCBtX3R5cGUgPT0g
R0xDb250ZXh0RUdMOjpTdXJmYWNlbGVzcyk7Cit9CisKKyNpZiBQTEFURk9STShXQVlMQU5EKQor
dGVtcGxhdGUgUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dDxHTENvbnRleHRFR0xXYXlsYW5kPih0eXBlbmFtZSBHTENvbnRleHRFR0xXYXlsYW5kOjpO
YXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqID0gMCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShY
MTEpCit0ZW1wbGF0ZSBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVh
dGVDb250ZXh0PEdMQ29udGV4dEVHTFgxMT4odHlwZW5hbWUgR0xDb250ZXh0RUdMWDExOjpOYXRp
dmVXaW5kb3dUeXBlLCBHTENvbnRleHQqID0gMCk7CisjZW5kaWYKK3RlbXBsYXRlIFBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQ8R0xDb250ZXh0RUdM
RGVmYXVsdD4odHlwZW5hbWUgR0xDb250ZXh0RUdMRGVmYXVsdDo6TmF0aXZlV2luZG93VHlwZSwg
R0xDb250ZXh0KiA9IDApOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBV
U0UoRUdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTC5oCmluZGV4IGM4ODdlMGJlYmNlZjc5YTU0YzRlOWM1ZDVkNmUxYjkyNmZjOTU0
YzEuLmNmY2I4NmI2MjY1MDE1OTE0MTczN2RmOWEzMjQzOWE5MDVkMzZhOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAg
LTIzLDE3ICsyMywzMSBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIK
KyNpbmNsdWRlIDxLSFIva2hycGxhdGZvcm0uaD4KIAotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KK3R5
cGVkZWYgdW5zaWduZWQgRUdMQm9vbGVhbjsKK3R5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwordHlw
ZWRlZiB2b2lkICpFR0xDb250ZXh0OwordHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwordHlwZWRl
ZiB2b2lkICpFR0xTdXJmYWNlOwordHlwZWRlZiB1bnNpZ25lZCBFR0xlbnVtOwordHlwZWRlZiBr
aHJvbm9zX2ludDMyX3QgRUdMaW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdM
Q29udGV4dEVHTCA6IHB1YmxpYyBHTENvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEdMQ29udGV4dEVHTCk7CiBwdWJsaWM6Ci0gICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZm
ZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUs
IEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQgPSAwKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisgICAgZW51bSBTdXJmYWNlVHlwZSB7CisgICAgICAg
IFdpbmRvd1N1cmZhY2UsCisgICAgICAgIFBidWZmZXJTdXJmYWNlLAorICAgICAgICBQaXhtYXBT
dXJmYWNlLAorICAgICAgICBTdXJmYWNlbGVzcywKKyAgICAgICAgVW5rbm93bgorICAgIH07CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFR0xQbGF0Zm9ybUNvbnRleHQ+CisgICAgc3RhdGljIFBhc3NP
d25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KHR5cGVuYW1lIEVHTFBsYXRmb3JtQ29u
dGV4dDo6TmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwog
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwpAQCAtNDksMTggKzYzLDIzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CiAjZW5kaWYKIAotcHJp
dmF0ZToKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJD
b250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKK3Byb3RlY3RlZDoKKyAgICBHTENvbnRleHRFR0woKTsKKyAgICBFR0xCb29sZWFuIGNo
b29zZUNvbmZpZyhFR0xDb25maWcqLCBTdXJmYWNlVHlwZSkgY29uc3Q7CisgICAgRUdMZW51bSBn
bEFQSSgpIGNvbnN0OworICAgIEVHTGludCogY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdDsKKwor
ICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5OworICAgIEVHTENvbnRleHQgbV9jb250ZXh0OworICAg
IEVHTFN1cmZhY2UgbV9zdXJmYWNlOworICAgIFN1cmZhY2VUeXBlIG1fdHlwZTsKIAorcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVHTCopOwogICAg
IHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KHZvaWQpOwogCi0gICAgR0xDb250
ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKKyAgICBib29s
IGlzVmFsaWQoKSBjb25zdDsKIAotICAgIEVHTENvbnRleHQgbV9jb250ZXh0OwotICAgIEVHTFN1
cmZhY2UgbV9zdXJmYWNlOwotICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKICNpZiBVU0UoQ0FJ
Uk8pCiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xEZWZh
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xEZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjE5Yjg4ZWI4MWVhNTJhODA0ZDk4N2EyNDJlYjhh
Zjc3YmZlYzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xEZWZhdWx0LmgiCisKKyNpZiBV
U0UoRUdMKQorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoRUdMZW51bSBnbEFQSSkKK3sKKyAgICBz
dGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7
CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5
ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKHNoYXJl
ZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVH
TERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdsQVBJKSkpCisgICAgICAgICAgICBzaGFy
ZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorCisgICAgcmV0dXJuIHNoYXJl
ZEVHTERpc3BsYXk7Cit9CisKK0dMQ29udGV4dEVHTERlZmF1bHQ6OkdMQ29udGV4dEVHTERlZmF1
bHQoR0xDb250ZXh0RUdMRGVmYXVsdDo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgbV9kaXNwbGF5ID0gc2hhcmVkRGlzcGxh
eShnbEFQSSgpKTsKKyAgICBpZiAobV9kaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoY3JlYXRlV2luZG93U3VyZmFjZShuYXRpdmVXaW5kb3csIHNo
YXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChjcmVhdGVQYnVmZmVyU3Vy
ZmFjZShzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX2Nv
bnRleHQgPT0gRUdMX05PX0NPTlRFWFQpOworICAgIEFTU0VSVChtX3N1cmZhY2UgPT0gRUdMX05P
X1NVUkZBQ0UpOworfQorCisKK2Jvb2wgR0xDb250ZXh0RUdMRGVmYXVsdDo6Y3JlYXRlV2luZG93
U3VyZmFjZShHTENvbnRleHRFR0xEZWZhdWx0OjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRv
dywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5ICE9
IEVHTF9OT19ESVNQTEFZKTsKKworICAgIGlmICghbmF0aXZlV2luZG93KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VDb25m
aWcoJmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlKSAhPSBFR0xfVFJVRSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3Jl
YXRlQ29udGV4dChtX2Rpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRB
dHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5k
b3dTdXJmYWNlKG1fZGlzcGxheSwgZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAgIGlm
IChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0
KG1fZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90
eXBlID0gR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEdMQ29udGV4dEVHTERlZmF1bHQ6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbnRl
eHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheSAhPSBFR0xfTk9fRElT
UExBWSk7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VDb25maWco
JmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpQYnVmZmVyU3VyZmFjZSkgIT0gRUdMX1RSVUUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0
ZUNvbnRleHQobV9kaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0
cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1td
ID0geyBFR0xfV0lEVEgsIDEsIEVHTF9IRUlHSFQsIDEsIEVHTF9OT05FIH07CisgICAgRUdMU3Vy
ZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UobV9kaXNwbGF5LCBlZ2xDb25m
aWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFD
RSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIGNvbnRleHQpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9jb250ZXh0ID0gY29udGV4dDsKKyAg
ICBtX3N1cmZhY2UgPSBzdXJmYWNlOworICAgIG1fdHlwZSA9IEdMQ29udGV4dEVHTDo6UGJ1ZmZl
clN1cmZhY2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWM2
MzVhZjY4MGI5YjZiYjE4MTA3NzZkMWE3NzhjZjRlNDlmYzk1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQu
aApAQCAtMCwwICsxLDM1IEBACisjaWZuZGVmIEdMQ29udGV4dEVHTERlZmF1bHRfaAorI2RlZmlu
ZSBHTENvbnRleHRFR0xEZWZhdWx0X2gKKworI2lmIFVTRShFR0wpCisKKyNpbmNsdWRlICJHTENv
bnRleHRFR0wuaCIKKworI2lmICFQTEFURk9STShHVEspCisjaW5jbHVkZSA8ZWdscGxhdGZvcm0u
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdMQ29udGV4dEVHTERl
ZmF1bHQgOiBwdWJsaWMgR0xDb250ZXh0RUdMIHsKKyAgICBmcmllbmQgY2xhc3MgR0xDb250ZXh0
RUdMOworCitwdWJsaWM6CisjaWYgIVBMQVRGT1JNKEdUSykKKyAgICB0eXBlZGVmIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgTmF0aXZlV2luZG93VHlwZTsKKyNlbHNlCisgICAgdHlwZWRlZiB1aW50NjRf
dCBOYXRpdmVXaW5kb3dUeXBlOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgR0xDb250ZXh0RUdM
RGVmYXVsdChOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKwor
ICAgIGJvb2wgY3JlYXRlV2luZG93U3VyZmFjZShOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0
IHNoYXJpbmdDb250ZXh0KTsKKyAgICBib29sIGNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbnRl
eHQgc2hhcmluZ0NvbnRleHQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKEVHTCkKKworI2VuZGlmIC8vIEdMQ29udGV4dEVHTERlZmF1bHRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdh
eWxhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTFdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YzhjMjVjYjc4NTA2OGUwNjRkNGU5MDE1ZTBh
OGIwOWVmY2ZlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw2MSBAQAorI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTFdheWxhbmQuaCIKKworI2lm
IFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5o
PgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxn
ZGsvZ2RrLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECisjaW5jbHVkZSA8Z2RrL2dk
a3dheWxhbmQuaD4KKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIEVHTERpc3BsYXkgc2hhcmVkRGlzcGxheShFR0xlbnVtIGdsQVBJKQoreworICAgIHN0YXRp
YyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAg
ICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVk
KEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyAgICAgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdk
a19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2Vy
X2dldCgpKTsKKyAgICAgICAgQVNTRVJUKEdES19JU19XQVlMQU5EX0RJU1BMQVkoZGlzcGxheSkp
OworICAgICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5ID0gZ2RrX3dheWxhbmRfZGlz
cGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KTsKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9
IGVnbEdldERpc3BsYXkod2xEaXNwbGF5KTsKKyNlbmRpZgorCisgICAgICAgIGlmIChzaGFyZWRF
R0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShzaGFyZWRFR0xE
aXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnbEFQSSkpKQorICAgICAgICAgICAgc2hhcmVk
RUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKworICAgIHJldHVybiBzaGFyZWRF
R0xEaXNwbGF5OworfQorCitHTENvbnRleHRFR0xXYXlsYW5kOjpHTENvbnRleHRFR0xXYXlsYW5k
KEdMQ29udGV4dEVHTFdheWxhbmQ6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xD
b250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIG1fZGlzcGxheSA9IHNoYXJlZERpc3BsYXko
Z2xBUEkoKSk7CisKKyAgICBpZiAobV9kaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmco
bV9kaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYgKCFzdHJzdHIoZXh0ZW5zaW9ucywg
IkVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBF
R0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1fZGlzcGxheSwgMCwgc2hhcmlu
Z0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9O
T19DT05URVhUKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0Owor
ICAgIG1fc3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAgIG1fdHlwZSA9IEdMQ29udGV4dEVH
TDo6U3VyZmFjZWxlc3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YjU2MjJlYzMxNjI2ZGRjZDFiYTJkOWE2OWZlODllNzMzN2IzOWFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFdheWxhbmQuaApAQCAtMCwwICsxLDI2IEBACisjaWZuZGVmIEdMQ29udGV4dEVHTFdheWxhbmRf
aAorI2RlZmluZSBHTENvbnRleHRFR0xXYXlsYW5kX2gKKworI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworc3RydWN0IHdsX2Vn
bF93aW5kb3c7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR0xDb250ZXh0RUdMV2F5
bGFuZCA6IHB1YmxpYyBHTENvbnRleHRFR0wgeworICAgIGZyaWVuZCBjbGFzcyBHTENvbnRleHRF
R0w7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0cnVjdCB3bF9lZ2xfd2luZG93KiBOYXRpdmVX
aW5kb3dUeXBlOworCitwcml2YXRlOgorICAgIEdMQ29udGV4dEVHTFdheWxhbmQoTmF0aXZlV2lu
ZG93VHlwZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQorCisj
ZW5kaWYgLy8gR0xDb250ZXh0RUdMV2F5bGFuZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFhMzBkYzE2MTA3OWZkNjIzYjM0ZTg1NTBkMjg4NzZiOTg0YmRjOGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDEx
LmNwcApAQCAtMCwwICsxLDEzMyBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdM
Q29udGV4dEVHTFgxMS5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oWDExKQorCisjaW5j
bHVkZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoRUdMZW51bSBnbEFQSSkK
K3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BM
QVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRp
YWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBzaGFyZWRF
R0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7
CisgICAgICAgIGlmIChzaGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWds
SW5pdGlhbGl6ZShzaGFyZWRFR0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnbEFQSSkp
KQorICAgICAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0K
KworICAgIHJldHVybiBzaGFyZWRFR0xEaXNwbGF5OworfQorCitHTENvbnRleHRFR0xYMTE6OkdM
Q29udGV4dEVHTFgxMShHTENvbnRleHRFR0xYMTE6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2lu
ZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIG1fZGlzcGxheSA9IHNoYXJl
ZERpc3BsYXkoZ2xBUEkoKSk7CisgICAgaWYgKG1fZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNyZWF0ZVdpbmRvd1N1cmZhY2UobmF0aXZlV2lu
ZG93LCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoY3JlYXRlUGJ1
ZmZlclN1cmZhY2Uoc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNy
ZWF0ZVBpeG1hcFN1cmZhY2Uoc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBBU1NFUlQobV9jb250ZXh0ID09IEVHTF9OT19DT05URVhUKTsKKyAgICBBU1NFUlQobV9zdXJm
YWNlID09IEVHTF9OT19TVVJGQUNFKTsKK30KKworYm9vbCBHTENvbnRleHRFR0xYMTE6OmNyZWF0
ZVdpbmRvd1N1cmZhY2UoR0xDb250ZXh0RUdMWDExOjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdp
bmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5
ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIGlmICghbmF0aXZlV2luZG93KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChjaG9vc2VD
b25maWcoJmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlKSAhPSBFR0xfVFJV
RSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWds
Q3JlYXRlQ29udGV4dChtX2Rpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRl
eHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVX
aW5kb3dTdXJmYWNlKG1fZGlzcGxheSwgZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAg
IGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250
ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAg
bV90eXBlID0gR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEdMQ29udGV4dEVHTFgxMTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQ
TEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNvbmZpZygm
ZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJmYWNlKSAhPSBFR0xfVFJVRSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChtX2Rpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRy
aWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10g
PSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKKyAgICBFR0xTdXJm
YWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShtX2Rpc3BsYXksIGVnbENvbmZp
ZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNF
KSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAg
IG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250ZXh0RUdMOjpQYnVmZmVy
U3VyZmFjZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHTENvbnRleHRFR0xYMTE6OmNy
ZWF0ZVBpeG1hcFN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NF
UlQobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25m
aWc7CisgICAgaWYgKGNob29zZUNvbmZpZygmZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBpeG1h
cFN1cmZhY2UpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xD
b250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1fZGlzcGxheSwgZWdsQ29uZmlnLCBz
aGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0g
RUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVHTGludCBkZXB0
aDsKKyAgICBpZiAoZWdsR2V0Q29uZmlnQXR0cmliKG1fZGlzcGxheSwgZWdsQ29uZmlnLCBFR0xf
REVQVEhfU0laRSwgJmRlcHRoKSAhPSBFR0xfVFJVRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29u
dGV4dChtX2Rpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoR0xDb250ZXh0OjpzaGFyZWRYMTFE
aXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgp
KSwgMSwgMSwgZGVwdGgpOworICAgIGlmICghcGl4bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKG1fZGlz
cGxheSwgZWdsQ29uZmlnLCBwaXhtYXAsIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0
OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gR0xDb250ZXh0RUdMOjpQ
aXhtYXBTdXJmYWNlOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjQ2NzkxZTU5Mjc2ZDI5ZWVjY2U3MWFlOTVjYjhjZmNlNTQwNGIxMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0xYMTEuaApAQCAtMCwwICsxLDI3IEBACisjaWZuZGVmIEdMQ29udGV4dEVHTFgxMV9oCisj
ZGVmaW5lIEdMQ29udGV4dEVHTFgxMV9oCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEp
CisKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHTENvbnRleHRFR0xYMTEgOiBwdWJsaWMgR0xDb250ZXh0RUdMIHsKKyAgICBmcmllbmQg
Y2xhc3MgR0xDb250ZXh0RUdMOworCitwdWJsaWM6CisgICAgdHlwZWRlZiB1aW50NjRfdCBOYXRp
dmVXaW5kb3dUeXBlOworCitwcml2YXRlOgorICAgIEdMQ29udGV4dEVHTFgxMShOYXRpdmVXaW5k
b3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKKyAgICBib29sIGNyZWF0ZVdpbmRv
d1N1cmZhY2UoTmF0aXZlV2luZG93VHlwZSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Cisg
ICAgYm9vbCBjcmVhdGVQYnVmZmVyU3VyZmFjZShFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsK
KyAgICBib29sIGNyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQ
TEFURk9STShYMTEpCisKKyNlbmRpZiAvLyBHTENvbnRleHRFR0xYMTFfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVt
YWtlZmlsZS5hbQppbmRleCAwYWYxMzc5NmIzYjJjM2FkNTcyYzVmNTZiMDAwYWI2MDY1YTRkMTFj
Li41MGFjNWYxZmU3ZWQ5YWQ1MzM4MDFlY2JmZTUyOGUxYWFhZjZhNmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9H
TlVtYWtlZmlsZS5hbQpAQCAtMTI2LDYgKzEyNiw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJB
CiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwK
KwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYQ09NUE9TSVRFX0xJQlMp
IFwKIAkkKFhEQU1BR0VfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBjMWRhMzE1YjQz
ZGMyMmRlYTk5MzU3ZmQ5YjE1NTU5NjI1YTliOTFhLi4xZTg2NTZjYjYwYzEyOTVkMjJiODVkMDgz
ZGNiNWRkMGRjNzlmZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMjcxLDYgKzI3MSw3IEBA
IGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19B
UElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJT
KSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9MSUJT
KSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykgXApAQCAtNTQ4LDcg
KzU0OSw4IEBAIGxpYlBsYXRmb3JtR3RrMl9sYV9DUFBGTEFHUyA9IFwKIAkkKEdTVFJFQU1FUl9D
RkxBR1MpIFwKIAkkKEdUSzJfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZMQUdTKSBcCi0JJChM
SUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlMQU5EX0NGTEFHUykK
IAogIyBJbmplY3RlZCBCdW5kbGUKIGluamVjdGVkYnVuZGxlZGlyID0gJChsaWJkaXIpL3dlYmtp
dDJndGstMy4wL2luamVjdGVkLWJ1bmRsZQpAQCAtNjk4LDYgKzcwMCw3IEBAIFByb2dyYW1zX1dl
YktpdFBsdWdpblByb2Nlc3NfTERBREQgPSBcCiAJJChTSE1fTElCUykgXAogCSQoU1FMSVRFM19M
SUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9M
SUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvRmlu
ZERlcGVuZGVuY2llcy5tNAppbmRleCA1ZjAzODA3ODMxNWQ2MDFmNzc5ODA1MmVlMTk2NmNmMzIx
MzhmNjI1Li4zNTAxNzMzZDJiYzU4MWUxZDEyY2U5NzBhNmZkYWVjYjY3OTIzZGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKKysrIGIvU291cmNlL2F1
dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CkBAIC0yMDYsNiArMjA2LDEyIEBAIGlmIHRlc3Qg
IiRlbmFibGVfd2F5bGFuZF90YXJnZXQiID0gInllcyI7IHRoZW4KICAgICBQS0dfQ0hFQ0tfTU9E
VUxFUyhHVEtfV0FZTEFORCwgZ3RrKy13YXlsYW5kLSRHVEtfQVBJX1ZFUlNJT04gPSAkR1RLX0FD
VFVBTF9WRVJTSU9OKQogZmkKIAoraWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3RhcmdldCIgPSAi
eWVzIjsgdGhlbgorICAgIFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EXSwgW3dheWxhbmQtY2xp
ZW50IHdheWxhbmQtZWdsXSkKKyAgICBBQ19TVUJTVChXQVlMQU5EX0NGTEFHUykKKyAgICBBQ19T
VUJTVChXQVlMQU5EX0xJQlMpCitmaQorCiBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFto
YXZlX2dseD0ieWVzIl0sIFtoYXZlX2dseD0ibm8iXSkKIEFDX01TR19DSEVDS0lORyhbd2hldGhl
ciB0byBlbmFibGUgR0xYIHN1cHBvcnRdKQogaWYgdGVzdCAiJGVuYWJsZV9nbHgiICE9ICJubyI7
IHRoZW4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAxMTBhMDFiZGQxYWY1NThmYjViYWVmYjA4Mjc4NzcxYzJlODE0MmIyLi4yYWZlMWY4NzkwZDIy
YmFmYjY4NWQzNDU1YmYyOTAyNTYwNjM4NWU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDktMjMgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJH
TCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExODk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBXQVlMQU5EX0xJQlMgdG8gdGhl
IGxpc3Qgb2YgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCBmb3IgdGhlIER1bXBSZW5kZXJUcmVl
IHByb2dyYW0uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbTogRGl0dG8g
Zm9yIHRoZSBUZXN0V2ViQ29yZSBwcm9ncmFtLgorCiAyMDEzLTA5LTIwICBNYXJrIFJvd2UgIDxt
cm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzkwMDkwPiBi
dWlsZC13ZWJraXQgc2hvdWxkIHZlcmlmeSB0aGF0IHlvdXIgdG9vbHMgYXJlIHVwLXRvLWRhdGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0K
aW5kZXggM2ZjOWEwMDVkN2MzMWE1MDg0YTRlMzk2N2U1NDAyYzEyYTc0YTFmNi4uMjJkZjJmZjc2
YjNhMjQ4NzdjNDY4M2M1NGJjNDZkMWYzM2FmNTYyOCAxMDA2NDQKLS0tIGEvVG9vbHMvR05VbWFr
ZWZpbGUuYW0KKysrIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTE2MSw2ICsxNjEsNyBAQCBQ
cm9ncmFtc19EdW1wUmVuZGVyVHJlZV9MREFERCA9IFwKIAkkKEdMSUJfTElCUykgXAogCSQoTElC
U09VUF9MSUJTKSBcCiAJJChGUkVFVFlQRV9MSUJTKSBcCisJJChXQVlMQU5EX0xJQlMpIFwKIAkk
KFdJTk1NX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNmYjJkNmVhNGZjYzZlNjI3MTk0OGEyYmY4MDU0NTFl
N2JlODA1ODEuLjhjNTM5ZDM5MTc3YTNiMzBlNTMwM2E4OTI5ZWFkZWYxMWJkM2E3NTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtMTU2LDYgKzE1Niw3IEBAIFByb2dyYW1zX1Rl
c3RXZWJLaXRBUElfVGVzdFdlYkNvcmVfTERBREQgPSBcCiAJJChQTkdfTElCUykgXAogCSQoU1FM
SVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQo
V0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4YjI4NDRlYTlkYzc1YWE5NjhiY2VlZDQx
MmM4OTdmZjliZjgzMzFmLi45OTMzZTRjOTQ3M2UzNWQxZjg3ZDk0YmM5MTk3NzU4Zjc3OTVmNDk0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAK
IDIwMTMtMDktMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCisgICAg
ICAgIFtHVEtdIEFkZCBXZWJHTCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODk0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9GaW5k
RGVwZW5kZW5jaWVzLm00OiBDaGVjayBmb3IgdGhlIHdheWxhbmQtY2xpZW50IGFuZCB3YXlsYW5k
LWVnbCBkZXBlbmRlbmNpZXMuCisKKzIwMTMtMDktMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFtBdXRvdG9vbHNdIFJld29yayB0aGUgYnVpbGQgdGFy
Z2V0IHNlbGVjdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxNzAzCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213392</attachid>
            <date>2013-10-04 12:55:43 -0700</date>
            <delta_ts>2013-12-11 00:36:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20131004125542.patch</filename>
            <type>text/plain</type>
            <size>43520</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlY2I4NTg4N2RmMjc4
ZWEwOGU4ODM1ZjBlYjI4MTJkMmExZTE3MzNkLi43MGMwZmI4NzBmOTQ3ZTU1ODc2YjhkYWNjODM2
NDQxMDdiNzE5ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMC0wNCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfQ0ZMQUdT
IHRvIHRoZSBsaXN0IG9mIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBsaWJQbGF0Zm9ybUd0ay5s
YSBzb3VyY2VzLgorCiAyMDEzLTA2LTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Mjc5ZTM4YmIxNWNlNWUxOGVhMzkxZjA3YjBjNjk2NGY5Nzc3ODc2ZC4uMjU5NmZjOGYzYmFjZTFj
NWNkOGM1MDgzNGVjMTUwOTVmNTNhYWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAy
MDEzLTEwLTA0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAg
ICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgR0xDb250ZXh0RUdMIGNsYXNzIGlz
IHJlZmFjdG9yZWQgc28gaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHBsYXRmb3JtLXNwZWNpZmlj
IHN1YmNsYXNzZXMgb2YgaXQuIFN1YmNsYXNzZXMgbXVzdAorICAgICAgICBzZXQgdXAgdGhlIEVH
TERpc3BsYXkgYW5kIEVHTENvbnRleHQgaW4gdGhlaXIgY29uc3RydWN0b3JzIGFuZCBkZXRlcm1p
bmUgdGhlIHR5cGUgb2YgdGhlIHN1cmZhY2UgdGhleSB1c2VkIGZvciB0aGUKKyAgICAgICAgY29u
dGV4dCBjcmVhdGlvbi4gSWYgYWxsIHRoaXMgaXMgZG9uZSBhY2NvcmRpbmdseSwgdGhlIEdMQ29u
dGV4dEVHTCBpbnN0YW5jZSBpcyBkZWVtZWQgdmFsaWQgYW5kIGNhbiBiZSB1c2VkIGZ1cnRoZXIu
CisKKyAgICAgICAgU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgbWV0aG9kcyB0aGF0IHJldHVybiB0
aGUgZGVzaXJlZCBFR0xDb25maWcsIHRoZSBHTCBBUEkgb3IgdGhlIGNvbnRleHQgYXR0cmlidXRl
cywgaWYgbmVjZXNzYXJ5LgorICAgICAgICBBcGFydCBmcm9tIHRob3NlIHRocmVlIG1ldGhvZHMg
YW5kIHN1YmNsYXNzLXNwZWNpZmljIHNldHVwcywgdGhlIGNvZGUgaXMgc2hhcmVkIHRocm91Z2gg
dGhlIEdMQ29udGV4dEVHTCBwYXJlbnQgY2xhc3MuCisgICAgICAgIFRoaXMgY292ZXJzIGNvbXBs
ZXRlIGNsZWFudXAgdXBvbiB0aGUgb2JqZWN0IGRlc3RydWN0aW9uLCBidWZmZXIgc3dhcHBpbmcg
Y2FsbHMgYW5kIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIHNpemUgcXVlcnlpbmcuCisKKyAgICAg
ICAgVGhlIHRlbXBsYXRpemVkIEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCB0YWtlcyB0aGUg
ZGVzaXJlZCBHTENvbnRleHRFR0wgc3ViY2xhc3MgdHlwZSBhcyB0aGUgdGVtcGxhdGUgYXJndW1l
bnQgYW5kCisgICAgICAgIHJldHVybnMgYSBuZXcgb2JqZWN0IG9mIHRoYXQgdHlwZSBpZiB0aGUg
Y29udGV4dCBpcyB2YWxpZCwgYW5kIGEgbnVsbHB0ciBvdGhlcndpc2UuCisKKyAgICAgICAgRm91
ciBjb250ZXh0IHR5cGVzIChhcGFydCBmcm9tIHRoZSBkZWZhdWx0IFVua25vd24gdHlwZSkgYXJl
IHN1cHBvcnRlZDoKKyAgICAgICAgLSB3aW5kb3ctYmFzZWQsIHVzZWQgd2hlbiB0aGUgc3VyZmFj
ZSB3YXMgYWNxdWlyZWQgdGhyb3VnaCBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlLAorICAgICAgICAt
IHBidWZmZXItYmFzZWQsIHVzZWQgd2hlbiB0aGUgc3VyZmFjZSB3YXMgYWNxdWlyZWQgdGhyb3Vn
aCBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZSwKKyAgICAgICAgLSBwaXhtYXAtYmFzZWQsIHVzZWQg
d2hlbiB0aGUgc3VyZmFjZSB3YXMgYWNxdWlyZWQgdGhyb3VnaCBlZ2xDcmVhdGVQaXhtYXBTdXJm
YWNlLAorICAgICAgICAtIHN1cmZhY2VsZXNzLCB3aGVuIHRoZSBjb250ZXh0IHdhcyBhcXVpcmVk
IHdpdGhvdXQgYSB2YWxpZCBzdXJmYWNlLCBwb3NzaWJsZSB3aXRoIHRoZSBFR0xfS0hSX3N1cmZh
Y2VsZXNzX2NvbnRleHQgZXh0ZW5zaW9uLgorCisgICAgICAgIFRoZSBHTENvbnRleHRFR0xYMTEg
c3ViY2xhc3MgcmV0YWlucyB0aGUgY3VycmVudCBiZWhhdmlvciwgY3JlYXRpbmcgZWl0aGVyIGEg
d2luZG93LCBwYnVmZmVyIG9yIHBpeG1hcCBzdXJmYWNlIGFuZCBwcm92aWRlCisgICAgICAgIGEg
Y29udGV4dCBiYXNlZCBvbiB0aGF0LiBUaGUgR0xDb250ZXh0RUdMRGVmYXVsdCBzdWJjbGFzcyB0
cmllcyB0byBjcmVhdGUgZWl0aGVyIGEgd2luZG93IG9yIHBidWZmZXIgc3VyZmFjZSBhbmQgcHJv
dmlkZSBhCisgICAgICAgIGNvbnRleHQgYmFzZWQgb24gdGhhdC4gVGhlIEdMQ29udGV4dEVHTFdh
eWxhbmQgc3ViY2xhc3MgcmVsaWVzIG9uIHRoZSBzdXJmYWNlbGVzcyBjb250ZXh0IGV4dGVuc2lv
biwgY3JlYXRpbmcgYSBjb250ZXh0CisgICAgICAgIHdpdGhvdXQgYSB2YWxpZCBzdXJmYWNlIChh
cyBpdCBpcyBub3QgbmVlZGVkIHdpdGggdGhlIGV4dGVuc2lvbiBwcmVzZW50KS4KKworICAgICAg
ICBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cgbm93IHJldHVybnMgZWl0aGVyIEdM
Q29udGV4dEVHTFgxMSBvciBHTENvbnRleHRFR0xXYXlsYW5kIG9iamVjdCB1bmRlciB0aGUgR1RL
IHBvcnQsCisgICAgICAgIGRlcGVuZGluZyBvbiB3aGF0IGRpc3BsYXkgaXMgYmVpbmcgdXNlZC4g
T24gb3RoZXIgcG9ydHMgdGhlIGN1cnJlbnQgYmVoYXZpb3IgaXMgcHJlc2VydmVkLCByZXR1cm5p
bmcgR0xDb250ZXh0R0xYIGlmCisgICAgICAgIEdMWCBzdXBwb3J0IGlzIGVuYWJsZWQsIG9yLCBp
ZiBFR0wgc3VwcG9ydCBpcyBlbmFibGVkLCBlaXRoZXIgR0xDb250ZXh0RUdMWDExIGZvciBub24t
R1RLIHBvcnRzIHRoYXQgZW5hYmxlIFgxMSBzdXBwb3J0IAorICAgICAgICBvciBHTENvbnRleHRF
R0xEZWZhdWx0IGZvciBvdGhlciBwb3J0cyAobGlrZSB0aGUgV2luZG93cy1iYXNlZCBwb3J0cyku
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgYnVpbGQgdGFyZ2V0cyBmb3Ig
dGhlIG5ldyBmaWxlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KTog
Q2hvb3NlIGJldHdlZW4gR0xDb250ZXh0R0xYIG9yIFdheWxhbmQtc3BlY2lmaWMgR0xDb250ZXh0
RUdMIGZvciB0aGUgR1RLIHBvcnQsCisgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgZGlzcGxheSBi
ZWluZyB1c2VkLiBCZWhhdmlvciBpcyByZXRhaW5lZCBmb3Igb3RoZXIgcG9ydHMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQpOiBUYWtlIHRoZSB0eXBlIG9mIHRoZSBk
ZXNpcmVkIHN1YmNsYXNzIG9mIEdMQ29udGV4dEVHTCB0aHJvdWdoIHRoZSB0ZW1wbGF0ZSBhcmd1
bWVudC4KKyAgICAgICAgQSBuZXcgb2JqZWN0IG9mIHRoYXQgdHlwZSBpcyBjcmVhdGVkLCBhbmQg
cmV0dXJuZWQgaWYgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCBpcyBhIHZhbGlkIEdMQ29udGV4dEVH
TC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKTogSW5pdGlh
bGl6ZSB0aGUgbWVtYmVycyB0byBpbnZhbGlkIHZhbHVlcy4KKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6IENsZWFuIHVwIHRoZSBFR0wgY29udGV4dCBhbmQg
c3VyZmFjZSBpZiB0aGV5IHdlcmUgaW5pdGlhbGl6ZWQuCisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKTogUHV0IHRoZSBlbnVtIHZh
bHVlIGludG8gdGhlIHByb3BlciBzY29wZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6IEFzc2VydCB0aGF0IHRoZSBvYmplY3QgaXMgdmFs
aWQgd2hlbiB0aGUgbWV0aG9kIGlzIGludm9rZWQuIFRoZSBFR0wgZGlzcGxheQorICAgICAgICBp
cyBub3cgbG9jYXRlZCBpbiBhIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKTogRGl0dG8uIE9ubHkgc3dhcCB0aGUgYnVmZmVy
cyBpZiB0aGUgc3VyZmFjZSBtZW1iZXIgdmFyaWFibGUgaGFzIGEgdmFsaWQgdmFsdWUgKHdoaWNo
IG1heQorICAgICAgICBub3QgYmUgdHJ1ZSBpbiB0aGUgY2FzZSBvZiBhIHN1cmZhY2VsZXNzIGNv
bnRleHQpLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSk6IERp
dHRvIG9uIHRoZSBvYmplY3QgdmFsaWRpdHkgYW5kIHRoZSBFR0wgZGlzcGxheSBtZW1iZXIgdmFy
aWFibGUuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyk6IEEg
c2hhcmVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcm9wZXIgRUdMQ29uZmlnIGNob29zaW5nLiBU
aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUKKyAgICAgICAgY29uc3RydWN0b3Igb2YgYW55
IHN1YmNsYXNzIHRoYXQgcmVxdWlyZXMgYSBwcm9wZXIgRUdMQ29uZmlnIGZvciB0aGUgc3VyZmFj
ZSBjcmVhdGlvbi4gSXQgc2hvdWxkbid0IGJlIGNhbGxlZCBpZiB0aGF0IHN1YmNsYXNzCisgICAg
ICAgIHdpbGwgcHJvdmlkZSBhIHN1cmZhY2VsZXNzIGNvbnRleHQuIENhbiBiZSBvdmVycmlkZGVu
IGJ5IHN1YmNsYXNzZXMgaWYgcmVxdWlyZWQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6OmdsQVBJKTogQSBzaGFyZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEdMIEFQSSB0aGF0J3Mg
dG8gYmUgdXNlZCwgZGVwZW5kaW5nIG9uIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24uCisg
ICAgICAgIENhbiBiZSBvdmVycmlkZW4gYnkgc3ViY2xhc3NlcyBpZiByZXF1aXJlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMpOiBBIHNoYXJlZCBp
bXBsZW1lbnRhdGlvbiB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2Ygd2hhdCBhdHRyaWJ1dGVzIHRo
ZSBFR0xDb250ZXh0CisgICAgICAgIHNob3VsZCBwb3NzZXMuIENhbiBiZSBvdmVycmlkZGVuIGJ5
IHN1YmNsYXNzZXMgaWYgcmVxdWlyZWQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
OmNyZWF0ZVBidWZmZXJTdXJmYWNlKTogQSBjcm9zcy1wbGF0Zm9ybSBtZXRob2QgZm9yIGNyZWF0
aW5nIGEgcGl4ZWwgYnVmZmVyIHN1cmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6OmlzVmFsaWQpOiBBIHZhbGlkaXR5IGNoZWNrZXIgbWV0aG9kIHRoYXQgY2hlY2tzIGlmIGJv
dGggdGhlIGNvbnRleHQgYW5kIHN1cmZhY2UgYXJlIG9mIHZhbGlkIHZhbHVlLCB0aGUKKyAgICAg
ICAgbGF0dGVyIHBvc3NpYmx5IGJlaW5nIG51bGwgaWYgdGhlIGNvbnRleHQgaXMgb2YgdGhlIHN1
cmZhY2VsZXNzIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5oOiBEb24ndCBpbmNsdWRlIHRoZSA8RUdML2VnbC5oPiBoZWFkZXIgZGlyZWN0bHkgYXMg
dGhhdCBsZWFrcyB0aGUgcGxhdGZvcm0gaW5mb3JtYXRpb24gaW50bworICAgICAgICB0aGUgcGxh
dGZvcm0taW5kZXBlbmRlbnQgY29kZS4gSW5zdGVhZCwgPEtIUi9raHJwbGF0Zm9ybS5oPiBpcyBp
bmNsdWRlZCBpbnN0ZWFkLCB3aXRoIHRoZSByZXF1aXJlZCBFR0wgdHlwZXMgbWFudWFsbHkgZGVm
aW5lZAorICAgICAgICB0byB0aGUgc2FtZSB0eXBlcyBhcyBpbiB0aGUgPEVHTC9lZ2wuaD4gaGVh
ZGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xEZWZhdWx0
LmNwcDogQWRkZWQuIFRoZSBkZWZhdWx0IEdMQ29udGV4dEVHTCBzdWJjbGFzcyBpbXBsZW1lbnRh
dGlvbi4gUmV0YWlucyBjdXJyZW50IGJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVk
RGlzcGxheSk6IFVzZSB0aGUgRUdMX0RFRkFVTFRfRElTUExBWSBhcyB0aGUgb3JpZ2luIG9mIHRo
ZSBzaGFyZWQgRUdMRGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTERlZmF1
bHQ6OkdMQ29udGV4dEVHTERlZmF1bHQpOiBUcnkgdG8gcHJvdmlkZSBlaXRoZXIgYSB3aW5kb3cg
b3IgcGJ1ZmZlciBFR0xTdXJmYWNlIGFuZCB0aGUgcmVzdWx0aW5nIEVHTENvbnRleHQuCisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xEZWZhdWx0OjpjcmVhdGVXaW5kb3dTdXJmYWNlKTog
Q3JlYXRlIGEgd2luZG93IHN1cmZhY2UgaWYgcG9zc2libGUuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuaDogQWRkZWQuIFN1YmNsYXNzZXMgR0xD
b250ZXh0RUdMIGFuZCBvbiBub24tR1RLIHBvcnRzIHVzZXMgdGhlIG5hdGl2ZSB3aW5kb3cgdHlw
ZSBhcworICAgICAgICBwcm92aWRlZCBieSB0aGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPiBoZWFkZXIu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3Bw
OiBBZGRlZC4gVGhlIFdheWxhbmQtc3BlY2lmaWMgR0xDb250ZXh0RUdMIHN1YmNsYXNzIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6IE9uIEdUSywgdXNl
IHRoZSB3bF9kaXNwbGF5IG9iamVjdCAoYXMgcHJvdmlkZWQgYnkgdGhlIEdUSysgdG9vbGtpdCBm
b3IgdGhlIGRlZmF1bHQgR2RrRGlzcGxheSkgYXMgdGhlIG9yaWdpbgorICAgICAgICBvZiB0aGUg
c2hhcmVkIEVHTERpc3BsYXkuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xXYXlsYW5k
OjpHTENvbnRleHRFR0xXYXlsYW5kKTogQ2hlY2sgdGhhdCB0aGUgc3VyZmFjZWxlc3MgY29udGV4
dCBleHRlbnNpb24gaXMgYXZhaWxhYmxlLCBmYWlsaW5nIGlmIGl0J3Mgbm90LgorICAgICAgICBB
IHN1cmZhY2VsZXNzIEVHTENvbnRleHQgaXMgY3JlYXRlZCBvdGhlcndpc2UuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuaDogQWRkZWQuIFN1YmNs
YXNzZXMgR0xDb250ZXh0RUdMIGFuZCB1c2VzIGEgd2xfZWdsX3dpbmRvdyBwb2ludGVyIGFzIHRo
ZSBuYXRpdmUgd2luZG93IHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTFgxMS5jcHA6IEFkZGVkLiBUaGUgWDExLXNwZWNpZmljIEdMQ29udGV4dEVHTCBz
dWJjbGFzcyBpbXBsZW1lbnRhdGlvbi4gUmV0YWlucyBjdXJyZW50IGJlaGF2aW9yLgorICAgICAg
ICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6IFVzZSB0aGUgc2hhcmVkIFgxMSBkaXNwbGF5IChh
cyBzZXQgdXAgaW4gR0xDb250ZXh0IGNsYXNzKSBhcyB0aGUgb3JpZ2luIG9mIHRoZSBzaGFyZWQg
RUdMRGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgxMTo6R0xDb250ZXh0
RUdMWDExKTogVHJ5IHRvIHByb3ZpZGUgZWl0aGVyIGEgd2luZG93LCBwYnVmZmVyIG9yIHBpeG1h
cCBFR0xTdXJmYWNlIGFuZCB0aGUgcmVzdWx0aW5nIEVHTENvbnRleHQuCisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0xYMTE6OmNyZWF0ZVdpbmRvd1N1cmZhY2UpOiBDcmVhdGUgYSB3aW5k
b3cgc3VyZmFjZSBpZiBwb3NzaWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgx
MTo6Y3JlYXRlUGl4bWFwU3VyZmFjZSk6IENyZWF0ZSBhIHBpeG1hcCBzdXJmYWNlIGlmIHBvc3Np
YmxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuaDog
QWRkZWQuIFN1YmNsYXNzZXMgR0xDb250ZXh0RUdMIGFuZCB1c2VzIHRoZSB1aW50NjRfdCB0eXBl
IGFzIHRoZSBuYXRpdmUgd2luZG93IHR5cGUuCisKKzIwMTMtMTAtMDQgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFtXZWJJRExdIEFubm90YXRlIElETCBp
bnRlcmZhY2VzIHVuZGVyIFNvdXJjZS9XZWJDb3JlL2Nzcy8gd2l0aCB0aGUgT3BlcmF0aW9uc05v
dERlbGV0YWJsZSBhdHRyaWJ1dGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMjI3NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmMzNjQ3NjI3NzRlNmY4
NGJkYzY0NWFhN2VjZDY2YTQ2MzMxZWM4NS4uZWE3ZWM2OWRkOTkzMGUxN2UyN2I5YWQ4OTQ1NDQ0
NzY4ZTIxMTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEwLTA0
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBB
ZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgV0FZTEFORF9MSUJT
IHRvIHRoZSBsaXN0IG9mIGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgZm9yIHRoZSBsaWJ3ZWJr
aXRndGsuc28gbGlicmFyeS4KKwogMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0
aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzYmI2MTlmYjZiZTZiYTQwMWQ4
Y2Q3YzFlYWQ2MGJhNDRkNzcxODMzLi5iN2ZiODdiMjA2NjFmYWI1MTNkZDVlMTNiOTM3ZWZkZDc4
ZTI5NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTAtMDQgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJHTCBz
dXBwb3J0IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBXQVlMQU5EX0xJQlMgdG8gdGhlIGxp
c3Qgb2YgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCBmb3IgdGhlIGxpYndlYmtpdDJndGsuc28g
bGlicmFyeQorICAgICAgICBhbmQgdGhlIHBsdWdpbiBwcm9jZXNzLiBBZGQgV0FZTEFORF9DRkxB
R1MgdG8gdGhlIGxpc3Qgb2YgQyBjb21waWxlciBmbGFncyBmb3IgdGhlIGxpYlBsYXRmcm9tR3Rr
Mi5sYSBzb3VyY2VzLgorCiAyMDEzLTEwLTAzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE1NTc4Nyk6IFdlYktpdFRlc3RSdW5uZXIgcmVidWls
ZHMgZnJvbSBzY3JhdGNoIHdoZW4gZG9pbmcgYW4gaW5jcmVtZW50YWwgYnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVt
YWtlZmlsZS5hbQppbmRleCAzNTg4NDQ3ZTk0NTc5ZDViYjgzNTIyNjZjODcyOTkzMjMzOTc2NjBk
Li44ZDc1MWJkYTVhZDk1YTMzYjgyMmNhMjZlN2I4ZTM0N2MyN2NmMmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMTksNyArMTE5LDggQEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1Mg
PSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNS
RVRfQ0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJ
JChXQVlMQU5EX0NGTEFHUykKIAogRGVyaXZlZFNvdXJjZXMvUGxhdGZvcm0vQ29sb3JEYXRhLmNw
cDogJChXZWJDb3JlKS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhh
c2gtdG9vbHMucGwKIAkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9v
bHMucGwgJChHRU5TT1VSQ0VTX1BMQVRGT1JNKSAkKFdlYkNvcmUpL3BsYXRmb3JtL0NvbG9yRGF0
YS5ncGVyZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZDBjMGRiZmM5MzEyMGJh
MTA5ODJhNTBmNWYyZjg3NTcxMTVhYzY4ZS4uYjYwMDkyYjIyMDY3OTI2NTllNDVkMjA3OWQwMTA0
NzEwNTE4MTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MTc1LDYgKzYx
NzUsMTIgQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBVU0VfT1BFTkdM
CiBpZiBVU0VfRUdMCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xEZWZhdWx0LmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5
bGFuZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMWDExLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTFgxMS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTC5oCiBlbmRpZiAjIEVORCBVU0VfRUdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCBlZGE5ODcyMDJiZmVmZTgxNjJlNDA2
OGNkMjk5ODQxNTFiYjI4NWE3Li5jMTEwZTNmMjAyZGM1NjBkYTEwZDYwMGFkZGVlYjlmNGY1MzJm
MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHAKQEAgLTIzLDYgKzIzLDkgQEAKIAogI2lmIFVTRShFR0wpCiAjaW5jbHVkZSAiR0xDb250ZXh0
RUdMLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMRGVmYXVsdC5oIgorI2luY2x1ZGUgIkdMQ29u
dGV4dEVHTFdheWxhbmQuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xYMTEuaCIKICNlbmRpZgog
CiAjaWYgVVNFKEdMWCkKQEAgLTM4LDYgKzQxLDkgQEAKICNpZiBQTEFURk9STShHVEspCiAjaW5j
bHVkZSA8Z2RrL2dkay5oPgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorI2lmZGVmIEdES19X
SU5ET1dJTkdfWDExCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNlbmRpZgogI2lmZGVmIEdES19X
SU5ET1dJTkdfV0FZTEFORAogI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CiAjZW5kaWYKQEAg
LTE0NSwyNyArMTUxLDQwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29udGV4dHNB
dEV4aXQoKQogI2VuZGlmCiB9CiAKLQotCiBQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0
OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUs
IEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgVVNFKEVHTCkKKyNpZiBQTEFURk9STShHVEsp
ICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8yKQogICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkg
PSBnZGtfZGlzcGxheV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfbWFu
YWdlcl9nZXQoKSk7Ci0KKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKSAmJiBVU0UoR0xY
KQorICAgIGlmIChHREtfSVNfWDExX0RJU1BMQVkoZGlzcGxheSkpIHsKKyAgICAgICAgaWYgKE93
blB0cjxHTENvbnRleHQ+IGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQo
d2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4gZ2x4Q29u
dGV4dC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgor
I2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKSAmJiBVU0UoRUdMKQorICAgIEFTU0VS
VCghd2luZG93SGFuZGxlKTsKICAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5
KSkgewotICAgICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICAg
ICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0
ZUNvbnRleHQ8R0xDb250ZXh0RUdMV2F5bGFuZD4oMCwgc2hhcmluZ0NvbnRleHQpKQogICAgICAg
ICAgICAgcmV0dXJuIGVnbENvbnRleHQucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE5JWCkKICNpZiBVU0Uo
R0xYKQogICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xY
OjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICBy
ZXR1cm4gZ2x4Q29udGV4dC5yZWxlYXNlKCk7CiAjZW5kaWYKKwogI2lmIFVTRShFR0wpCi0gICAg
aWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNv
bnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisjaWYgUExBVEZPUk0oWDExKQor
ICAgIHR5cGVkZWYgR0xDb250ZXh0RUdMWDExIEVHTFBsYXRmb3JtQ29udGV4dDsKKyNlbHNlCisg
ICAgdHlwZWRlZiBHTENvbnRleHRFR0xEZWZhdWx0IEVHTFBsYXRmb3JtQ29udGV4dDsKKyNlbmRp
ZgorICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpj
cmVhdGVDb250ZXh0PEVHTFBsYXRmb3JtQ29udGV4dD4od2luZG93SGFuZGxlLCBzaGFyaW5nQ29u
dGV4dCkpCiAgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuY3BwCmluZGV4IDA5YTdlZDhhYTAwM2UxY2Q0ZWJlYmIxNDFmY2FkODAwZmMzMWMw
ZWIuLjhlYzcxNzQzOTYxNWZjODY3YmNhMTFlNDViYTY0ODg5NWVmMjFjOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
CkBAIC0yMSw3ICsyMSwxMSBAQAogCiAjaWYgVVNFKEVHTCkKIAorI2luY2x1ZGUgIkdMQ29udGV4
dEVHTERlZmF1bHQuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xXYXlsYW5kLmgiCisjaW5jbHVk
ZSAiR0xDb250ZXh0RUdMWDExLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNp
bmNsdWRlIDxFR0wvZWdsLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiAjaWYgVVNFKENB
SVJPKQpAQCAtNDEsMTU3ICs0NSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBFR0xEaXNwbGF5IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0KLSNpZiBV
U0UoT1BFTkdMX0VTXzIpCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdM
X0VTX0FQSTsKLSNlbHNlCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdM
X0FQSTsKLSNlbmRpZgotCi1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKK3Rl
bXBsYXRlPGNsYXNzIEVHTFBsYXRmb3JtQ29udGV4dD4KK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQodHlwZW5hbWUgRUdMUGxhdGZvcm1Db250ZXh0
OjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4
dCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIGlmICghaW5p
dGlhbGl6ZWQpIHsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotI2lmIFBMQVRGT1JNKFgx
MSkKLSAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4dDo6
c2hhcmVkWDExRGlzcGxheSgpKTsKLSNlbHNlCi0gICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0g
ZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKLSNlbmRpZgotICAgICAgICBpZiAo
Z1NoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKGdT
aGFyZWRFR0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnR0xBUEkpKSkKLSAgICAgICAg
ICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgfQotICAgIHJldHVy
biBnU2hhcmVkRUdMRGlzcGxheTsKLX0KLQotc3RhdGljIGNvbnN0IEVHTGludCBnQ29udGV4dEF0
dHJpYnV0ZXNbXSA9IHsKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX0NPTlRFWFRfQ0xJ
RU5UX1ZFUlNJT04sIDIsCi0jZW5kaWYKLSAgICBFR0xfTk9ORQotfTsKLQotc3RhdGljIGJvb2wg
Z2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VU
eXBlIHN1cmZhY2VUeXBlKQotewotICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7Ci0jaWYg
VVNFKE9QRU5HTF9FU18yKQotICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdM
X0VTMl9CSVQsCi0jZWxzZQotICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdM
X0JJVCwKLSNlbmRpZgotICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCi0gICAgICAgIEVHTF9HUkVF
Tl9TSVpFLCA4LAotICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAotICAgICAgICBFR0xfU1RFTkNJ
TF9TSVpFLCA4LAotICAgICAgICBFR0xfQUxQSEFfU0laRSwgOCwKLSAgICAgICAgRUdMX1NVUkZB
Q0VfVFlQRSwgRUdMX05PTkUsCi0gICAgICAgIEVHTF9OT05FCi0gICAgfTsKLQotICAgIHN3aXRj
aCAoc3VyZmFjZVR5cGUpIHsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1ZmZlclN1cmZhY2U6
Ci0gICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwU3VyZmFjZToKLSAgICAgICAgYXR0
cmlidXRlTGlzdFsxM10gPSBFR0xfUElYTUFQX0JJVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBHTENvbnRleHRFR0w6OldpbmRvd1N1cmZhY2U6Ci0gICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNd
ID0gRUdMX1dJTkRPV19CSVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIEVHTGludCBu
dW1iZXJDb25maWdzUmV0dXJuZWQ7Ci0gICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhzaGFyZWRF
R0xEaXNwbGF5KCksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1
cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQotewotICAgIEVHTENvbnRleHQg
ZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4
dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9f
RElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb25maWcgY29uZmln
OwotICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNv
bnRleHQoZGlzcGxheSwgY29uZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1
dGVzKTsKLSAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJm
YWNlKGRpc3BsYXksIGNvbmZpZywgd2luZG93LCAwKTsKLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xf
Tk9fU1VSRkFDRSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKSk7Ci19
Ci0KLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJD
b250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMRGlzcGxheSBkaXNw
bGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbmZpZyBjb25maWc7Ci0g
ICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRl
eHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsK
LSAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9X
SURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKLSAgICBFR0xTdXJmYWNlIHN1cmZh
Y2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBidWZmZXJBdHRy
aWJ1dGVzKTsKLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgewotICAgICAgICBl
Z2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29udGV4
dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpKTsKLX0KLQotUGFzc093blB0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQotewotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBz
aGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAo
IWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBTdXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYg
KGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgRUdMaW50IGRlcHRoOwotICAgIGlmICghZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNv
bmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBE
ZWZhdWx0Um9vdFdpbmRvdyhzaGFyZWRYMTFEaXNwbGF5KCkpLCAxLCAxLCBkZXB0aCk7Ci0gICAg
aWYgKCFwaXhtYXApCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMU3VyZmFjZSBz
dXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBpeG1hcCwg
MCk7Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0
LCBzdXJmYWNlLCBQaXhtYXBTdXJmYWNlKSk7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCi19Ci0KLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0
ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQpCi17Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBzdGF0
aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAjaWYgIVVT
RShPUEVOR0xfRVNfMikKQEAgLTIwMywyMCArNjAsMTggQEAgUGFzc093blB0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdD
b250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFy
aW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0gICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29u
dGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4
dCkgOiBudWxscHRyOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0
ZVBpeG1hcENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwotCi0gICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQp
OwotICAgIAotICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBPd25QdHI8R0xDb250
ZXh0RUdMPiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IEVHTFBsYXRmb3JtQ29udGV4dChuYXRpdmVX
aW5kb3csIGVnbFNoYXJpbmdDb250ZXh0KSk7CisgICAgaWYgKGNvbnRleHQtPmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworCisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQotICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCi0gICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZSh0eXBlKQorR0xD
b250ZXh0RUdMOjpHTENvbnRleHRFR0woKQorICAgIDogbV9kaXNwbGF5KEVHTF9OT19ESVNQTEFZ
KQorICAgICwgbV9jb250ZXh0KEVHTF9OT19DT05URVhUKQorICAgICwgbV9zdXJmYWNlKEVHTF9O
T19TVVJGQUNFKQorICAgICwgbV90eXBlKFVua25vd24pCiAjaWYgVVNFKENBSVJPKQogICAgICwg
bV9jYWlyb0RldmljZSgwKQogI2VuZGlmCkBAIC0yMzAsMzAgKzg1LDMzIEBAIEdMQ29udGV4dEVH
TDo6fkdMQ29udGV4dEVHTCgpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9E
ZXZpY2UpOwogI2VuZGlmCiAKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNw
bGF5KCk7Ci0gICAgaWYgKG1fY29udGV4dCkgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9O
T19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xE
ZXN0cm95Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOwotICAgIH0KKyAgICBpZiAobV9kaXNw
bGF5ICE9IEVHTF9OT19ESVNQTEFZKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQgIT0gRUdMX05P
X0NPTlRFWFQpIHsKKyAgICAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCAwKTsKKyAgICAgICAgICAgIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICBlZ2xEZXN0
cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dCk7CisgICAgICAgIH0KIAotICAgIGlmICht
X3N1cmZhY2UpCi0gICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7
CisgICAgICAgIGlmIChtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgICAgICBl
Z2xEZXN0cm95U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgfQogfQogCiBib29s
IEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewotICAgIHJl
dHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFjZTsKKyAgICByZXR1cm4gbV90eXBlID09IFdpbmRv
d0Jhc2VkOwogfQogCiBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6
ZSgpCiB7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisKICAgICBpZiAoIWNhblJlbmRlclRvRGVm
YXVsdEZyYW1lYnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICBFR0xp
bnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNw
bGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAgIHx8ICFlZ2xRdWVy
eVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWln
aHQpKQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xf
V0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShtX2Rpc3BsYXksIG1f
c3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7
CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTI2MSwxOSArMTE5LDIw
IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKIAogYm9v
bCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29u
dGV4dCAmJiBtX3N1cmZhY2UpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCiAgICAgR0xDb250
ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRleHQo
KSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGVnbE1h
a2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29u
dGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBt
X3N1cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwQnVmZmVy
cygpCiB7Ci0gICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hhcmVk
RUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIGlm
IChtX3N1cmZhY2UpCisgICAgICAgIGVnbFN3YXBCdWZmZXJzKG1fZGlzcGxheSwgbV9zdXJmYWNl
KTsKIH0KIAogdm9pZCBHTENvbnRleHRFR0w6OndhaXROYXRpdmUoKQpAQCAtMjg4LDcgKzE0Nyw4
IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKICAgICAgICAg
cmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShzaGFyZWRFR0xE
aXNwbGF5KCksIG1fY29udGV4dCk7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgbV9jYWly
b0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKG1fZGlzcGxheSwgbV9jb250ZXh0KTsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CkBAIC0zMDIsNiArMTYyLDEwMyBA
QCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6cGxhdGZvcm1Db250ZXh0
KCkKIH0KICNlbmRpZgogCitFR0xCb29sZWFuIEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKEVH
TENvbmZpZyogY29uZmlnICwgR0xDb250ZXh0RUdMOjpDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAg
IEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAg
ICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCisjZWxzZQorICAgICAg
ICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKKyNlbmRpZgorICAgICAgICBF
R0xfUkVEX1NJWkUsIDgsCisgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAgICBFR0xf
QkxVRV9TSVpFLCA4LAorICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCA4LAorICAgICAgICBFR0xf
QUxQSEFfU0laRSwgOCwKKyAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX05PTkUsCisgICAg
ICAgIEVHTF9OT05FCisgICAgfTsKKworICAgIHN3aXRjaCAoY29udGV4dFR5cGUpIHsKKyAgICBj
YXNlIFBidWZmZXJCYXNlZDoKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUEJVRkZF
Ul9CSVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGl4bWFwQmFzZWQ6CisgICAgICAgIGF0
dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV2luZG93QmFzZWQ6CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19C
SVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VyZmFjZWxlc3M6CisgICAgY2FzZSBVbmtu
b3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOworICAgIHJl
dHVybiBlZ2xDaG9vc2VDb25maWcobV9kaXNwbGF5LCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEs
ICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKK30KKwor
RUdMZW51bSBHTENvbnRleHRFR0w6OmdsQVBJKCkgY29uc3QKK3sKKyNpZiBVU0UoT1BFTkdMX0VT
XzIpCisgICAgcmV0dXJuIEVHTF9PUEVOR0xfRVNfQVBJOworI2Vsc2UKKyAgICByZXR1cm4gRUdM
X09QRU5HTF9BUEk7CisjZW5kaWYKK30KKworRUdMaW50KiBHTENvbnRleHRFR0w6OmNvbnRleHRB
dHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgRUdMaW50IGNvbnRleHRBdHRyaWJ1dGVz
W10gPSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAgICBFR0xfQ09OVEVYVF9DTElFTlRf
VkVSU0lPTiwgMiwKKyNlbmRpZgorICAgICAgICBFR0xfTk9ORQorICAgIH07CisgICAgcmV0dXJu
IGNvbnRleHRBdHRyaWJ1dGVzOworfQorCitib29sIEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
clN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQobV9kaXNw
bGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAg
aWYgKGNob29zZUNvbmZpZygmZWdsQ29uZmlnLCBQYnVmZmVyQmFzZWQpICE9IEVHTF9UUlVFKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KG1fZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0
dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNb
XSA9IHsgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OworICAgIEVHTFN1
cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKG1fZGlzcGxheSwgZWdsQ29u
ZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZB
Q0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fY29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBtX3R5cGUgPSBQYnVmZmVyQmFzZWQ7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMOjppc1ZhbGlkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0ICE9IEVHTF9OT19DT05URVhUICYmIChtX3N1cmZhY2UgIT0g
RUdMX05PX1NVUkZBQ0UgfHwgbV90eXBlID09IFN1cmZhY2VsZXNzKTsKK30KKworI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCit0ZW1wbGF0ZSBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVDb250ZXh0PEdMQ29udGV4dEVHTFdheWxhbmQ+KHR5cGVuYW1lIEdMQ29udGV4
dEVHTFdheWxhbmQ6Ok5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogPSAwKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFgxMSkKK3RlbXBsYXRlIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENv
bnRleHRFR0w6OmNyZWF0ZUNvbnRleHQ8R0xDb250ZXh0RUdMWDExPih0eXBlbmFtZSBHTENvbnRl
eHRFR0xYMTE6Ok5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogPSAwKTsKKyNlbmRpZgordGVt
cGxhdGUgUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4
dDxHTENvbnRleHRFR0xEZWZhdWx0Pih0eXBlbmFtZSBHTENvbnRleHRFR0xEZWZhdWx0OjpOYXRp
dmVXaW5kb3dUeXBlLCBHTENvbnRleHQqID0gMCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggYzg4N2UwYmViY2VmNzlhNTRjNGU5YzVk
NWQ2ZTFiOTI2ZmM5NTRjMS4uZGQwY2M1MGUwODIyMjI0MjlhZGQyZTJjM2E5MGZjZGQyYjZiMTYw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaApAQCAtMjMsMTcgKzIzLDMxIEBACiAjaWYgVVNFKEVHTCkKIAogI2luY2x1ZGUg
IkdMQ29udGV4dC5oIgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogCi0jaW5jbHVkZSA8
RUdML2VnbC5oPgordHlwZWRlZiB1bnNpZ25lZCBFR0xCb29sZWFuOwordHlwZWRlZiB2b2lkKiBF
R0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQqIEVHTERp
c3BsYXk7Cit0eXBlZGVmIHZvaWQqIEVHTFN1cmZhY2U7Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVu
dW07Cit0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBFR0xpbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZh
Y2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsK
LSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0
aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDApOwotICAgIHN0YXRp
YyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVX
aW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyAgICBlbnVtIENvbnRleHRU
eXBlIHsKKyAgICAgICAgV2luZG93QmFzZWQsCisgICAgICAgIFBidWZmZXJCYXNlZCwKKyAgICAg
ICAgUGl4bWFwQmFzZWQsCisgICAgICAgIFN1cmZhY2VsZXNzLAorICAgICAgICBVbmtub3duCisg
ICAgfTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVHTFBsYXRmb3JtQ29udGV4dD4KKyAgICBzdGF0
aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNvbnRleHQodHlwZW5hbWUgRUdMUGxh
dGZvcm1Db250ZXh0OjpOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0
ID0gMCk7CiAKICAgICB2aXJ0dWFsIH5HTENvbnRleHRFR0woKTsKICAgICB2aXJ0dWFsIGJvb2wg
bWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC00OSwxOCArNjMsMjUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKICNlbmRp
ZgogCi1wcml2YXRlOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQpOworcHJvdGVjdGVkOgorICAgIEdMQ29udGV4dEVHTCgpOworICAgIEVHTEJv
b2xlYW4gY2hvb3NlQ29uZmlnKEVHTENvbmZpZyosIENvbnRleHRUeXBlKSBjb25zdDsKKyAgICBF
R0xlbnVtIGdsQVBJKCkgY29uc3Q7CisgICAgRUdMaW50KiBjb250ZXh0QXR0cmlidXRlcygpIGNv
bnN0OworCisgICAgYm9vbCBjcmVhdGVQYnVmZmVyU3VyZmFjZShFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KTsKIAorICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5OworICAgIEVHTENvbnRleHQgbV9j
b250ZXh0OworICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOworICAgIENvbnRleHRUeXBlIG1fdHlw
ZTsKKworcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4
dEVHTCopOwogICAgIHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KHZvaWQpOwog
Ci0gICAgR0xDb250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBl
KTsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAotICAgIEVHTENvbnRleHQgbV9jb250ZXh0
OwotICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOwotICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsK
ICNpZiBVU0UoQ0FJUk8pCiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xEZWZhdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0xEZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjUyNzYyOGNiNWFlN2JmOWM0
YTNjNmJlMDliZTBjNjQzNmI0MDg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuY3BwCkBAIC0wLDAgKzEs
NzAgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xEZWZhdWx0
LmgiCisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoRUdMZW51bSBnbEFQ
SSkKK3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJ
U1BMQVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBzaGFy
ZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAg
ICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFs
aXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdsQVBJKSkpCisgICAg
ICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorCisgICAg
cmV0dXJuIHNoYXJlZEVHTERpc3BsYXk7Cit9CisKK0dMQ29udGV4dEVHTERlZmF1bHQ6OkdMQ29u
dGV4dEVHTERlZmF1bHQoR0xDb250ZXh0RUdMRGVmYXVsdDo6TmF0aXZlV2luZG93VHlwZSBuYXRp
dmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgbV9kaXNwbGF5ID0g
c2hhcmVkRGlzcGxheShnbEFQSSgpKTsKKyAgICBpZiAobV9kaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY3JlYXRlV2luZG93U3VyZmFjZShuYXRp
dmVXaW5kb3csIHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChjcmVh
dGVQYnVmZmVyU3VyZmFjZShzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEFTU0VSVChtX2NvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpOworICAgIEFTU0VSVChtX3N1cmZh
Y2UgPT0gRUdMX05PX1NVUkZBQ0UpOworfQorCisKK2Jvb2wgR0xDb250ZXh0RUdMRGVmYXVsdDo6
Y3JlYXRlV2luZG93U3VyZmFjZShHTENvbnRleHRFR0xEZWZhdWx0OjpOYXRpdmVXaW5kb3dUeXBl
IG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQo
bV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIGlmICghbmF0aXZlV2luZG93KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlm
IChjaG9vc2VDb25maWcoJmVnbENvbmZpZywgV2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVD
b250ZXh0KG1fZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJp
YnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1
cmZhY2UobV9kaXNwbGF5LCBlZ2xDb25maWcsIG5hdGl2ZVdpbmRvdywgMCk7CisgICAgaWYgKHN1
cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobV9k
aXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1f
Y29udGV4dCA9IGNvbnRleHQ7CisgICAgbV9zdXJmYWNlID0gc3VyZmFjZTsKKyAgICBtX3R5cGUg
PSBXaW5kb3dCYXNlZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xEZWZhdWx0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzNDQ3YWJiYWYxMzA3MjJhYWU5MjdiOGU0YTA4ZGQ4NGIzZWNiMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVm
YXVsdC5oCkBAIC0wLDAgKzEsMzQgQEAKKyNpZm5kZWYgR0xDb250ZXh0RUdMRGVmYXVsdF9oCisj
ZGVmaW5lIEdMQ29udGV4dEVHTERlZmF1bHRfaAorCisjaWYgVVNFKEVHTCkKKworI2luY2x1ZGUg
IkdMQ29udGV4dEVHTC5oIgorCisjaWYgIVBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxlZ2xwbGF0
Zm9ybS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR0xDb250ZXh0
RUdMRGVmYXVsdCA6IHB1YmxpYyBHTENvbnRleHRFR0wgeworICAgIGZyaWVuZCBjbGFzcyBHTENv
bnRleHRFR0w7CisKK3B1YmxpYzoKKyNpZiAhUExBVEZPUk0oR1RLKQorICAgIHR5cGVkZWYgRUdM
TmF0aXZlV2luZG93VHlwZSBOYXRpdmVXaW5kb3dUeXBlOworI2Vsc2UKKyAgICB0eXBlZGVmIHVp
bnQ2NF90IE5hdGl2ZVdpbmRvd1R5cGU7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBHTENvbnRl
eHRFR0xEZWZhdWx0KE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQp
OworCisgICAgYm9vbCBjcmVhdGVXaW5kb3dTdXJmYWNlKE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKEVHTCkKKworI2VuZGlmIC8vIEdMQ29udGV4dEVHTERlZmF1bHRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFdheWxhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTFdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MjdjZjYzZGIwNjJmYTdiMzA2ZDEzZThl
YTc4M2Y3MTFkNjlmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw2MSBAQAor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTFdheWxhbmQuaCIKKwor
I2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlIDx3YXlsYW5kLWVn
bC5oPgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRl
IDxnZGsvZ2RrLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECisjaW5jbHVkZSA8Z2Rr
L2dka3dheWxhbmQuaD4KKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRGlzcGxheShFR0xlbnVtIGdsQVBJKQoreworICAgIHN0
YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsK
KyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyAgICAgICAgR2RrRGlzcGxheSogZGlzcGxheSA9
IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5h
Z2VyX2dldCgpKTsKKyAgICAgICAgQVNTRVJUKEdES19JU19XQVlMQU5EX0RJU1BMQVkoZGlzcGxh
eSkpOworICAgICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSogd2xEaXNwbGF5ID0gZ2RrX3dheWxhbmRf
ZGlzcGxheV9nZXRfd2xfZGlzcGxheShkaXNwbGF5KTsKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxh
eSA9IGVnbEdldERpc3BsYXkod2xEaXNwbGF5KTsKKyNlbmRpZgorCisgICAgICAgIGlmIChzaGFy
ZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShzaGFyZWRF
R0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShnbEFQSSkpKQorICAgICAgICAgICAgc2hh
cmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKworICAgIHJldHVybiBzaGFy
ZWRFR0xEaXNwbGF5OworfQorCitHTENvbnRleHRFR0xXYXlsYW5kOjpHTENvbnRleHRFR0xXYXls
YW5kKEdMQ29udGV4dEVHTFdheWxhbmQ6Ok5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBF
R0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIG1fZGlzcGxheSA9IHNoYXJlZERpc3Bs
YXkoZ2xBUEkoKSk7CisKKyAgICBpZiAobV9kaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlTdHJp
bmcobV9kaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYgKCFzdHJzdHIoZXh0ZW5zaW9u
cywgIkVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCIpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1fZGlzcGxheSwgMCwgc2hh
cmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVH
TF9OT19DT05URVhUKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0
OworICAgIG1fc3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAgIG1fdHlwZSA9IFN1cmZhY2Vs
ZXNzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAm
JiBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI1NjIy
ZWMzMTYyNmRkY2QxYmEyZDlhNjlmZTg5ZTczMzdiMzlhYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmgK
QEAgLTAsMCArMSwyNiBAQAorI2lmbmRlZiBHTENvbnRleHRFR0xXYXlsYW5kX2gKKyNkZWZpbmUg
R0xDb250ZXh0RUdMV2F5bGFuZF9oCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5E
KQorCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKK3N0cnVjdCB3bF9lZ2xfd2luZG93Owor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdMQ29udGV4dEVHTFdheWxhbmQgOiBwdWJs
aWMgR0xDb250ZXh0RUdMIHsKKyAgICBmcmllbmQgY2xhc3MgR0xDb250ZXh0RUdMOworCitwdWJs
aWM6CisgICAgdHlwZWRlZiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyogTmF0aXZlV2luZG93VHlwZTsK
KworcHJpdmF0ZToKKyAgICBHTENvbnRleHRFR0xXYXlsYW5kKE5hdGl2ZVdpbmRvd1R5cGUsIEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKKworI2VuZGlmIC8vIEdM
Q29udGV4dEVHTFdheWxhbmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTY2ZmU0OGRh
NTA4MTJlMWY2Zjc0MGQ0ODg2NjNmYTg1MDliMjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKQEAgLTAs
MCArMSwxMDggQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0xY
MTEuaCIKKworI2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKKworI2luY2x1ZGUgIkdMQ29u
dGV4dC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgRUdMRGlzcGxheSBzaGFyZWREaXNwbGF5KEVHTGVudW0gZ2xBUEkpCit7CisgICAgc3Rh
dGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgewor
ICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9
IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworICAgICAgICBp
ZiAoc2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUo
c2hhcmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ2xBUEkpKSkKKyAgICAgICAg
ICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICByZXR1
cm4gc2hhcmVkRUdMRGlzcGxheTsKK30KKworR0xDb250ZXh0RUdMWDExOjpHTENvbnRleHRFR0xY
MTEoR0xDb250ZXh0RUdMWDExOjpOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBtX2Rpc3BsYXkgPSBzaGFyZWREaXNwbGF5KGds
QVBJKCkpOworICAgIGlmIChtX2Rpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChjcmVhdGVXaW5kb3dTdXJmYWNlKG5hdGl2ZVdpbmRvdywgc2hhcmlu
Z0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNyZWF0ZVBidWZmZXJTdXJmYWNl
KHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChjcmVhdGVQaXhtYXBT
dXJmYWNlKHNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1f
Y29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCk7CisgICAgQVNTRVJUKG1fc3VyZmFjZSA9PSBFR0xf
Tk9fU1VSRkFDRSk7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMWDExOjpjcmVhdGVXaW5kb3dTdXJm
YWNlKEdMQ29udGV4dEVHTFgxMTo6TmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheSAhPSBFR0xfTk9f
RElTUExBWSk7CisKKyAgICBpZiAoIW5hdGl2ZVdpbmRvdykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgRUdMQ29uZmlnIGVnbENvbmZpZzsKKyAgICBpZiAoY2hvb3NlQ29uZmlnKCZlZ2xD
b25maWcsIFdpbmRvd0Jhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtX2Rpc3BsYXksIGVn
bENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChj
b250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBF
R0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1fZGlzcGxheSwgZWds
Q29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJG
QUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0Owor
ICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV90eXBlID0gV2luZG93QmFzZWQ7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR0xDb250ZXh0RUdMWDExOjpjcmVhdGVQaXhtYXBTdXJm
YWNlKEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKG1fZGlzcGxheSAh
PSBFR0xfTk9fRElTUExBWSk7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChj
aG9vc2VDb25maWcoJmVnbENvbmZpZywgUGl4bWFwQmFzZWQpICE9IEVHTF9UUlVFKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250
ZXh0KG1fZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0
ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEVHTGludCBkZXB0aDsKKyAgICBpZiAoZWdsR2V0Q29uZmlnQXR0cmli
KG1fZGlzcGxheSwgZWdsQ29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSAhPSBFR0xfVFJV
RSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIGNvbnRleHQpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQ
aXhtYXAoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KEdM
Q29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwgZGVwdGgpOworICAgIGlmICghcGl4
bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBl
Z2xDcmVhdGVQaXhtYXBTdXJmYWNlKG1fZGlzcGxheSwgZWdsQ29uZmlnLCBwaXhtYXAsIDApOwor
ICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KG1fZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7Cisg
ICAgbV90eXBlID0gUGl4bWFwQmFzZWQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xYMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYmRiYTdiZTU0ZTQzODYzZmExODMyNDQzN2YzMTA1ZDBlMGM0
MjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTFgxMS5oCkBAIC0wLDAgKzEsMjYgQEAKKyNpZm5kZWYgR0xDb250ZXh0
RUdMWDExX2gKKyNkZWZpbmUgR0xDb250ZXh0RUdMWDExX2gKKworI2lmIFVTRShFR0wpICYmIFBM
QVRGT1JNKFgxMSkKKworI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdMQ29udGV4dEVHTFgxMSA6IHB1YmxpYyBHTENvbnRleHRFR0wgewor
ICAgIGZyaWVuZCBjbGFzcyBHTENvbnRleHRFR0w7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHVp
bnQ2NF90IE5hdGl2ZVdpbmRvd1R5cGU7CisKK3ByaXZhdGU6CisgICAgR0xDb250ZXh0RUdMWDEx
KE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIGJvb2wg
Y3JlYXRlV2luZG93U3VyZmFjZShOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KTsKKyAgICBib29sIGNyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
RUdMKSAmJiBQTEFURk9STShYMTEpCisKKyNlbmRpZiAvLyBHTENvbnRleHRFR0xYMTFfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCAwYWYxMzc5NmIzYjJjM2FkNTcyYzVmNTZiMDAwYWI2
MDY1YTRkMTFjLi41MGFjNWYxZmU3ZWQ5YWQ1MzM4MDFlY2JmZTUyOGUxYWFhZjZhNmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTI2LDYgKzEyNiw3IEBAIGxpYndlYmtpdGd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9MSUJBCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RF
X0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYQ09NUE9T
SVRFX0xJQlMpIFwKIAkkKFhEQU1BR0VfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBj
MWRhMzE1YjQzZGMyMmRlYTk5MzU3ZmQ5YjE1NTU5NjI1YTliOTFhLi4xZTg2NTZjYjYwYzEyOTVk
MjJiODVkMDgzZGNiNWRkMGRjNzlmZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMjcxLDYg
KzI3MSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJJChQTkdfTElCUykgXAogCSQoU1FM
SVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQo
V0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykgXApA
QCAtNTQ4LDcgKzU0OSw4IEBAIGxpYlBsYXRmb3JtR3RrMl9sYV9DUFBGTEFHUyA9IFwKIAkkKEdT
VFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUSzJfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlMQU5E
X0NGTEFHUykKIAogIyBJbmplY3RlZCBCdW5kbGUKIGluamVjdGVkYnVuZGxlZGlyID0gJChsaWJk
aXIpL3dlYmtpdDJndGstMy4wL2luamVjdGVkLWJ1bmRsZQpAQCAtNjk4LDYgKzcwMCw3IEBAIFBy
b2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERBREQgPSBcCiAJJChTSE1fTElCUykgXAogCSQo
U1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAog
CSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNCBiL1NvdXJjZS9hdXRv
dG9vbHMvRmluZERlcGVuZGVuY2llcy5tNAppbmRleCBlZmMyZGIzODFlZGQzOTk3NzgxODc5NTk4
Yzc2Yjc5YmQ5NjY4MDk2Li4xOTI5ZGU0NTQxOGUwZjMxYmZhMTVkOWVkZTUxMjk4OTlkZmU3NGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKKysrIGIv
U291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CkBAIC0yMTYsNiArMjE2LDEyIEBA
IGlmIHRlc3QgIiRlbmFibGVfd2F5bGFuZF90YXJnZXQiICE9ICJubyI7IHRoZW4KICAgICBdKQog
ZmkKIAoraWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3RhcmdldCIgPSAieWVzIjsgdGhlbgorICAg
IFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EXSwgW3dheWxhbmQtY2xpZW50IHdheWxhbmQtZWds
XSkKKyAgICBBQ19TVUJTVChXQVlMQU5EX0NGTEFHUykKKyAgICBBQ19TVUJTVChXQVlMQU5EX0xJ
QlMpCitmaQorCiBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtoYXZlX2dseD0ieWVzIl0s
IFtoYXZlX2dseD0ibm8iXSkKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgR0xY
IHN1cHBvcnRdKQogaWYgdGVzdCAiJGVuYWJsZV9nbHgiICE9ICJubyI7IHRoZW4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzViYTRhMWNkMWMz
ZjQyNzUyMjhmYmZkNWFjY2ZjZGNhNDU2ZWViLi4xMWNiZGVlMTE5MWFhZDE5MmFiN2E2MDdjMmMw
MWFlMGI5ZDRjMjU4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTAtMDQgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJHTCBzdXBwb3J0IHVuZGVy
IFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExODk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06IEFkZCBXQVlMQU5EX0xJQlMgdG8gdGhlIGxpc3Qgb2YgbGlicmFy
aWVzIHRvIGxpbmsgYWdhaW5zdCBmb3IgdGhlIER1bXBSZW5kZXJUcmVlIHByb2dyYW0uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbTogRGl0dG8gZm9yIHRoZSBUZXN0V2Vi
Q29yZSBwcm9ncmFtLgorCiAyMDEzLTEwLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG15c2VsZiB0byBzb21lIHdh
dGNobGlzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDNmYzlhMDA1ZDdjMzFhNTA4NGE0ZTM5NjdlNTQwMmMxMmE3NGExZjYu
LjIyZGYyZmY3NmIzYTI0ODc3YzQ2ODNjNTRiYzQ2ZDFmMzNhZjU2MjggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjEsNiAr
MTYxLDcgQEAgUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfTERBREQgPSBcCiAJJChHTElCX0xJQlMp
IFwKIAkkKExJQlNPVVBfTElCUykgXAogCSQoRlJFRVRZUEVfTElCUykgXAorCSQoV0FZTEFORF9M
SUJTKSBcCiAJJChXSU5NTV9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCBmMDMzYTc0ZjUwYjU0MTk2ZWQyZWQ3
NDNlZWQ4N2YxN2E1ZWQ5N2NjLi5iZWE2MjQzMDYyOWMxMDEwNjQwNDA5NDAwNTcwMmNhNDZiODA2
ZGQ4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTE1Niw2ICsxNTYsNyBAQCBQ
cm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJDb3JlX0xEQUREID0gXAogCSQoUE5HX0xJQlMp
IFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChXQVlMQU5EX0xJ
QlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBc
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYmRkMGRmMmYxNjU4NGZm
NWNhNDk1N2RhYzA1Y2NhMTA3ZTRiZjQ0Mi4uMDczZDJjZDcwNTViNGRlNDAxYzRkMGUwOGNhNDY2
MjhmZDk4NzA0ZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTEwLTA0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRv
dG9vbHMvRmluZERlcGVuZGVuY2llcy5tNDogQ2hlY2sgZm9yIHRoZSB3YXlsYW5kLWNsaWVudCBh
bmQgd2F5bGFuZC1lZ2wgZGVwZW5kZW5jaWVzLgorCiAyMDEzLTEwLTAyICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFF0IHJlbGF0ZWQgZmls
ZXMgZnJvbSB0aGUgcm9vdCBkaXJlY3Rvcmllcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218935</attachid>
            <date>2013-12-11 00:36:37 -0800</date>
            <delta_ts>2013-12-13 01:18:32 -0800</delta_ts>
            <desc>Iteration of Zan&apos;s patch</desc>
            <filename>bug-118944-20131211093636.patch</filename>
            <type>text/plain</type>
            <size>39870</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmMTZmZDE0ZGM3Mjk2
YmJiYTI1MjQ2YzE0MGJlMzVjY2NjYTI1OTQ1Li42Y2U0MzczY2QyYzFjYzE1MGY1YmY2NTc2ODQ4
ZTBmOGIwZTFiNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wOSAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfQ0ZMQUdT
IHRvIHRoZSBsaXN0IG9mIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBsaWJQbGF0Zm9ybUd0ay5s
YSBzb3VyY2VzLgorCiAyMDEzLTEyLTAyICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlh
Z28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIE5peCBVcHN0cmVhbTogVXBkYXRp
bmcgUGxhdGZvcm0gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2Q5ZTQ2YzIzM2UxMTg4NzcwNTI4MzU3
NTljYWUyZjRmNjMzMGU0Li5kYmViZGJjODc3ZDM1YzNjMzM5NWNmMmRkYzcxOTA3NDA4NTIwYTZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTMtMTItMDkgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJHTCBzdXBwb3J0
IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExODk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBHTENvbnRleHRFR0wgY2xhc3MgaXMgcmVmYWN0b3JlZCBzbyBpdCBpcyBwb3Nz
aWJsZSB0byBjcmVhdGUgcGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3NlcyBvZiBpdC4gU3ViY2xh
c3NlcyBtdXN0CisgICAgICAgIHNldCB1cCB0aGUgRUdMRGlzcGxheSBhbmQgRUdMQ29udGV4dCBp
biB0aGVpciBjb25zdHJ1Y3RvcnMgYW5kIGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgc3VyZmFj
ZSB0aGV5IHVzZWQgZm9yIHRoZQorICAgICAgICBjb250ZXh0IGNyZWF0aW9uLiBJZiBhbGwgdGhp
cyBpcyBkb25lIGFjY29yZGluZ2x5LCB0aGUgR0xDb250ZXh0RUdMIGluc3RhbmNlIGlzIGRlZW1l
ZCB2YWxpZCBhbmQgY2FuIGJlIHVzZWQgZnVydGhlci4KKworICAgICAgICBTdWJjbGFzc2VzIGNh
biBvdmVycmlkZSBtZXRob2RzIHRoYXQgcmV0dXJuIHRoZSBkZXNpcmVkIEVHTENvbmZpZywgdGhl
IEdMIEFQSSBvciB0aGUgY29udGV4dCBhdHRyaWJ1dGVzLCBpZiBuZWNlc3NhcnkuCisgICAgICAg
IEFwYXJ0IGZyb20gdGhvc2UgdGhyZWUgbWV0aG9kcyBhbmQgc3ViY2xhc3Mtc3BlY2lmaWMgc2V0
dXBzLCB0aGUgY29kZSBpcyBzaGFyZWQgdGhyb3VnaCB0aGUgR0xDb250ZXh0RUdMIHBhcmVudCBj
bGFzcy4KKyAgICAgICAgVGhpcyBjb3ZlcnMgY29tcGxldGUgY2xlYW51cCB1cG9uIHRoZSBvYmpl
Y3QgZGVzdHJ1Y3Rpb24sIGJ1ZmZlciBzd2FwcGluZyBjYWxscyBhbmQgdGhlIGRlZmF1bHQgZnJh
bWVidWZmZXIgc2l6ZSBxdWVyeWluZy4KKworICAgICAgICBUaGUgdGVtcGxhdGl6ZWQgR0xDb250
ZXh0RUdMOjpjcmVhdGVDb250ZXh0IHRha2VzIHRoZSBkZXNpcmVkIEdMQ29udGV4dEVHTCBzdWJj
bGFzcyB0eXBlIGFzIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBhbmQKKyAgICAgICAgcmV0dXJucyBh
IG5ldyBvYmplY3Qgb2YgdGhhdCB0eXBlIGlmIHRoZSBjb250ZXh0IGlzIHZhbGlkLCBhbmQgYSBu
dWxscHRyIG90aGVyd2lzZS4KKworICAgICAgICBGb3VyIGNvbnRleHQgdHlwZXMgKGFwYXJ0IGZy
b20gdGhlIGRlZmF1bHQgVW5rbm93biB0eXBlKSBhcmUgc3VwcG9ydGVkOgorICAgICAgICAtIHdp
bmRvdy1iYXNlZCwgdXNlZCB3aGVuIHRoZSBzdXJmYWNlIHdhcyBhY3F1aXJlZCB0aHJvdWdoIGVn
bENyZWF0ZVdpbmRvd1N1cmZhY2UsCisgICAgICAgIC0gcGJ1ZmZlci1iYXNlZCwgdXNlZCB3aGVu
IHRoZSBzdXJmYWNlIHdhcyBhY3F1aXJlZCB0aHJvdWdoIGVnbENyZWF0ZVBidWZmZXJTdXJmYWNl
LAorICAgICAgICAtIHBpeG1hcC1iYXNlZCwgdXNlZCB3aGVuIHRoZSBzdXJmYWNlIHdhcyBhY3F1
aXJlZCB0aHJvdWdoIGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UsCisgICAgICAgIC0gc3VyZmFjZWxl
c3MsIHdoZW4gdGhlIGNvbnRleHQgd2FzIGFxdWlyZWQgd2l0aG91dCBhIHZhbGlkIHN1cmZhY2Us
IHBvc3NpYmxlIHdpdGggdGhlIEVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCBleHRlbnNpb24u
CisKKyAgICAgICAgVGhlIEdMQ29udGV4dEVHTFgxMSBzdWJjbGFzcyByZXRhaW5zIHRoZSBjdXJy
ZW50IGJlaGF2aW9yLCBjcmVhdGluZyBlaXRoZXIgYSB3aW5kb3csIHBidWZmZXIgb3IgcGl4bWFw
IHN1cmZhY2UgYW5kIHByb3ZpZGUKKyAgICAgICAgYSBjb250ZXh0IGJhc2VkIG9uIHRoYXQuIFRo
ZSBHTENvbnRleHRFR0xEZWZhdWx0IHN1YmNsYXNzIHRyaWVzIHRvIGNyZWF0ZSBlaXRoZXIgYSB3
aW5kb3cgb3IgcGJ1ZmZlciBzdXJmYWNlIGFuZCBwcm92aWRlIGEKKyAgICAgICAgY29udGV4dCBi
YXNlZCBvbiB0aGF0LiBUaGUgR0xDb250ZXh0RUdMV2F5bGFuZCBzdWJjbGFzcyByZWxpZXMgb24g
dGhlIHN1cmZhY2VsZXNzIGNvbnRleHQgZXh0ZW5zaW9uLCBjcmVhdGluZyBhIGNvbnRleHQKKyAg
ICAgICAgd2l0aG91dCBhIHZhbGlkIHN1cmZhY2UgKGFzIGl0IGlzIG5vdCBuZWVkZWQgd2l0aCB0
aGUgZXh0ZW5zaW9uIHByZXNlbnQpLgorCisgICAgICAgIEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyBub3cgcmV0dXJucyBlaXRoZXIgR0xDb250ZXh0RUdMWDExIG9yIEdMQ29udGV4
dEVHTFdheWxhbmQgb2JqZWN0IHVuZGVyIHRoZSBHVEsgcG9ydCwKKyAgICAgICAgZGVwZW5kaW5n
IG9uIHdoYXQgZGlzcGxheSBpcyBiZWluZyB1c2VkLiBPbiBvdGhlciBwb3J0cyB0aGUgY3VycmVu
dCBiZWhhdmlvciBpcyBwcmVzZXJ2ZWQsIHJldHVybmluZyBHTENvbnRleHRHTFggaWYKKyAgICAg
ICAgR0xYIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3IsIGlmIEVHTCBzdXBwb3J0IGlzIGVuYWJsZWQs
IGVpdGhlciBHTENvbnRleHRFR0xYMTEgZm9yIG5vbi1HVEsgcG9ydHMgdGhhdCBlbmFibGUgWDEx
IHN1cHBvcnQgCisgICAgICAgIG9yIEdMQ29udGV4dEVHTERlZmF1bHQgZm9yIG90aGVyIHBvcnRz
IChsaWtlIHRoZSBXaW5kb3dzLWJhc2VkIHBvcnRzKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06IEFkZCBidWlsZCB0YXJnZXRzIGZvciB0aGUgbmV3IGZpbGVzLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cpOiBDaG9vc2UgYmV0d2VlbiBHTENvbnRleHRH
TFggb3IgV2F5bGFuZC1zcGVjaWZpYyBHTENvbnRleHRFR0wgZm9yIHRoZSBHVEsgcG9ydCwKKyAg
ICAgICAgZGVwZW5kaW5nIG9uIHRoZSBkaXNwbGF5IGJlaW5nIHVzZWQuIEJlaGF2aW9yIGlzIHJl
dGFpbmVkIGZvciBvdGhlciBwb3J0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
Q29udGV4dCk6IFRha2UgdGhlIHR5cGUgb2YgdGhlIGRlc2lyZWQgc3ViY2xhc3Mgb2YgR0xDb250
ZXh0RUdMIHRocm91Z2ggdGhlIHRlbXBsYXRlIGFyZ3VtZW50LgorICAgICAgICBBIG5ldyBvYmpl
Y3Qgb2YgdGhhdCB0eXBlIGlzIGNyZWF0ZWQsIGFuZCByZXR1cm5lZCBpZiB0aGUgY29uc3RydWN0
ZWQgb2JqZWN0IGlzIGEgdmFsaWQgR0xDb250ZXh0RUdMLgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMOjpHTENvbnRleHRFR0wpOiBJbml0aWFsaXplIHRoZSBtZW1iZXJzIHRvIGludmFs
aWQgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdM
KTogQ2xlYW4gdXAgdGhlIEVHTCBjb250ZXh0IGFuZCBzdXJmYWNlIGlmIHRoZXkgd2VyZSBpbml0
aWFsaXplZC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZh
dWx0RnJhbWVidWZmZXIpOiBQdXQgdGhlIGVudW0gdmFsdWUgaW50byB0aGUgcHJvcGVyIHNjb3Bl
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXpl
KTogQXNzZXJ0IHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCB3aGVuIHRoZSBtZXRob2QgaXMgaW52
b2tlZC4gVGhlIEVHTCBkaXNwbGF5CisgICAgICAgIGlzIG5vdyBsb2NhdGVkIGluIGEgbWVtYmVy
IHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1
cnJlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZl
cnMpOiBEaXR0by4gT25seSBzd2FwIHRoZSBidWZmZXJzIGlmIHRoZSBzdXJmYWNlIG1lbWJlciB2
YXJpYWJsZSBoYXMgYSB2YWxpZCB2YWx1ZSAod2hpY2ggbWF5CisgICAgICAgIG5vdCBiZSB0cnVl
IGluIHRoZSBjYXNlIG9mIGEgc3VyZmFjZWxlc3MgY29udGV4dCkuCisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKTogRGl0dG8gb24gdGhlIG9iamVjdCB2YWxpZGl0
eSBhbmQgdGhlIEVHTCBkaXNwbGF5IG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKTogQSBzaGFyZWQgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIHByb3BlciBFR0xDb25maWcgY2hvb3NpbmcuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmcm9t
IHRoZQorICAgICAgICBjb25zdHJ1Y3RvciBvZiBhbnkgc3ViY2xhc3MgdGhhdCByZXF1aXJlcyBh
IHByb3BlciBFR0xDb25maWcgZm9yIHRoZSBzdXJmYWNlIGNyZWF0aW9uLiBJdCBzaG91bGRuJ3Qg
YmUgY2FsbGVkIGlmIHRoYXQgc3ViY2xhc3MKKyAgICAgICAgd2lsbCBwcm92aWRlIGEgc3VyZmFj
ZWxlc3MgY29udGV4dC4gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiByZXF1aXJl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Z2xBUEkpOiBBIHNoYXJlZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgR0wgQVBJIHRoYXQncyB0byBiZSB1c2VkLCBkZXBlbmRpbmcgb24g
dGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4KKyAgICAgICAgQ2FuIGJlIG92ZXJyaWRlbiBi
eSBzdWJjbGFzc2VzIGlmIHJlcXVpcmVkLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
Ojpjb250ZXh0QXR0cmlidXRlcyk6IEEgc2hhcmVkIGltcGxlbWVudGF0aW9uIHRoYXQgcmV0dXJu
cyBhbiBhcnJheSBvZiB3aGF0IGF0dHJpYnV0ZXMgdGhlIEVHTENvbnRleHQKKyAgICAgICAgc2hv
dWxkIHBvc3Nlcy4gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiByZXF1aXJlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UpOiBB
IGNyb3NzLXBsYXRmb3JtIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBwaXhlbCBidWZmZXIgc3VyZmFj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6aXNWYWxpZCk6IEEgdmFsaWRpdHkg
Y2hlY2tlciBtZXRob2QgdGhhdCBjaGVja3MgaWYgYm90aCB0aGUgY29udGV4dCBhbmQgc3VyZmFj
ZSBhcmUgb2YgdmFsaWQgdmFsdWUsIHRoZQorICAgICAgICBsYXR0ZXIgcG9zc2libHkgYmVpbmcg
bnVsbCBpZiB0aGUgY29udGV4dCBpcyBvZiB0aGUgc3VyZmFjZWxlc3MgdHlwZS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6IERvbid0IGluY2x1ZGUgdGhl
IDxFR0wvZWdsLmg+IGhlYWRlciBkaXJlY3RseSBhcyB0aGF0IGxlYWtzIHRoZSBwbGF0Zm9ybSBp
bmZvcm1hdGlvbiBpbnRvCisgICAgICAgIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlLiBJ
bnN0ZWFkLCA8S0hSL2tocnBsYXRmb3JtLmg+IGlzIGluY2x1ZGVkIGluc3RlYWQsIHdpdGggdGhl
IHJlcXVpcmVkIEVHTCB0eXBlcyBtYW51YWxseSBkZWZpbmVkCisgICAgICAgIHRvIHRoZSBzYW1l
IHR5cGVzIGFzIGluIHRoZSA8RUdML2VnbC5oPiBoZWFkZXIuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuY3BwOiBBZGRlZC4gVGhlIGRlZmF1bHQg
R0xDb250ZXh0RUdMIHN1YmNsYXNzIGltcGxlbWVudGF0aW9uLiBSZXRhaW5zIGN1cnJlbnQgYmVo
YXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpzaGFyZWREaXNwbGF5KTogVXNlIHRoZSBFR0xfREVG
QVVMVF9ESVNQTEFZIGFzIHRoZSBvcmlnaW4gb2YgdGhlIHNoYXJlZCBFR0xEaXNwbGF5LgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMRGVmYXVsdDo6R0xDb250ZXh0RUdMRGVmYXVsdCk6
IFRyeSB0byBwcm92aWRlIGVpdGhlciBhIHdpbmRvdyBvciBwYnVmZmVyIEVHTFN1cmZhY2UgYW5k
IHRoZSByZXN1bHRpbmcgRUdMQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TERlZmF1bHQ6OmNyZWF0ZVdpbmRvd1N1cmZhY2UpOiBDcmVhdGUgYSB3aW5kb3cgc3VyZmFjZSBp
ZiBwb3NzaWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
RGVmYXVsdC5oOiBBZGRlZC4gU3ViY2xhc3NlcyBHTENvbnRleHRFR0wgYW5kIG9uIG5vbi1HVEsg
cG9ydHMgdXNlcyB0aGUgbmF0aXZlIHdpbmRvdyB0eXBlIGFzCisgICAgICAgIHByb3ZpZGVkIGJ5
IHRoZSA8RUdML2VnbHBsYXRmb3JtLmg+IGhlYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHA6IEFkZGVkLiBUaGUgV2F5bGFuZC1zcGVj
aWZpYyBHTENvbnRleHRFR0wgc3ViY2xhc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWREaXNwbGF5KTogT24gR1RLLCB1c2UgdGhlIHdsX2Rpc3BsYXkgb2JqZWN0IChh
cyBwcm92aWRlZCBieSB0aGUgR1RLKyB0b29sa2l0IGZvciB0aGUgZGVmYXVsdCBHZGtEaXNwbGF5
KSBhcyB0aGUgb3JpZ2luCisgICAgICAgIG9mIHRoZSBzaGFyZWQgRUdMRGlzcGxheS4KKyAgICAg
ICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFdheWxhbmQ6OkdMQ29udGV4dEVHTFdheWxhbmQpOiBD
aGVjayB0aGF0IHRoZSBzdXJmYWNlbGVzcyBjb250ZXh0IGV4dGVuc2lvbiBpcyBhdmFpbGFibGUs
IGZhaWxpbmcgaWYgaXQncyBub3QuCisgICAgICAgIEEgc3VyZmFjZWxlc3MgRUdMQ29udGV4dCBp
cyBjcmVhdGVkIG90aGVyd2lzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMV2F5bGFuZC5oOiBBZGRlZC4gU3ViY2xhc3NlcyBHTENvbnRleHRFR0wgYW5kIHVz
ZXMgYSB3bF9lZ2xfd2luZG93IHBvaW50ZXIgYXMgdGhlIG5hdGl2ZSB3aW5kb3cgdHlwZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcDogQWRkZWQu
IFRoZSBYMTEtc3BlY2lmaWMgR0xDb250ZXh0RUdMIHN1YmNsYXNzIGltcGxlbWVudGF0aW9uLiBS
ZXRhaW5zIGN1cnJlbnQgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpzaGFyZWREaXNwbGF5
KTogVXNlIHRoZSBzaGFyZWQgWDExIGRpc3BsYXkgKGFzIHNldCB1cCBpbiBHTENvbnRleHQgY2xh
c3MpIGFzIHRoZSBvcmlnaW4gb2YgdGhlIHNoYXJlZCBFR0xEaXNwbGF5LgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMWDExOjpHTENvbnRleHRFR0xYMTEpOiBUcnkgdG8gcHJvdmlkZSBl
aXRoZXIgYSB3aW5kb3csIHBidWZmZXIgb3IgcGl4bWFwIEVHTFN1cmZhY2UgYW5kIHRoZSByZXN1
bHRpbmcgRUdMQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgxMTo6Y3Jl
YXRlV2luZG93U3VyZmFjZSk6IENyZWF0ZSBhIHdpbmRvdyBzdXJmYWNlIGlmIHBvc3NpYmxlLgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMWDExOjpjcmVhdGVQaXhtYXBTdXJmYWNlKTog
Q3JlYXRlIGEgcGl4bWFwIHN1cmZhY2UgaWYgcG9zc2libGUuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5oOiBBZGRlZC4gU3ViY2xhc3NlcyBHTENvbnRl
eHRFR0wgYW5kIHVzZXMgdGhlIHVpbnQ2NF90IHR5cGUgYXMgdGhlIG5hdGl2ZSB3aW5kb3cgdHlw
ZS4KKwogMjAxMy0xMi0xMCAgR3VycHJlZXQgS2F1ciAgPGsuZ3VycHJlZXRAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgdG9wIGFuZCBib3R0b20gYmxhY2sgYmFja2dyb3VuZCBsaW5lIG5vdCBnZXR0
aW5nIGRpc3BsYXllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGNiZGZlMjhhMTJiZmE0OWQ5NTNkYmUw
YThmZmJmMzg5ZjE2MjJkYjIuLjUyMWZkNDVkYTk5ZDQyMzYyNGM3YmM0NDI4MmE1YzViZmM4YmRk
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdM
IHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfTElCUyB0byB0aGUg
bGlzdCBvZiBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IGZvciB0aGUgbGlid2Via2l0Z3RrLnNv
IGxpYnJhcnkuCisKIDIwMTMtMTItMTAgIEpvYW5tYXJpZSBEaWdncyAgPGpkaWdnc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIEFYOiBbQVRLXSBDb252ZXJ0IHRoZSBnZXRfdGV4dCBhdGt0ZXN0LmMg
dW5pdCB0ZXN0cyB0byBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNTRjMjk4OGM0NDFjYjI1
ZDk5NDBlOWE3ZTBiNTAwOGU0YmZlZmQ2Li5jZTRhM2FmZDRkYTAyMDgzYTIwZmVkNDVkMjI3MTQx
ODA2OWUyNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMDkgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJH
TCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExODk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBXQVlMQU5EX0xJQlMgdG8gdGhl
IGxpc3Qgb2YgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCBmb3IgdGhlIGxpYndlYmtpdDJndGsu
c28gbGlicmFyeQorICAgICAgICBhbmQgdGhlIHBsdWdpbiBwcm9jZXNzLiBBZGQgV0FZTEFORF9D
RkxBR1MgdG8gdGhlIGxpc3Qgb2YgQyBjb21waWxlciBmbGFncyBmb3IgdGhlIGxpYlBsYXRmcm9t
R3RrMi5sYSBzb3VyY2VzLgorCiAyMDEzLTEyLTEwICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5j
b20+CiAKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTI1NTU2PiBXZWJLaXQgZG9lc24n
dCBkZWFsIHdpdGggbG9uZ2VyIGJ1bmRsZSB2ZXJzaW9ucyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtl
ZmlsZS5hbQppbmRleCBiZGZmMjhlMjNjOTE3YTliZWM5ZGJhZjAwYzBhNjljOWMwOTU0ZjY3Li5h
ZmY1N2Y3MDY1OWVhYmE0ODRjZWIxZDMxM2I1YTFiNzBmZWM5MTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2Vm
aWxlLmFtCkBAIC0xMjAsNyArMTIwLDggQEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1MgPSBc
CiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRf
Q0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChX
QVlMQU5EX0NGTEFHUykKIAogRGVyaXZlZFNvdXJjZXMvUGxhdGZvcm0vQ29sb3JEYXRhLmNwcDog
JChXZWJDb3JlKS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhhc2gt
dG9vbHMucGwKIAkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMu
cGwgJChHRU5TT1VSQ0VTX1BMQVRGT1JNKSAkKFdlYkNvcmUpL3BsYXRmb3JtL0NvbG9yRGF0YS5n
cGVyZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYzlhMmRmYTJiMDAyMjU4ZDNm
ODBhMmI1ZmUzNmJiYWI3ZGZiNzhiNS4uY2E2MjEzNmUwN2RmZjEyOGIyOGU4MDI3YTYyMGFkYThk
MTNmY2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MjkxLDYgKzYyOTEs
OCBAQCBwbGF0Zm9ybWd0a19zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIFVTRV9PUEVOR0wKIGlm
IFVTRV9FR0wKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAogZW5kaWYgIyBFTkQg
VVNFX0VHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHAKaW5kZXggMGVkZTdmZmU4YmM5NTZkMzZjM2M2M2VkYzZiYjE0OTM3OTU2N2E1Mi4uMzljNjM4
MWZhOTljODQ5ZTZhNTcxNmQxMzVlZTJiNzgwY2Y1NWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0yMSw2ICsyMSw4IEBACiAKICNp
ZiBVU0UoT1BFTkdMKSB8fCAoUExBVEZPUk0oTklYKSAmJiBVU0UoT1BFTkdMX0VTXzIpKQogCisj
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisKICNpZiBVU0UoRUdMKQogI2luY2x1ZGUg
IkdMQ29udGV4dEVHTC5oIgogI2VuZGlmCkBAIC0yOSwxOSArMzEsMTcgQEAKICNpbmNsdWRlICJH
TENvbnRleHRHTFguaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
Ci0KICNpZiBQTEFURk9STShYMTEpCiAjaW5jbHVkZSA8WDExL1hsaWIuaD4KICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1dBWUxBTkQpICYmIEdES19XSU5ET1dJTkdfV0FZTEFORAogI2luY2x1ZGUgPGdkay9nZGsu
aD4KLSNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSNpZmRlZiBHREtfV0lORE9XSU5HX1dBWUxB
TkQKICNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgogI2VuZGlmCi0jZW5kaWYKKworI2lmICFV
U0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCiB1c2lu
ZyBXVEY6OlRocmVhZFNwZWNpZmljOwpAQCAtMTQzLDMwICsxNDMsNTYgQEAgdm9pZCBHTENvbnRl
eHQ6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0o
WDExKQogCitzdGF0aWMgYm9vbCBpbml0aWFsaXplT3BlbkdMQVBJKCkKK3sKKyAgICBzdGF0aWMg
Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVl
OworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgICAg
ICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisjZW5kaWYKKyAgICAgICAgaW5p
dGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKK30KIAogUGFzc093
blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93SGFuZGxlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewot
I2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpICYmIFVT
RShFR0wpCi0gICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0
X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKTsKKyNpZiBQTEFURk9S
TShOSVgpCisgICAgcmV0dXJuIG51bGxwdHI7CisjZWxzZQorCisgICAgaWYgKCFpbml0aWFsaXpl
T3BlbkdMQVBJKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKEdES19JU19X
QVlMQU5EX0RJU1BMQVkoZGlzcGxheSkpIHsKLSAgICAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+
IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBz
aGFyaW5nQ29udGV4dCkpCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJ
TkdfV0FZTEFORCkgJiYgVVNFKEVHTCkKKyAgICAvLyBJZiB3ZSBhcmUgcnVubmluZyBvbiBXYXls
YW5kLCBkb24ndCBldmVuIHRyeSB0byBjcmVhdGUgYSBHTFggY29udGV4dC4KKyAgICBpZiAoR0RL
X0lTX1dBWUxBTkRfRElTUExBWShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3Bs
YXkoZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXQoKSkpKSB7CisgICAgICAgIGlmIChPd25QdHI8R0xD
b250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChz
aGFyaW5nQ29udGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZWdsQ29udGV4dC5yZWxlYXNlKCk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JN
KE5JWCkKICNpZiBVU0UoR0xYKQorICAgIC8vIElmIHdlIGNhbm5vdCBjcmVhdGUgYSBHTFggY29u
dGV4dCwgZmFsbCBiYWNrIHRvIGNyZWF0aW5nIGFuIEVHTCBvbmUuCiAgICAgaWYgKE93blB0cjxH
TENvbnRleHQ+IGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93
SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgIHJldHVybiBnbHhDb250ZXh0LnJlbGVh
c2UoKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKQorICAgIGlmIChP
d25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVYMTFDb250
ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gZWdsQ29u
dGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKKwogI2lmIFVTRShF
R0wpCiAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgIHJl
dHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgotI2VuZGlmCisKICAgICByZXR1cm4g
bnVsbHB0cjsKKyNlbmRpZiAvLyAhUExBVEZPUk0oTklYKQogfQogCiBHTENvbnRleHQ6OkdMQ29u
dGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuY3BwCmluZGV4IDA5YTdlZDhhYTAwM2UxY2Q0ZWJlYmIxNDFmY2FkODAwZmMz
MWMwZWIuLmVkMGIzOTg1NWFmYmVlMGEwODI0NTAwOWFiZTEwNjM1OWRmMzA3ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
Y3BwCkBAIC0yMiwxMiArMjIsMTcgQEAKICNpZiBVU0UoRUdMKQogCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgPGNhaXJvLmg+CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNl
bmRpZgorCiAjaWYgVVNFKE9QRU5HTF9FU18yKQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2lu
Y2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgpAQCAtMzUsMTg4ICs0MCwxMDggQEAKICNpbmNsdWRlICJP
cGVuR0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQotI2luY2x1ZGUgPGNhaXJvLWdsLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgRUdMRGlzcGxheSBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwot
Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0gRUdM
X09QRU5HTF9FU19BUEk7Ci0jZWxzZQotc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0gRUdM
X09QRU5HTF9BUEk7Ci0jZW5kaWYKLQotc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxh
eSgpCitFR0xlbnVtIEdMQ29udGV4dEVHTDo6Z2xBUEkoKQogewotICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBpbml0
aWFsaXplZCA9IHRydWU7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgICAgICBnU2hhcmVkRUdMRGlz
cGxheSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworI2lm
IFVTRShPUEVOR0xfRVNfMikKKyAgICByZXR1cm4gRUdMX09QRU5HTF9FU19BUEk7CiAjZWxzZQot
ICAgICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElT
UExBWSk7CisgICAgcmV0dXJuIEVHTF9PUEVOR0xfQVBJOwogI2VuZGlmCi0gICAgICAgIGlmIChn
U2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoZ1No
YXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdHTEFQSSkpKQotICAgICAgICAg
ICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLSAgICB9Ci0gICAgcmV0dXJu
IGdTaGFyZWRFR0xEaXNwbGF5OwogfQogCi1zdGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0QXR0
cmlidXRlc1tdID0gewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICBFR0xfQ09OVEVYVF9DTElF
TlRfVkVSU0lPTiwgMiwKLSNlbmRpZgotICAgIEVHTF9OT05FCi19OwotCi1zdGF0aWMgYm9vbCBn
ZXRFR0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5
cGUgc3VyZmFjZVR5cGUpCitFR0xpbnQqIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMo
KQogewotICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CisgICAgc3RhdGljIEVHTGludCBj
b250ZXh0QXR0cmlidXRlc1tdID0gewogI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgRUdM
X1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9FUzJfQklULAotI2Vsc2UKLSAgICAgICAgRUdM
X1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9CSVQsCisgICAgICAgIEVHTF9DT05URVhUX0NM
SUVOVF9WRVJTSU9OLCAyLAogI2VuZGlmCi0gICAgICAgIEVHTF9SRURfU0laRSwgOCwKLSAgICAg
ICAgRUdMX0dSRUVOX1NJWkUsIDgsCi0gICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCi0gICAgICAg
IEVHTF9TVEVOQ0lMX1NJWkUsIDgsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAotICAgICAg
ICBFR0xfU1VSRkFDRV9UWVBFLCBFR0xfTk9ORSwKICAgICAgICAgRUdMX05PTkUKICAgICB9Owot
Ci0gICAgc3dpdGNoIChzdXJmYWNlVHlwZSkgewotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQYnVm
ZmVyU3VyZmFjZToKLSAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUEJVRkZFUl9CSVQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQaXhtYXBTdXJmYWNlOgot
ICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6V2luZG93U3VyZmFjZToKLSAgICAgICAgYXR0cmli
dXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKLSAgICByZXR1cm4gZWdsQ2hvb3NlQ29u
ZmlnKHNoYXJlZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVy
Q29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7CisgICAgcmV0dXJuIGNv
bnRleHRBdHRyaWJ1dGVzOwogfQogCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENv
bnRleHQqIHNoYXJpbmdDb250ZXh0KQotewotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKIAotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJl
ZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0
RUdMQ29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAo
Y29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CitzdGF0
aWMgRUdMRGlzcGxheSBzaGFyZWREaXNwbGF5KCkKK3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBz
aGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKIAotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1
cmZhY2UoZGlzcGxheSwgY29uZmlnLCB3aW5kb3csIDApOwotICAgIGlmIChzdXJmYWNlID09IEVH
TF9OT19TVVJGQUNFKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcmVkRUdM
RGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisgICAgICAgIGlm
IChzaGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShz
aGFyZWRFR0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShHTENvbnRleHRFR0w6OmdsQVBJ
KCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAg
ICB9CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJm
YWNlLCBXaW5kb3dTdXJmYWNlKSk7CisgICAgcmV0dXJuIHNoYXJlZEVHTERpc3BsYXk7CiB9CiAK
LVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250
ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGF0aWMgUGFzc093blB0cjxHTENvbnRl
eHQ+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBHTE5hdGl2ZVdpbmRv
d1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9
PSBFR0xfTk9fRElTUExBWSkKKyAgICBpZiAoIW5hdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmln
KCZjb25maWcsIFBidWZmZXJTdXJmYWNlKSkKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAg
IGlmIChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBHTENv
bnRleHRFR0w6OldpbmRvd0Jhc2VkKSAhPSBFR0xfVFJVRSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXks
IGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgRUdMQ29u
dGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJp
bmdDb250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkpOwogICAgIGlmIChj
b250ZXh0ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdMX1dJRFRILCAxLCBF
R0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OwotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENy
ZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOwor
ICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwg
ZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOwogICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKSB7CiAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOworICAgIHJl
dHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBHTENv
bnRleHRFR0w6OldpbmRvd0Jhc2VkKTsKIH0KIAotUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
KQorUGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChHTE5h
dGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQog
ewotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xE
aXNwbGF5KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOwogICAg
IGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywg
UGl4bWFwU3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIEVHTENvbnRleHQg
ZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4
dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKKyAgICBpZiAoT3duUHRyPEdM
Q29udGV4dD4gY29udGV4dCA9IGNyZWF0ZVdpbmRvd0NvbnRleHQoZGlzcGxheSwgbmF0aXZlV2lu
ZG93LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2Uo
KTsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250
ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
cmVsZWFzZSgpOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAg
IGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAotICAgIEVHTGludCBkZXB0aDsKLSAgICBpZiAoIWVn
bEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENv
bnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoZGlzcGxheSAhPSBFR0xfTk9fRElT
UExBWSk7CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChzaGFyZWRYMTFEaXNw
bGF5KCksIERlZmF1bHRSb290V2luZG93KHNoYXJlZFgxMURpc3BsYXkoKSksIDEsIDEsIGRlcHRo
KTsKLSAgICBpZiAoIXBpeG1hcCkKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChj
aG9vc2VDb25maWcoZGlzcGxheSwgJmVnbENvbmZpZywgUGJ1ZmZlckJhc2VkKSAhPSBFR0xfVFJV
RSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBl
Z2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGl4bWFwLCAwKTsKLQotICAg
IGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQorICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29u
dGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHTENvbnRl
eHRFR0woY29udGV4dCwgc3VyZmFjZSwgUGl4bWFwU3VyZmFjZSkpOwotI2Vsc2UKLSAgICByZXR1
cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250
ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0KQotewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgpKQorICAg
IHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdMX1dJRFRILCAxLCBF
R0xfSEVJR0hULCAxLCBFR0xfTk9ORSB9OworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENy
ZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGVnbENvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMp
OworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ry
b3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgc3Vj
Y2VzcyA9IHRydWU7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotI2lmICFVU0UoT1BFTkdMX0VT
XzIpCi0gICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKLSNlbmRpZgot
ICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQotICAgIGlmICghc3VjY2VzcykKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0
ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29u
dGV4dCktPm1fY29udGV4dCA6IDA7Ci0gICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29udGV4dCA9
IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBu
dWxscHRyOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1h
cENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwotCi0gICAgaWYgKCFjb250ZXh0KQotICAgICAg
ICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwotICAg
IAotICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gR0xDb250ZXh0RUdM
OjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlckJhc2VkKTsKIH0KIAot
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkK
K0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4
dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIENvbnRleHRUeXBlIGNvbnRleHRUeXBlKQor
ICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAs
IG1fc3VyZmFjZShzdXJmYWNlKQotICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3R5cGUoY29u
dGV4dFR5cGUpCiAjaWYgVVNFKENBSVJPKQogICAgICwgbV9jYWlyb0RldmljZSgwKQogI2VuZGlm
CkBAIC0yMzAsMjAgKzE1NSwyMSBAQCBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQogICAg
ICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJvRGV2aWNlKTsKICNlbmRpZgogCi0gICAg
RUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChtX2NvbnRl
eHQpIHsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotICAg
ICAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19DT05URVhUKTsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwg
bV9jb250ZXh0KTsKLSAgICB9CisgICAgaWYgKG1fZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkg
eworICAgICAgICBpZiAobV9jb250ZXh0ICE9IEVHTF9OT19DT05URVhUKSB7CisgICAgICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgICAgICBlZ2xN
YWtlQ3VycmVudChtX2Rpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdM
X05PX0NPTlRFWFQpOworICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBt
X2NvbnRleHQpOworICAgICAgICB9CiAKLSAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICBlZ2xE
ZXN0cm95U3VyZmFjZShkaXNwbGF5LCBtX3N1cmZhY2UpOworICAgICAgICBpZiAobV9zdXJmYWNl
ICE9IEVHTF9OT19TVVJGQUNFKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9kaXNw
bGF5LCBtX3N1cmZhY2UpOworICAgIH0KIH0KIAogYm9vbCBHTENvbnRleHRFR0w6OmNhblJlbmRl
clRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbV90eXBlID09IFdpbmRvd1N1
cmZhY2U7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBXaW5kb3dCYXNlZDsKIH0KIAogSW50U2l6ZSBH
TENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQpAQCAtMjUyLDggKzE3OCw4IEBA
IEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKICAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKIAogICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0OwotICAgIGlmICgh
ZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgs
ICZ3aWR0aCkKLSAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCks
IG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCisgICAgaWYgKCFlZ2xRdWVyeVN1cmZh
Y2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAgICAgICB8fCAh
ZWdsUXVlcnlTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0
KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJbnRTaXplKHdpZHRo
LCBoZWlnaHQpOwpAQCAtMjYxLDE5ICsxODcsMTcgQEAgSW50U2l6ZSBHTENvbnRleHRFR0w6OmRl
ZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogCiBib29sIEdMQ29udGV4dEVHTDo6bWFrZUNvbnRleHRD
dXJyZW50KCkKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0ICYmIG1fc3VyZmFjZSk7Ci0KICAgICBH
TENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmIChlZ2xHZXRDdXJyZW50Q29u
dGV4dCgpID09IG1fY29udGV4dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4g
ZWdsTWFrZUN1cnJlbnQoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwg
bV9jb250ZXh0KTsKKyAgICByZXR1cm4gZWdsTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZh
Y2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKIH0KIAogdm9pZCBHTENvbnRleHRFR0w6OnN3YXBC
dWZmZXJzKCkKIHsKLSAgICBBU1NFUlQobV9zdXJmYWNlKTsKLSAgICBlZ2xTd2FwQnVmZmVycyhz
aGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSk7CisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAg
ICAgZWdsU3dhcEJ1ZmZlcnMobV9kaXNwbGF5LCBtX3N1cmZhY2UpOwogfQogCiB2b2lkIEdMQ29u
dGV4dEVHTDo6d2FpdE5hdGl2ZSgpCkBAIC0yODgsNyArMjEyLDcgQEAgY2Fpcm9fZGV2aWNlX3Qq
IEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQogICAgICAgICByZXR1cm4gbV9jYWlyb0Rldmlj
ZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgbV9jYWlyb0Rldmlj
ZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9jb250ZXh0
KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUobV9kaXNwbGF5
LCBtX2NvbnRleHQpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKQEAgLTMw
Miw2ICsyMjYsNDQgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHTENvbnRleHRFR0w6OnBs
YXRmb3JtQ29udGV4dCgpCiB9CiAjZW5kaWYKIAorRUdMQm9vbGVhbiBHTENvbnRleHRFR0w6OmNo
b29zZUNvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRl
eHRFR0w6OkNvbnRleHRUeXBlIGNvbnRleHRUeXBlKQoreworICAgIEFTU0VSVChkaXNwbGF5ICE9
IEVHTF9OT19ESVNQTEFZKTsKKworICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CisjaWYg
VVNFKE9QRU5HTF9FU18yKQorICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdM
X0VTMl9CSVQsCisjZWxzZQorICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdM
X0JJVCwKKyNlbmRpZgorICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCisgICAgICAgIEVHTF9HUkVF
Tl9TSVpFLCA4LAorICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAorICAgICAgICBFR0xfU1RFTkNJ
TF9TSVpFLCA4LAorICAgICAgICBFR0xfQUxQSEFfU0laRSwgOCwKKyAgICAgICAgRUdMX1NVUkZB
Q0VfVFlQRSwgRUdMX05PTkUsCisgICAgICAgIEVHTF9OT05FCisgICAgfTsKKworICAgIHN3aXRj
aCAoY29udGV4dFR5cGUpIHsKKyAgICBjYXNlIFBidWZmZXJCYXNlZDoKKyAgICAgICAgYXR0cmli
dXRlTGlzdFsxM10gPSBFR0xfUEJVRkZFUl9CSVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UGl4bWFwQmFzZWQ6CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2luZG93QmFzZWQ6CisgICAgICAgIGF0dHJpYnV0
ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Vy
ZmFjZWxlc3M6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
RUdMX0ZBTFNFOworICAgIH0KKworICAgIEVHTGludCBudW1iZXJDb25maWdzUmV0dXJuZWQ7Cisg
ICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhkaXNwbGF5LCBhdHRyaWJ1dGVMaXN0LCBjb25maWcs
IDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEVHTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRl
eCBjODg3ZTBiZWJjZWY3OWE1NGM0ZTljNWQ1ZDZlMWI5MjZmYzk1NGMxLi41MWMwN2QzMjk4NzIy
ZjQ3MTg4MWVjNWYwYWQ4OWEyYjFkYmNhYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0yMywxNyArMjMsNDQgQEAK
ICNpZiBVU0UoRUdMKQogCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSA8S0hSL2to
cnBsYXRmb3JtLmg+CiAKLSNpbmNsdWRlIDxFR0wvZWdsLmg+Cit0eXBlZGVmIHVuc2lnbmVkIEVH
TEJvb2xlYW47Cit0eXBlZGVmIHZvaWQqIEVHTENvbmZpZzsKK3R5cGVkZWYgdm9pZCogRUdMQ29u
dGV4dDsKK3R5cGVkZWYgdm9pZCogRUdMRGlzcGxheTsKK3R5cGVkZWYgdm9pZCogRUdMU3VyZmFj
ZTsKK3R5cGVkZWYgdW5zaWduZWQgRUdMZW51bTsKK3R5cGVkZWYga2hyb25vc19pbnQzMl90IEVH
TGludDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHTENvbnRleHRFR0wgOiBwdWJs
aWMgR0xDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOwog
cHVibGljOgotICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93
U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSB9OwotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJp
bmdDb250ZXh0ID0gMCk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVh
dGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQpOworICAgIGVudW0gQ29udGV4dFR5cGUgeworICAgICAgICBXaW5kb3dCYXNlZCwKKyAg
ICAgICAgUGJ1ZmZlckJhc2VkLAorICAgICAgICBQaXhtYXBCYXNlZCwKKyAgICAgICAgU3VyZmFj
ZWxlc3MsCisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3Jl
YXRlKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1
cmZhY2UsIENvbnRleHRUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEdMQ29udGV4dEVHTChkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCB0eXBlKSk7CisgICAg
fQorCisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0KEdMTmF0
aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisjaWYgUExBVEZPUk0o
V0FZTEFORCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHQ+IGNyZWF0ZVdheWxhbmRD
b250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworI2VuZGlmCisjaWYgUExBVEZPUk0o
WDExKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlWDExQ29udGV4dChH
TE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworI2VuZGlmCisK
KyAgICBzdGF0aWMgRUdMQm9vbGVhbiBjaG9vc2VDb25maWcoRUdMRGlzcGxheSwgRUdMQ29uZmln
KiwgQ29udGV4dFR5cGUpOworICAgIHN0YXRpYyBFR0xlbnVtIGdsQVBJKCk7CisgICAgc3RhdGlj
IEVHTGludCogY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVH
TCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTUwLDE3ICs3
NywxNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc093blB0
cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0Nv
bnRleHQpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFw
Q29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKLQogICAgIHN0YXRpYyB2b2lkIGFk
ZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0RUdMKik7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cFNo
YXJlZEVHTERpc3BsYXkodm9pZCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdM
PiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xEaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKIAotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJm
YWNlVHlwZSk7CisgICAgR0xDb250ZXh0RUdMKEVHTERpc3BsYXksIEVHTENvbnRleHQsIEVHTFN1
cmZhY2UsIENvbnRleHRUeXBlKTsKIAorICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5OwogICAgIEVH
TENvbnRleHQgbV9jb250ZXh0OwogICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOwotICAgIEVHTFN1
cmZhY2VUeXBlIG1fdHlwZTsKKyAgICBDb250ZXh0VHlwZSBtX3R5cGU7CisKICNpZiBVU0UoQ0FJ
Uk8pCiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xXYXlsYW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDQxMDc5ZDQ3M2E5ZWNhMTkyMWQ1MjNhMzg5MGNi
OTVhMzU1ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworI2lmIFVTRShFR0wp
ICYmIFBMQVRGT1JNKFdBWUxBTkQpCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8
d2F5bGFuZC1lZ2wuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxnZGsvZ2RrLmg+
CisjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZFdheWxhbmREaXNwbGF5KCkKK3sKKyAgICBz
dGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisg
ICAgICAgIHJldHVybiBzaGFyZWRFR0xEaXNwbGF5OworCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OworCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkK
KyAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVs
dF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworICAgIEFTU0VSVChHREtfSVNf
V0FZTEFORF9ESVNQTEFZKGRpc3BsYXkpKTsKKyAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0
RGlzcGxheShnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkpKTsKKyNl
bmRpZgorCisgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFl
Z2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdsQVBJ
KCkpKSkKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHJl
dHVybiBzaGFyZWRFR0xEaXNwbGF5OworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250
ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQor
eworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZFdheWxhbmREaXNwbGF5KCk7CisgICAg
aWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKCFzdHJzdHIoZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMp
LCAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IikpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8g
c3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAw
OworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgMCwg
c2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09
IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBH
TENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3Vy
ZmFjZWxlc3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
RUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTIx
Y2IwZTg1ZWJhNDY0MzVjZDU1OWMxMmMyY2M2OTBmYmVmNDU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAK
QEAgLTAsMCArMSw5OCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4
dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oWDExKQorCisjaW5jbHVkZSAiR0xD
b250ZXh0LmgiCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZFgxMURpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xE
aXNwbGF5IHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXRE
aXNwbGF5KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKTsKKyAgICAgICAgaWYgKHNoYXJl
ZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVH
TERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKEdMQ29udGV4dEVHTDo6Z2xBUEkoKSkpKQor
ICAgICAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKwor
ICAgIHJldHVybiBzaGFyZWRFR0xEaXNwbGF5OworfQorCitzdGF0aWMgUGFzc093blB0cjxHTENv
bnRleHQ+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBHTE5hdGl2ZVdp
bmRvd1R5cGUgbmF0aXZlV2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAg
IGlmICghbmF0aXZlV2luZG93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENv
bmZpZyBlZ2xDb25maWc7CisgICAgaWYgKEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3Bs
YXksICZlZ2xDb25maWcsIEdMQ29udGV4dEVHTDo6V2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENy
ZWF0ZUNvbnRleHQoZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgR0xDb250ZXh0
RUdMOjpjb250ZXh0QXR0cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09O
VEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2Ug
PSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGVnbENvbmZpZywgbmF0aXZlV2luZG93
LCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xE
ZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKHNoYXJlZFgxMURpc3Bs
YXkoKSwgY29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCk7Cit9CisK
K3N0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xEaXNw
bGF5IGRpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMQ29uZmln
IGVnbENvbmZpZzsKKyAgICBpZiAoR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoZGlzcGxheSwg
JmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpQaXhtYXBCYXNlZCkgIT0gRUdMX1RSVUUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBHTENvbnRleHRFR0w6
OmNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhU
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTGludCBkZXB0aDsKKyAgICBpZiAo
ZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGVnbENvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZk
ZXB0aCkgIT0gRUdMX1RSVUUpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwg
Y29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFBpeG1hcCBw
aXhtYXAgPSBYQ3JlYXRlUGl4bWFwKEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpLCBEZWZh
dWx0Um9vdFdpbmRvdyhHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSksIDEsIDEsIGRlcHRo
KTsKKyAgICBpZiAoIXBpeG1hcCkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5
LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgRUdMU3Vy
ZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBlZ2xDb25maWcs
IHBpeG1hcCwgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAg
ICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShzaGFyZWRY
MTFEaXNwbGF5KCksIGNvbnRleHQsIHN1cmZhY2UsIEdMQ29udGV4dEVHTDo6UGl4bWFwQmFzZWQp
OworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVYMTFDb250
ZXh0KEdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkWDExRGlzcGxheSgpOwor
ICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/
IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDog
MDsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gY29udGV4dCA9IGNyZWF0ZVdpbmRvd0NvbnRl
eHQoZGlzcGxheSwgbmF0aXZlV2luZG93LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJl
dHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gY29udGV4
dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0
PiBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChkaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4
dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKworICAgIHJldHVybiBudWxs
cHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAm
JiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDRmZjQ2NTY0MDAy
Mzc0ZTBlMjlkNGQyZmNhZDhlNjlmNjQ1YmRkOGYuLjYzOTQ5MmIyM2M3Nzg4M2RiMzJjMThiMjNi
OGVjODZkNzQ1NGM1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjYsNiArMTI2
LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJVEUz
X0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQ
X0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykgXAogCSQoWERBTUFHRV9MSUJTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDE4MTc3YzNiM2NkMjE4ZTc2NTJiMzZkNWU2ZTM5ZjY5MjU3ZGIx
Y2IuLjQwMTMwNTJhN2RkNWRhZjFkNTcyZmQxMjVmMjdiMDhkYmY2N2Y1NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCkBAIC0yODUsNiArMjg1LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAkk
KFBOR19MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQo
V0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQo
WENPTVBPU0lURV9MSUJTKSBcCkBAIC02MDIsNyArNjAzLDggQEAgbGliUGxhdGZvcm1HdGsyX2xh
X0NQUEZMQUdTID0gXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLMl9DRkxBR1MpIFwK
IAkkKExJQlNFQ1JFVF9DRkxBR1MpIFwKLQkkKExJQlNPVVBfQ0ZMQUdTKQorCSQoTElCU09VUF9D
RkxBR1MpIFwKKwkkKFdBWUxBTkRfQ0ZMQUdTKQogCiAjIEluamVjdGVkIEJ1bmRsZQogaW5qZWN0
ZWRidW5kbGVkaXIgPSAkKGxpYmRpcikvd2Via2l0Mmd0ay0zLjAvaW5qZWN0ZWQtYnVuZGxlCkBA
IC03NTMsNiArNzU1LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCA9IFwK
IAkkKFNITV9MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAor
CSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAog
CSQoWFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5j
aWVzLm00IGIvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CmluZGV4IGVmYzJk
YjM4MWVkZDM5OTc3ODE4Nzk1OThjNzZiNzliZDk2NjgwOTYuLjE5MjlkZTQ1NDE4ZTBmMzFiZmEx
NWQ5ZWRlNTEyOTg5OWRmZTc0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERl
cGVuZGVuY2llcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQK
QEAgLTIxNiw2ICsyMTYsMTIgQEAgaWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3RhcmdldCIgIT0g
Im5vIjsgdGhlbgogICAgIF0pCiBmaQogCitpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRfdGFyZ2V0
IiA9ICJ5ZXMiOyB0aGVuCisgICAgUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRdLCBbd2F5bGFu
ZC1jbGllbnQgd2F5bGFuZC1lZ2xdKQorICAgIEFDX1NVQlNUKFdBWUxBTkRfQ0ZMQUdTKQorICAg
IEFDX1NVQlNUKFdBWUxBTkRfTElCUykKK2ZpCisKIEFDX0NIRUNLX0hFQURFUlMoW0dML2dseC5o
XSwgW2hhdmVfZ2x4PSJ5ZXMiXSwgW2hhdmVfZ2x4PSJubyJdKQogQUNfTVNHX0NIRUNLSU5HKFt3
aGV0aGVyIHRvIGVuYWJsZSBHTFggc3VwcG9ydF0pCiBpZiB0ZXN0ICIkZW5hYmxlX2dseCIgIT0g
Im5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDg0ZjE1YTA5NWZkNjgwZGUzZjI1ZGZiZDhiNTg0ZDQ2ODlkNmQ4NDMuLjI2NGFjMWZl
NjZlODRkYzBlNGUzYzFiOTM0ZWViYWMxMzY1OGZjMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMi0wOSAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfTElCUyB0
byB0aGUgbGlzdCBvZiBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IGZvciB0aGUgRHVtcFJlbmRl
clRyZWUgcHJvZ3JhbS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOiBE
aXR0byBmb3IgdGhlIFRlc3RXZWJDb3JlIHByb2dyYW0uCisKIDIwMTMtMTItMTAgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIGZvcndhcmQgZXhp
dCBvbiBEb3VibGVBc0ludDMyCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rv
b2xzL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNmYzlhMDA1ZDdjMzFhNTA4NGE0ZTM5NjdlNTQwMmMx
MmE3NGExZjYuLjIyZGYyZmY3NmIzYTI0ODc3YzQ2ODNjNTRiYzQ2ZDFmMzNhZjU2MjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBA
IC0xNjEsNiArMTYxLDcgQEAgUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfTERBREQgPSBcCiAJJChH
TElCX0xJQlMpIFwKIAkkKExJQlNPVVBfTElCUykgXAogCSQoRlJFRVRZUEVfTElCUykgXAorCSQo
V0FZTEFORF9MSUJTKSBcCiAJJChXSU5NTV9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkk
KFhUX0xJQlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFt
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCAwMzQyOGFhNzIyNTky
MTkxNjUxNDBjNGVhNTk5YWUyMmMyNzYxOGQ4Li4zZDI0NDNhYzk1YTA4ZGQ2MWIxN2ZkZGM3NmRh
ZjBhMDYyYTFlNWI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTE1OSw2ICsx
NTksNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJDb3JlX0xEQUREID0gXAogCSQo
UE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChX
QVlMQU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChY
VF9MSUJTKSBcCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmQwNjg4
ZmQ5ZTY0NzkyZGY2ODZhZWI3M2MwYThkZWFhZmFiYzE2Yy4uNzc4ODExNGU4NTJmN2Y0MmE3Mzll
YWY1ZTgzZTk5MmUyNjNlN2Y1NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXls
YW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNDogQ2hlY2sgZm9yIHRoZSB3YXlsYW5k
LWNsaWVudCBhbmQgd2F5bGFuZC1lZ2wgZGVwZW5kZW5jaWVzLgorCiAyMDEzLTEyLTEwICBUYW1h
cyBHZXJnZWx5ICA8dGdlcmdlbHkudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbQ01BS0VdIFJlbW92ZSBjb2RlIHRoYXQgZGlzYWJsZXMgQysrMHggY29tcGF0IHdhcm5p
bmdzIGZvciBnY2MtNC42IGFuZCBhYm92ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219162</attachid>
            <date>2013-12-13 01:18:32 -0800</date>
            <delta_ts>2013-12-13 08:01:55 -0800</delta_ts>
            <desc>Next iteration of Zan&apos;s patch</desc>
            <filename>0001-GTK-Add-WebGL-support-under-Wayland.patch</filename>
            <type>text/plain</type>
            <size>47910</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBkOTJhN2M2YzMzNjA4OWNiNGZkMzM5ZDY4NDdiMTY5ZGY2NjZhMGYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEyIERlYyAyMDEzIDAxOjQyOjAzICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODk0NAoKUGF0Y2ggYnkgWmFuIERvYmVyc2VrIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4gb24gMjAxMy0xMi0wOQpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCi46CgoqIFNvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNDogQ2hlY2sgZm9y
IHRoZSB3YXlsYW5kLWNsaWVudCBhbmQgd2F5bGFuZC1lZ2wgZGVwZW5kZW5jaWVzLgoKU291cmNl
L1BsYXRmb3JtOgoKKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfQ0ZMQUdTIHRvIHRoZSBs
aXN0IG9mIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBsaWJQbGF0Zm9ybUd0ay5sYSBzb3VyY2Vz
LgoKU291cmNlL1dlYkNvcmU6CgpUaGUgR0xDb250ZXh0RUdMIGNsYXNzIGlzIHJlZmFjdG9yZWQg
c28gaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHBsYXRmb3JtLXNwZWNpZmljIHN1YmNsYXNzZXMg
b2YgaXQuIFN1YmNsYXNzZXMgbXVzdApzZXQgdXAgdGhlIEVHTERpc3BsYXkgYW5kIEVHTENvbnRl
eHQgaW4gdGhlaXIgY29uc3RydWN0b3JzIGFuZCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHN1
cmZhY2UgdGhleSB1c2VkIGZvciB0aGUKY29udGV4dCBjcmVhdGlvbi4gSWYgYWxsIHRoaXMgaXMg
ZG9uZSBhY2NvcmRpbmdseSwgdGhlIEdMQ29udGV4dEVHTCBpbnN0YW5jZSBpcyBkZWVtZWQgdmFs
aWQgYW5kIGNhbiBiZSB1c2VkIGZ1cnRoZXIuCgpTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBtZXRo
b2RzIHRoYXQgcmV0dXJuIHRoZSBkZXNpcmVkIEVHTENvbmZpZywgdGhlIEdMIEFQSSBvciB0aGUg
Y29udGV4dCBhdHRyaWJ1dGVzLCBpZiBuZWNlc3NhcnkuCkFwYXJ0IGZyb20gdGhvc2UgdGhyZWUg
bWV0aG9kcyBhbmQgc3ViY2xhc3Mtc3BlY2lmaWMgc2V0dXBzLCB0aGUgY29kZSBpcyBzaGFyZWQg
dGhyb3VnaCB0aGUgR0xDb250ZXh0RUdMIHBhcmVudCBjbGFzcy4KVGhpcyBjb3ZlcnMgY29tcGxl
dGUgY2xlYW51cCB1cG9uIHRoZSBvYmplY3QgZGVzdHJ1Y3Rpb24sIGJ1ZmZlciBzd2FwcGluZyBj
YWxscyBhbmQgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgc2l6ZSBxdWVyeWluZy4KClRoZSB0ZW1w
bGF0aXplZCBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQgdGFrZXMgdGhlIGRlc2lyZWQgR0xD
b250ZXh0RUdMIHN1YmNsYXNzIHR5cGUgYXMgdGhlIHRlbXBsYXRlIGFyZ3VtZW50IGFuZApyZXR1
cm5zIGEgbmV3IG9iamVjdCBvZiB0aGF0IHR5cGUgaWYgdGhlIGNvbnRleHQgaXMgdmFsaWQsIGFu
ZCBhIG51bGxwdHIgb3RoZXJ3aXNlLgoKRm91ciBjb250ZXh0IHR5cGVzIChhcGFydCBmcm9tIHRo
ZSBkZWZhdWx0IFVua25vd24gdHlwZSkgYXJlIHN1cHBvcnRlZDoKLSB3aW5kb3ctYmFzZWQsIHVz
ZWQgd2hlbiB0aGUgc3VyZmFjZSB3YXMgYWNxdWlyZWQgdGhyb3VnaCBlZ2xDcmVhdGVXaW5kb3dT
dXJmYWNlLAotIHBidWZmZXItYmFzZWQsIHVzZWQgd2hlbiB0aGUgc3VyZmFjZSB3YXMgYWNxdWly
ZWQgdGhyb3VnaCBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZSwKLSBwaXhtYXAtYmFzZWQsIHVzZWQg
d2hlbiB0aGUgc3VyZmFjZSB3YXMgYWNxdWlyZWQgdGhyb3VnaCBlZ2xDcmVhdGVQaXhtYXBTdXJm
YWNlLAotIHN1cmZhY2VsZXNzLCB3aGVuIHRoZSBjb250ZXh0IHdhcyBhcXVpcmVkIHdpdGhvdXQg
YSB2YWxpZCBzdXJmYWNlLCBwb3NzaWJsZSB3aXRoIHRoZSBFR0xfS0hSX3N1cmZhY2VsZXNzX2Nv
bnRleHQgZXh0ZW5zaW9uLgoKVGhlIEdMQ29udGV4dEVHTFgxMSBzdWJjbGFzcyByZXRhaW5zIHRo
ZSBjdXJyZW50IGJlaGF2aW9yLCBjcmVhdGluZyBlaXRoZXIgYSB3aW5kb3csIHBidWZmZXIgb3Ig
cGl4bWFwIHN1cmZhY2UgYW5kIHByb3ZpZGUKYSBjb250ZXh0IGJhc2VkIG9uIHRoYXQuIFRoZSBH
TENvbnRleHRFR0xEZWZhdWx0IHN1YmNsYXNzIHRyaWVzIHRvIGNyZWF0ZSBlaXRoZXIgYSB3aW5k
b3cgb3IgcGJ1ZmZlciBzdXJmYWNlIGFuZCBwcm92aWRlIGEKY29udGV4dCBiYXNlZCBvbiB0aGF0
LiBUaGUgR0xDb250ZXh0RUdMV2F5bGFuZCBzdWJjbGFzcyByZWxpZXMgb24gdGhlIHN1cmZhY2Vs
ZXNzIGNvbnRleHQgZXh0ZW5zaW9uLCBjcmVhdGluZyBhIGNvbnRleHQKd2l0aG91dCBhIHZhbGlk
IHN1cmZhY2UgKGFzIGl0IGlzIG5vdCBuZWVkZWQgd2l0aCB0aGUgZXh0ZW5zaW9uIHByZXNlbnQp
LgoKR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93IG5vdyByZXR1cm5zIGVpdGhlciBH
TENvbnRleHRFR0xYMTEgb3IgR0xDb250ZXh0RUdMV2F5bGFuZCBvYmplY3QgdW5kZXIgdGhlIEdU
SyBwb3J0LApkZXBlbmRpbmcgb24gd2hhdCBkaXNwbGF5IGlzIGJlaW5nIHVzZWQuIE9uIG90aGVy
IHBvcnRzIHRoZSBjdXJyZW50IGJlaGF2aW9yIGlzIHByZXNlcnZlZCwgcmV0dXJuaW5nIEdMQ29u
dGV4dEdMWCBpZgpHTFggc3VwcG9ydCBpcyBlbmFibGVkLCBvciwgaWYgRUdMIHN1cHBvcnQgaXMg
ZW5hYmxlZCwgZWl0aGVyIEdMQ29udGV4dEVHTFgxMSBmb3Igbm9uLUdUSyBwb3J0cyB0aGF0IGVu
YWJsZSBYMTEgc3VwcG9ydApvciBHTENvbnRleHRFR0xEZWZhdWx0IGZvciBvdGhlciBwb3J0cyAo
bGlrZSB0aGUgV2luZG93cy1iYXNlZCBwb3J0cykuCgoqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFk
ZCBidWlsZCB0YXJnZXRzIGZvciB0aGUgbmV3IGZpbGVzLgoqIHBsYXRmb3JtL2dyYXBoaWNzL0dM
Q29udGV4dC5jcHA6CihXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cp
OiBDaG9vc2UgYmV0d2VlbiBHTENvbnRleHRHTFggb3IgV2F5bGFuZC1zcGVjaWZpYyBHTENvbnRl
eHRFR0wgZm9yIHRoZSBHVEsgcG9ydCwKZGVwZW5kaW5nIG9uIHRoZSBkaXNwbGF5IGJlaW5nIHVz
ZWQuIEJlaGF2aW9yIGlzIHJldGFpbmVkIGZvciBvdGhlciBwb3J0cy4KKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
Q29udGV4dCk6IFRha2UgdGhlIHR5cGUgb2YgdGhlIGRlc2lyZWQgc3ViY2xhc3Mgb2YgR0xDb250
ZXh0RUdMIHRocm91Z2ggdGhlIHRlbXBsYXRlIGFyZ3VtZW50LgpBIG5ldyBvYmplY3Qgb2YgdGhh
dCB0eXBlIGlzIGNyZWF0ZWQsIGFuZCByZXR1cm5lZCBpZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0
IGlzIGEgdmFsaWQgR0xDb250ZXh0RUdMLgooV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpHTENvbnRl
eHRFR0wpOiBJbml0aWFsaXplIHRoZSBtZW1iZXJzIHRvIGludmFsaWQgdmFsdWVzLgooV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKTogQ2xlYW4gdXAgdGhlIEVHTCBjb250ZXh0
IGFuZCBzdXJmYWNlIGlmIHRoZXkgd2VyZSBpbml0aWFsaXplZC4KKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIpOiBQdXQgdGhlIGVudW0gdmFsdWUg
aW50byB0aGUgcHJvcGVyIHNjb3BlLgooV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpkZWZhdWx0RnJh
bWVCdWZmZXJTaXplKTogQXNzZXJ0IHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCB3aGVuIHRoZSBt
ZXRob2QgaXMgaW52b2tlZC4gVGhlIEVHTCBkaXNwbGF5CmlzIG5vdyBsb2NhdGVkIGluIGEgbWVt
YmVyIHZhcmlhYmxlLgooV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQp
OiBEaXR0by4KKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMpOiBEaXR0by4gT25s
eSBzd2FwIHRoZSBidWZmZXJzIGlmIHRoZSBzdXJmYWNlIG1lbWJlciB2YXJpYWJsZSBoYXMgYSB2
YWxpZCB2YWx1ZSAod2hpY2ggbWF5Cm5vdCBiZSB0cnVlIGluIHRoZSBjYXNlIG9mIGEgc3VyZmFj
ZWxlc3MgY29udGV4dCkuCihXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKTogRGl0
dG8gb24gdGhlIG9iamVjdCB2YWxpZGl0eSBhbmQgdGhlIEVHTCBkaXNwbGF5IG1lbWJlciB2YXJp
YWJsZS4KKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKTogQSBzaGFyZWQgaW1w
bGVtZW50YXRpb24gb2YgdGhlIHByb3BlciBFR0xDb25maWcgY2hvb3NpbmcuIFRoaXMgbWV0aG9k
IGlzIGNhbGxlZCBmcm9tIHRoZQpjb25zdHJ1Y3RvciBvZiBhbnkgc3ViY2xhc3MgdGhhdCByZXF1
aXJlcyBhIHByb3BlciBFR0xDb25maWcgZm9yIHRoZSBzdXJmYWNlIGNyZWF0aW9uLiBJdCBzaG91
bGRuJ3QgYmUgY2FsbGVkIGlmIHRoYXQgc3ViY2xhc3MKd2lsbCBwcm92aWRlIGEgc3VyZmFjZWxl
c3MgY29udGV4dC4gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiByZXF1aXJlZC4K
KFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Z2xBUEkpOiBBIHNoYXJlZCBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgR0wgQVBJIHRoYXQncyB0byBiZSB1c2VkLCBkZXBlbmRpbmcgb24gdGhlIGJ1aWxkLXRp
bWUgY29uZmlndXJhdGlvbi4KQ2FuIGJlIG92ZXJyaWRlbiBieSBzdWJjbGFzc2VzIGlmIHJlcXVp
cmVkLgooV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcyk6IEEgc2hhcmVk
IGltcGxlbWVudGF0aW9uIHRoYXQgcmV0dXJucyBhbiBhcnJheSBvZiB3aGF0IGF0dHJpYnV0ZXMg
dGhlIEVHTENvbnRleHQKc2hvdWxkIHBvc3Nlcy4gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xh
c3NlcyBpZiByZXF1aXJlZC4KKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlclN1
cmZhY2UpOiBBIGNyb3NzLXBsYXRmb3JtIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBwaXhlbCBidWZm
ZXIgc3VyZmFjZS4KKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6aXNWYWxpZCk6IEEgdmFsaWRpdHkg
Y2hlY2tlciBtZXRob2QgdGhhdCBjaGVja3MgaWYgYm90aCB0aGUgY29udGV4dCBhbmQgc3VyZmFj
ZSBhcmUgb2YgdmFsaWQgdmFsdWUsIHRoZQpsYXR0ZXIgcG9zc2libHkgYmVpbmcgbnVsbCBpZiB0
aGUgY29udGV4dCBpcyBvZiB0aGUgc3VyZmFjZWxlc3MgdHlwZS4KKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmg6IERvbid0IGluY2x1ZGUgdGhlIDxFR0wvZWdsLmg+IGhlYWRl
ciBkaXJlY3RseSBhcyB0aGF0IGxlYWtzIHRoZSBwbGF0Zm9ybSBpbmZvcm1hdGlvbiBpbnRvCnRo
ZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlLiBJbnN0ZWFkLCA8S0hSL2tocnBsYXRmb3JtLmg+
IGlzIGluY2x1ZGVkIGluc3RlYWQsIHdpdGggdGhlIHJlcXVpcmVkIEVHTCB0eXBlcyBtYW51YWxs
eSBkZWZpbmVkCnRvIHRoZSBzYW1lIHR5cGVzIGFzIGluIHRoZSA8RUdML2VnbC5oPiBoZWFkZXIu
CiogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTERlZmF1bHQuY3BwOiBBZGRlZC4g
VGhlIGRlZmF1bHQgR0xDb250ZXh0RUdMIHN1YmNsYXNzIGltcGxlbWVudGF0aW9uLiBSZXRhaW5z
IGN1cnJlbnQgYmVoYXZpb3IuCihXZWJDb3JlOjpzaGFyZWREaXNwbGF5KTogVXNlIHRoZSBFR0xf
REVGQVVMVF9ESVNQTEFZIGFzIHRoZSBvcmlnaW4gb2YgdGhlIHNoYXJlZCBFR0xEaXNwbGF5Lgoo
V2ViQ29yZTo6R0xDb250ZXh0RUdMRGVmYXVsdDo6R0xDb250ZXh0RUdMRGVmYXVsdCk6IFRyeSB0
byBwcm92aWRlIGVpdGhlciBhIHdpbmRvdyBvciBwYnVmZmVyIEVHTFN1cmZhY2UgYW5kIHRoZSBy
ZXN1bHRpbmcgRUdMQ29udGV4dC4KKFdlYkNvcmU6OkdMQ29udGV4dEVHTERlZmF1bHQ6OmNyZWF0
ZVdpbmRvd1N1cmZhY2UpOiBDcmVhdGUgYSB3aW5kb3cgc3VyZmFjZSBpZiBwb3NzaWJsZS4KKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5oOiBBZGRlZC4gU3ViY2xh
c3NlcyBHTENvbnRleHRFR0wgYW5kIG9uIG5vbi1HVEsgcG9ydHMgdXNlcyB0aGUgbmF0aXZlIHdp
bmRvdyB0eXBlIGFzCnByb3ZpZGVkIGJ5IHRoZSA8RUdML2VnbHBsYXRmb3JtLmg+IGhlYWRlci4K
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHA6IEFkZGVkLiBU
aGUgV2F5bGFuZC1zcGVjaWZpYyBHTENvbnRleHRFR0wgc3ViY2xhc3MgaW1wbGVtZW50YXRpb24u
CihXZWJDb3JlOjpzaGFyZWREaXNwbGF5KTogT24gR1RLLCB1c2UgdGhlIHdsX2Rpc3BsYXkgb2Jq
ZWN0IChhcyBwcm92aWRlZCBieSB0aGUgR1RLKyB0b29sa2l0IGZvciB0aGUgZGVmYXVsdCBHZGtE
aXNwbGF5KSBhcyB0aGUgb3JpZ2luCm9mIHRoZSBzaGFyZWQgRUdMRGlzcGxheS4KKFdlYkNvcmU6
OkdMQ29udGV4dEVHTFdheWxhbmQ6OkdMQ29udGV4dEVHTFdheWxhbmQpOiBDaGVjayB0aGF0IHRo
ZSBzdXJmYWNlbGVzcyBjb250ZXh0IGV4dGVuc2lvbiBpcyBhdmFpbGFibGUsIGZhaWxpbmcgaWYg
aXQncyBub3QuCkEgc3VyZmFjZWxlc3MgRUdMQ29udGV4dCBpcyBjcmVhdGVkIG90aGVyd2lzZS4K
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5oOiBBZGRlZC4gU3Vi
Y2xhc3NlcyBHTENvbnRleHRFR0wgYW5kIHVzZXMgYSB3bF9lZ2xfd2luZG93IHBvaW50ZXIgYXMg
dGhlIG5hdGl2ZSB3aW5kb3cgdHlwZS4KKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMWDExLmNwcDogQWRkZWQuIFRoZSBYMTEtc3BlY2lmaWMgR0xDb250ZXh0RUdMIHN1YmNsYXNz
IGltcGxlbWVudGF0aW9uLiBSZXRhaW5zIGN1cnJlbnQgYmVoYXZpb3IuCihXZWJDb3JlOjpzaGFy
ZWREaXNwbGF5KTogVXNlIHRoZSBzaGFyZWQgWDExIGRpc3BsYXkgKGFzIHNldCB1cCBpbiBHTENv
bnRleHQgY2xhc3MpIGFzIHRoZSBvcmlnaW4gb2YgdGhlIHNoYXJlZCBFR0xEaXNwbGF5LgooV2Vi
Q29yZTo6R0xDb250ZXh0RUdMWDExOjpHTENvbnRleHRFR0xYMTEpOiBUcnkgdG8gcHJvdmlkZSBl
aXRoZXIgYSB3aW5kb3csIHBidWZmZXIgb3IgcGl4bWFwIEVHTFN1cmZhY2UgYW5kIHRoZSByZXN1
bHRpbmcgRUdMQ29udGV4dC4KKFdlYkNvcmU6OkdMQ29udGV4dEVHTFgxMTo6Y3JlYXRlV2luZG93
U3VyZmFjZSk6IENyZWF0ZSBhIHdpbmRvdyBzdXJmYWNlIGlmIHBvc3NpYmxlLgooV2ViQ29yZTo6
R0xDb250ZXh0RUdMWDExOjpjcmVhdGVQaXhtYXBTdXJmYWNlKTogQ3JlYXRlIGEgcGl4bWFwIHN1
cmZhY2UgaWYgcG9zc2libGUuCiogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgx
MS5oOiBBZGRlZC4gU3ViY2xhc3NlcyBHTENvbnRleHRFR0wgYW5kIHVzZXMgdGhlIHVpbnQ2NF90
IHR5cGUgYXMgdGhlIG5hdGl2ZSB3aW5kb3cgdHlwZS4KClNvdXJjZS9XZWJLaXQvZ3RrOgoKKiBH
TlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfTElCUyB0byB0aGUgbGlzdCBvZiBsaWJyYXJpZXMg
dG8gbGluayBhZ2FpbnN0IGZvciB0aGUgbGlid2Via2l0Z3RrLnNvIGxpYnJhcnkuCgpTb3VyY2Uv
V2ViS2l0MjoKCiogR05VbWFrZWZpbGUuYW06IEFkZCBXQVlMQU5EX0xJQlMgdG8gdGhlIGxpc3Qg
b2YgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCBmb3IgdGhlIGxpYndlYmtpdDJndGsuc28gbGli
cmFyeQphbmQgdGhlIHBsdWdpbiBwcm9jZXNzLiBBZGQgV0FZTEFORF9DRkxBR1MgdG8gdGhlIGxp
c3Qgb2YgQyBjb21waWxlciBmbGFncyBmb3IgdGhlIGxpYlBsYXRmcm9tR3RrMi5sYSBzb3VyY2Vz
LgoKVG9vbHM6CgoqIEdOVW1ha2VmaWxlLmFtOiBBZGQgV0FZTEFORF9MSUJTIHRvIHRoZSBsaXN0
IG9mIGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgZm9yIHRoZSBEdW1wUmVuZGVyVHJlZSBwcm9n
cmFtLgoqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06IERpdHRvIGZvciB0aGUgVGVzdFdl
YkNvcmUgcHJvZ3JhbS4KLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgOSArCiBTb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgOSArCiBTb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0g
ICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgODIgKysrKysrKwogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCAgICAgfCAgNTAgKysrLQogLi4uL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgfCAyNTggKysrKysrKysr
LS0tLS0tLS0tLS0tCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmggICB8ICA0NSArKystCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFdheWxhbmQuY3BwICB8ICA1NSArKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xYMTEuY3BwICAgICAgfCAgOTggKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIFNvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIFNvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBTb3VyY2Uv
YXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQgICAgICAgICAgICAgICB8ICAgNiArCiBUb29s
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBU
b29scy9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr
CiBUb29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICB8ICAg
MSArCiAxOCBmaWxlcyBjaGFuZ2VkLCA0ODMgaW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCgpkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZkMDY4OGYuLjc3ODgxMTQgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0w
OSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNp
ZXMubTQ6IENoZWNrIGZvciB0aGUgd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtZWdsIGRlcGVu
ZGVuY2llcy4KKwogMjAxMy0xMi0xMCAgVGFtYXMgR2VyZ2VseSAgPHRnZXJnZWx5LnUtc3plZ2Vk
QHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtFXSBSZW1vdmUgY29kZSB0aGF0
IGRpc2FibGVzIEMrKzB4IGNvbXBhdCB3YXJuaW5ncyBmb3IgZ2NjLTQuNiBhbmQgYWJvdmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwppbmRleCBmMTZmZDE0Li42Y2U0MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMy0xMi0wOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTog
QWRkIFdBWUxBTkRfQ0ZMQUdTIHRvIHRoZSBsaXN0IG9mIEMgY29tcGlsZXIgZmxhZ3MgZm9yIHRo
ZSBsaWJQbGF0Zm9ybUd0ay5sYSBzb3VyY2VzLgorCiAyMDEzLTEyLTAyICBUaGlhZ28gZGUgQmFy
cm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIE5p
eCBVcHN0cmVhbTogVXBkYXRpbmcgUGxhdGZvcm0gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpp
bmRleCBiZGZmMjhlLi5hZmY1N2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjAsNyAr
MTIwLDggQEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZM
QUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZMQUdTKSBcCi0JJChMSUJT
T1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlMQU5EX0NGTEFHUykKIAog
RGVyaXZlZFNvdXJjZXMvUGxhdGZvcm0vQ29sb3JEYXRhLmNwcDogJChXZWJDb3JlKS9wbGF0Zm9y
bS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwKIAkkKEFNX1Zf
R0VOKSQoUEVSTCkgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwgJChHRU5TT1VSQ0VTX1BM
QVRGT1JNKSAkKFdlYkNvcmUpL3BsYXRmb3JtL0NvbG9yRGF0YS5ncGVyZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGNjZDllNDYuLmRiZWJkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMy0xMi0w
OSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
QWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEdMQ29udGV4dEVHTCBjbGFzcyBpcyByZWZhY3Rv
cmVkIHNvIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBwbGF0Zm9ybS1zcGVjaWZpYyBzdWJjbGFz
c2VzIG9mIGl0LiBTdWJjbGFzc2VzIG11c3QKKyAgICAgICAgc2V0IHVwIHRoZSBFR0xEaXNwbGF5
IGFuZCBFR0xDb250ZXh0IGluIHRoZWlyIGNvbnN0cnVjdG9ycyBhbmQgZGV0ZXJtaW5lIHRoZSB0
eXBlIG9mIHRoZSBzdXJmYWNlIHRoZXkgdXNlZCBmb3IgdGhlCisgICAgICAgIGNvbnRleHQgY3Jl
YXRpb24uIElmIGFsbCB0aGlzIGlzIGRvbmUgYWNjb3JkaW5nbHksIHRoZSBHTENvbnRleHRFR0wg
aW5zdGFuY2UgaXMgZGVlbWVkIHZhbGlkIGFuZCBjYW4gYmUgdXNlZCBmdXJ0aGVyLgorCisgICAg
ICAgIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIG1ldGhvZHMgdGhhdCByZXR1cm4gdGhlIGRlc2ly
ZWQgRUdMQ29uZmlnLCB0aGUgR0wgQVBJIG9yIHRoZSBjb250ZXh0IGF0dHJpYnV0ZXMsIGlmIG5l
Y2Vzc2FyeS4KKyAgICAgICAgQXBhcnQgZnJvbSB0aG9zZSB0aHJlZSBtZXRob2RzIGFuZCBzdWJj
bGFzcy1zcGVjaWZpYyBzZXR1cHMsIHRoZSBjb2RlIGlzIHNoYXJlZCB0aHJvdWdoIHRoZSBHTENv
bnRleHRFR0wgcGFyZW50IGNsYXNzLgorICAgICAgICBUaGlzIGNvdmVycyBjb21wbGV0ZSBjbGVh
bnVwIHVwb24gdGhlIG9iamVjdCBkZXN0cnVjdGlvbiwgYnVmZmVyIHN3YXBwaW5nIGNhbGxzIGFu
ZCB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBzaXplIHF1ZXJ5aW5nLgorCisgICAgICAgIFRoZSB0
ZW1wbGF0aXplZCBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQgdGFrZXMgdGhlIGRlc2lyZWQg
R0xDb250ZXh0RUdMIHN1YmNsYXNzIHR5cGUgYXMgdGhlIHRlbXBsYXRlIGFyZ3VtZW50IGFuZAor
ICAgICAgICByZXR1cm5zIGEgbmV3IG9iamVjdCBvZiB0aGF0IHR5cGUgaWYgdGhlIGNvbnRleHQg
aXMgdmFsaWQsIGFuZCBhIG51bGxwdHIgb3RoZXJ3aXNlLgorCisgICAgICAgIEZvdXIgY29udGV4
dCB0eXBlcyAoYXBhcnQgZnJvbSB0aGUgZGVmYXVsdCBVbmtub3duIHR5cGUpIGFyZSBzdXBwb3J0
ZWQ6CisgICAgICAgIC0gd2luZG93LWJhc2VkLCB1c2VkIHdoZW4gdGhlIHN1cmZhY2Ugd2FzIGFj
cXVpcmVkIHRocm91Z2ggZWdsQ3JlYXRlV2luZG93U3VyZmFjZSwKKyAgICAgICAgLSBwYnVmZmVy
LWJhc2VkLCB1c2VkIHdoZW4gdGhlIHN1cmZhY2Ugd2FzIGFjcXVpcmVkIHRocm91Z2ggZWdsQ3Jl
YXRlUGJ1ZmZlclN1cmZhY2UsCisgICAgICAgIC0gcGl4bWFwLWJhc2VkLCB1c2VkIHdoZW4gdGhl
IHN1cmZhY2Ugd2FzIGFjcXVpcmVkIHRocm91Z2ggZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZSwKKyAg
ICAgICAgLSBzdXJmYWNlbGVzcywgd2hlbiB0aGUgY29udGV4dCB3YXMgYXF1aXJlZCB3aXRob3V0
IGEgdmFsaWQgc3VyZmFjZSwgcG9zc2libGUgd2l0aCB0aGUgRUdMX0tIUl9zdXJmYWNlbGVzc19j
b250ZXh0IGV4dGVuc2lvbi4KKworICAgICAgICBUaGUgR0xDb250ZXh0RUdMWDExIHN1YmNsYXNz
IHJldGFpbnMgdGhlIGN1cnJlbnQgYmVoYXZpb3IsIGNyZWF0aW5nIGVpdGhlciBhIHdpbmRvdywg
cGJ1ZmZlciBvciBwaXhtYXAgc3VyZmFjZSBhbmQgcHJvdmlkZQorICAgICAgICBhIGNvbnRleHQg
YmFzZWQgb24gdGhhdC4gVGhlIEdMQ29udGV4dEVHTERlZmF1bHQgc3ViY2xhc3MgdHJpZXMgdG8g
Y3JlYXRlIGVpdGhlciBhIHdpbmRvdyBvciBwYnVmZmVyIHN1cmZhY2UgYW5kIHByb3ZpZGUgYQor
ICAgICAgICBjb250ZXh0IGJhc2VkIG9uIHRoYXQuIFRoZSBHTENvbnRleHRFR0xXYXlsYW5kIHN1
YmNsYXNzIHJlbGllcyBvbiB0aGUgc3VyZmFjZWxlc3MgY29udGV4dCBleHRlbnNpb24sIGNyZWF0
aW5nIGEgY29udGV4dAorICAgICAgICB3aXRob3V0IGEgdmFsaWQgc3VyZmFjZSAoYXMgaXQgaXMg
bm90IG5lZWRlZCB3aXRoIHRoZSBleHRlbnNpb24gcHJlc2VudCkuCisKKyAgICAgICAgR0xDb250
ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93IG5vdyByZXR1cm5zIGVpdGhlciBHTENvbnRleHRF
R0xYMTEgb3IgR0xDb250ZXh0RUdMV2F5bGFuZCBvYmplY3QgdW5kZXIgdGhlIEdUSyBwb3J0LAor
ICAgICAgICBkZXBlbmRpbmcgb24gd2hhdCBkaXNwbGF5IGlzIGJlaW5nIHVzZWQuIE9uIG90aGVy
IHBvcnRzIHRoZSBjdXJyZW50IGJlaGF2aW9yIGlzIHByZXNlcnZlZCwgcmV0dXJuaW5nIEdMQ29u
dGV4dEdMWCBpZgorICAgICAgICBHTFggc3VwcG9ydCBpcyBlbmFibGVkLCBvciwgaWYgRUdMIHN1
cHBvcnQgaXMgZW5hYmxlZCwgZWl0aGVyIEdMQ29udGV4dEVHTFgxMSBmb3Igbm9uLUdUSyBwb3J0
cyB0aGF0IGVuYWJsZSBYMTEgc3VwcG9ydCAKKyAgICAgICAgb3IgR0xDb250ZXh0RUdMRGVmYXVs
dCBmb3Igb3RoZXIgcG9ydHMgKGxpa2UgdGhlIFdpbmRvd3MtYmFzZWQgcG9ydHMpLgorCisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkIGJ1aWxkIHRhcmdldHMgZm9yIHRoZSBuZXcg
ZmlsZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6IENob29zZSBi
ZXR3ZWVuIEdMQ29udGV4dEdMWCBvciBXYXlsYW5kLXNwZWNpZmljIEdMQ29udGV4dEVHTCBmb3Ig
dGhlIEdUSyBwb3J0LAorICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGRpc3BsYXkgYmVpbmcgdXNl
ZC4gQmVoYXZpb3IgaXMgcmV0YWluZWQgZm9yIG90aGVyIHBvcnRzLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KTogVGFrZSB0aGUgdHlwZSBvZiB0aGUgZGVzaXJlZCBz
dWJjbGFzcyBvZiBHTENvbnRleHRFR0wgdGhyb3VnaCB0aGUgdGVtcGxhdGUgYXJndW1lbnQuCisg
ICAgICAgIEEgbmV3IG9iamVjdCBvZiB0aGF0IHR5cGUgaXMgY3JlYXRlZCwgYW5kIHJldHVybmVk
IGlmIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QgaXMgYSB2YWxpZCBHTENvbnRleHRFR0wuCisgICAg
ICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6IEluaXRpYWxpemUgdGhl
IG1lbWJlcnMgdG8gaW52YWxpZCB2YWx1ZXMuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6On5HTENvbnRleHRFR0wpOiBDbGVhbiB1cCB0aGUgRUdMIGNvbnRleHQgYW5kIHN1cmZhY2Ug
aWYgdGhleSB3ZXJlIGluaXRpYWxpemVkLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcik6IFB1dCB0aGUgZW51bSB2YWx1ZSBpbnRv
IHRoZSBwcm9wZXIgc2NvcGUuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1
bHRGcmFtZUJ1ZmZlclNpemUpOiBBc3NlcnQgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkIHdoZW4g
dGhlIG1ldGhvZCBpcyBpbnZva2VkLiBUaGUgRUdMIGRpc3BsYXkKKyAgICAgICAgaXMgbm93IGxv
Y2F0ZWQgaW4gYSBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6Om1ha2VDb250ZXh0Q3VycmVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0RUdMOjpzd2FwQnVmZmVycyk6IERpdHRvLiBPbmx5IHN3YXAgdGhlIGJ1ZmZlcnMgaWYgdGhl
IHN1cmZhY2UgbWVtYmVyIHZhcmlhYmxlIGhhcyBhIHZhbGlkIHZhbHVlICh3aGljaCBtYXkKKyAg
ICAgICAgbm90IGJlIHRydWUgaW4gdGhlIGNhc2Ugb2YgYSBzdXJmYWNlbGVzcyBjb250ZXh0KS4K
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOiBEaXR0byBvbiB0
aGUgb2JqZWN0IHZhbGlkaXR5IGFuZCB0aGUgRUdMIGRpc3BsYXkgbWVtYmVyIHZhcmlhYmxlLgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcpOiBBIHNoYXJlZCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJvcGVyIEVHTENvbmZpZyBjaG9vc2luZy4gVGhpcyBtZXRo
b2QgaXMgY2FsbGVkIGZyb20gdGhlCisgICAgICAgIGNvbnN0cnVjdG9yIG9mIGFueSBzdWJjbGFz
cyB0aGF0IHJlcXVpcmVzIGEgcHJvcGVyIEVHTENvbmZpZyBmb3IgdGhlIHN1cmZhY2UgY3JlYXRp
b24uIEl0IHNob3VsZG4ndCBiZSBjYWxsZWQgaWYgdGhhdCBzdWJjbGFzcworICAgICAgICB3aWxs
IHByb3ZpZGUgYSBzdXJmYWNlbGVzcyBjb250ZXh0LiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJj
bGFzc2VzIGlmIHJlcXVpcmVkLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpnbEFQ
SSk6IEEgc2hhcmVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBHTCBBUEkgdGhhdCdzIHRvIGJlIHVz
ZWQsIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLgorICAgICAgICBD
YW4gYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgaWYgcmVxdWlyZWQuCisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKTogQSBzaGFyZWQgaW1wbGVtZW50
YXRpb24gdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIHdoYXQgYXR0cmlidXRlcyB0aGUgRUdMQ29u
dGV4dAorICAgICAgICBzaG91bGQgcG9zc2VzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFz
c2VzIGlmIHJlcXVpcmVkLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQ
YnVmZmVyU3VyZmFjZSk6IEEgY3Jvc3MtcGxhdGZvcm0gbWV0aG9kIGZvciBjcmVhdGluZyBhIHBp
eGVsIGJ1ZmZlciBzdXJmYWNlLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjppc1Zh
bGlkKTogQSB2YWxpZGl0eSBjaGVja2VyIG1ldGhvZCB0aGF0IGNoZWNrcyBpZiBib3RoIHRoZSBj
b250ZXh0IGFuZCBzdXJmYWNlIGFyZSBvZiB2YWxpZCB2YWx1ZSwgdGhlCisgICAgICAgIGxhdHRl
ciBwb3NzaWJseSBiZWluZyBudWxsIGlmIHRoZSBjb250ZXh0IGlzIG9mIHRoZSBzdXJmYWNlbGVz
cyB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaDog
RG9uJ3QgaW5jbHVkZSB0aGUgPEVHTC9lZ2wuaD4gaGVhZGVyIGRpcmVjdGx5IGFzIHRoYXQgbGVh
a3MgdGhlIHBsYXRmb3JtIGluZm9ybWF0aW9uIGludG8KKyAgICAgICAgdGhlIHBsYXRmb3JtLWlu
ZGVwZW5kZW50IGNvZGUuIEluc3RlYWQsIDxLSFIva2hycGxhdGZvcm0uaD4gaXMgaW5jbHVkZWQg
aW5zdGVhZCwgd2l0aCB0aGUgcmVxdWlyZWQgRUdMIHR5cGVzIG1hbnVhbGx5IGRlZmluZWQKKyAg
ICAgICAgdG8gdGhlIHNhbWUgdHlwZXMgYXMgaW4gdGhlIDxFR0wvZWdsLmg+IGhlYWRlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMRGVmYXVsdC5jcHA6IEFk
ZGVkLiBUaGUgZGVmYXVsdCBHTENvbnRleHRFR0wgc3ViY2xhc3MgaW1wbGVtZW50YXRpb24uIFJl
dGFpbnMgY3VycmVudCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZERpc3BsYXkp
OiBVc2UgdGhlIEVHTF9ERUZBVUxUX0RJU1BMQVkgYXMgdGhlIG9yaWdpbiBvZiB0aGUgc2hhcmVk
IEVHTERpc3BsYXkuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xEZWZhdWx0OjpHTENv
bnRleHRFR0xEZWZhdWx0KTogVHJ5IHRvIHByb3ZpZGUgZWl0aGVyIGEgd2luZG93IG9yIHBidWZm
ZXIgRUdMU3VyZmFjZSBhbmQgdGhlIHJlc3VsdGluZyBFR0xDb250ZXh0LgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMRGVmYXVsdDo6Y3JlYXRlV2luZG93U3VyZmFjZSk6IENyZWF0ZSBh
IHdpbmRvdyBzdXJmYWNlIGlmIHBvc3NpYmxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0xEZWZhdWx0Lmg6IEFkZGVkLiBTdWJjbGFzc2VzIEdMQ29udGV4dEVH
TCBhbmQgb24gbm9uLUdUSyBwb3J0cyB1c2VzIHRoZSBuYXRpdmUgd2luZG93IHR5cGUgYXMKKyAg
ICAgICAgcHJvdmlkZWQgYnkgdGhlIDxFR0wvZWdscGxhdGZvcm0uaD4gaGVhZGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcDogQWRkZWQu
IFRoZSBXYXlsYW5kLXNwZWNpZmljIEdMQ29udGV4dEVHTCBzdWJjbGFzcyBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZERpc3BsYXkpOiBPbiBHVEssIHVzZSB0aGUgd2xf
ZGlzcGxheSBvYmplY3QgKGFzIHByb3ZpZGVkIGJ5IHRoZSBHVEsrIHRvb2xraXQgZm9yIHRoZSBk
ZWZhdWx0IEdka0Rpc3BsYXkpIGFzIHRoZSBvcmlnaW4KKyAgICAgICAgb2YgdGhlIHNoYXJlZCBF
R0xEaXNwbGF5LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMV2F5bGFuZDo6R0xDb250
ZXh0RUdMV2F5bGFuZCk6IENoZWNrIHRoYXQgdGhlIHN1cmZhY2VsZXNzIGNvbnRleHQgZXh0ZW5z
aW9uIGlzIGF2YWlsYWJsZSwgZmFpbGluZyBpZiBpdCdzIG5vdC4KKyAgICAgICAgQSBzdXJmYWNl
bGVzcyBFR0xDb250ZXh0IGlzIGNyZWF0ZWQgb3RoZXJ3aXNlLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmg6IEFkZGVkLiBTdWJjbGFzc2VzIEdM
Q29udGV4dEVHTCBhbmQgdXNlcyBhIHdsX2VnbF93aW5kb3cgcG9pbnRlciBhcyB0aGUgbmF0aXZl
IHdpbmRvdyB0eXBlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xYMTEuY3BwOiBBZGRlZC4gVGhlIFgxMS1zcGVjaWZpYyBHTENvbnRleHRFR0wgc3ViY2xhc3Mg
aW1wbGVtZW50YXRpb24uIFJldGFpbnMgY3VycmVudCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNv
cmU6OnNoYXJlZERpc3BsYXkpOiBVc2UgdGhlIHNoYXJlZCBYMTEgZGlzcGxheSAoYXMgc2V0IHVw
IGluIEdMQ29udGV4dCBjbGFzcykgYXMgdGhlIG9yaWdpbiBvZiB0aGUgc2hhcmVkIEVHTERpc3Bs
YXkuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xYMTE6OkdMQ29udGV4dEVHTFgxMSk6
IFRyeSB0byBwcm92aWRlIGVpdGhlciBhIHdpbmRvdywgcGJ1ZmZlciBvciBwaXhtYXAgRUdMU3Vy
ZmFjZSBhbmQgdGhlIHJlc3VsdGluZyBFR0xDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMWDExOjpjcmVhdGVXaW5kb3dTdXJmYWNlKTogQ3JlYXRlIGEgd2luZG93IHN1cmZh
Y2UgaWYgcG9zc2libGUuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0xYMTE6OmNyZWF0
ZVBpeG1hcFN1cmZhY2UpOiBDcmVhdGUgYSBwaXhtYXAgc3VyZmFjZSBpZiBwb3NzaWJsZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmg6IEFkZGVkLiBT
dWJjbGFzc2VzIEdMQ29udGV4dEVHTCBhbmQgdXNlcyB0aGUgdWludDY0X3QgdHlwZSBhcyB0aGUg
bmF0aXZlIHdpbmRvdyB0eXBlLgorCiAyMDEzLTEyLTEwICBHdXJwcmVldCBLYXVyICA8ay5ndXJw
cmVldEBzYW1zdW5nLmNvbT4KIAogICAgICAgICB0b3AgYW5kIGJvdHRvbSBibGFjayBiYWNrZ3Jv
dW5kIGxpbmUgbm90IGdldHRpbmcgZGlzcGxheWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBjOWEyZGZhLi5jYTYyMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTYyOTEsNiArNjI5MSw4IEBAIHBsYXRmb3JtZ3RrX3NvdXJjZXMgKz0gXAogZW5kaWYgIyBF
TkQgVVNFX09QRU5HTAogaWYgVVNFX0VHTAogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5oCiBlbmRpZiAjIEVORCBVU0VfRUdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCAwZWRlN2ZmLi4zOWM2MzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTIxLDYgKzIxLDgg
QEAKIAogI2lmIFVTRShPUEVOR0wpIHx8IChQTEFURk9STShOSVgpICYmIFVTRShPUEVOR0xfRVNf
MikpCiAKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKwogI2lmIFVTRShFR0wpCiAj
aW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCiAjZW5kaWYKQEAgLTI5LDE5ICszMSwxNyBAQAogI2lu
Y2x1ZGUgIkdMQ29udGV4dEdMWC5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3Bl
Y2lmaWMuaD4KLQogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfV0FZTEFORCkgJiYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgotI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotI2lmZGVmIEdES19XSU5ET1dJ
TkdfV0FZTEFORAogI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CiAjZW5kaWYKLSNlbmRpZgor
CisjaWYgIVVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlm
CiAKIHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CkBAIC0xNDMsMzAgKzE0Myw1NiBAQCB2b2lk
IEdMQ29udGV4dDo6Y2xlYW51cEFjdGl2ZUNvbnRleHRzQXRFeGl0KCkKIH0KICNlbmRpZiAvLyBQ
TEFURk9STShYMTEpCiAKK3N0YXRpYyBib29sIGluaXRpYWxpemVPcGVuR0xBUEkoKQoreworICAg
IHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2Vz
cyA9IHRydWU7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworI2lmICFVU0UoT1BFTkdMX0VTXzIp
CisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyNlbmRpZgorICAg
ICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBzdWNjZXNzOworfQog
CiBQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93
KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRl
eHQpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFO
RCkgJiYgVVNFKEVHTCkKLSAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFu
YWdlcl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworI2lm
IFBMQVRGT1JNKE5JWCkKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbHNlCisKKyAgICBpZiAoIWlu
aXRpYWxpemVPcGVuR0xBUEkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAo
R0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSkgewotICAgICAgICBpZiAoT3duUHRyPEdM
Q29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dI
YW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyNpZiBQTEFURk9STShHVEspICYmIGRlZmluZWQoR0RL
X1dJTkRPV0lOR19XQVlMQU5EKSAmJiBVU0UoRUdMKQorICAgIC8vIElmIHdlIGFyZSBydW5uaW5n
IG9uIFdheWxhbmQsIGRvbid0IGV2ZW4gdHJ5IHRvIGNyZWF0ZSBhIEdMWCBjb250ZXh0LgorICAg
IGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZKGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1
bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKSkpIHsKKyAgICAgICAgaWYgKE93
blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVdheWxhbmRD
b250ZXh0KHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJl
bGVhc2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2VuZGlmCiAKLSNpZiAh
UExBVEZPUk0oTklYKQogI2lmIFVTRShHTFgpCisgICAgLy8gSWYgd2UgY2Fubm90IGNyZWF0ZSBh
IEdMWCBjb250ZXh0LCBmYWxsIGJhY2sgdG8gY3JlYXRpbmcgYW4gRUdMIG9uZS4KICAgICBpZiAo
T3duUHRyPEdMQ29udGV4dD4gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4
dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGdseENvbnRl
eHQucmVsZWFzZSgpOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShYMTEpICYmIFVTRShFR0wpCisg
ICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0
ZVgxMUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVy
biBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorCiAj
aWYgVVNFKEVHTCkKICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuIGVnbENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCi0jZW5kaWYKKwogICAg
IHJldHVybiBudWxscHRyOworI2VuZGlmIC8vICFQTEFURk9STShOSVgpCiB9CiAKIEdMQ29udGV4
dDo6R0xDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggMDlhN2VkOC4uZWQwYjM5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAKQEAgLTIyLDEyICsyMiwxNyBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCisjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpbmNsdWRlIDxjYWlyby1nbC5oPgorI2Vu
ZGlmCisKICNpZiBVU0UoT1BFTkdMX0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5j
bHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CkBAIC0zNSwxODggKzQwLDEwOCBAQAogI2luY2x1ZGUgIk9w
ZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
Ci0jaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBFR0xEaXNwbGF5IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0K
LSNpZiBVU0UoT1BFTkdMX0VTXzIpCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xf
T1BFTkdMX0VTX0FQSTsKLSNlbHNlCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xf
T1BFTkdMX0FQSTsKLSNlbmRpZgotCi1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5
KCkKK0VHTGVudW0gR0xDb250ZXh0RUdMOjpnbEFQSSgpCiB7Ci0gICAgc3RhdGljIGJvb2wgaW5p
dGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRp
YWxpemVkID0gdHJ1ZTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgICAgIGdTaGFyZWRFR0xEaXNw
bGF5ID0gZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7CisjaWYg
VVNFKE9QRU5HTF9FU18yKQorICAgIHJldHVybiBFR0xfT1BFTkdMX0VTX0FQSTsKICNlbHNlCi0g
ICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQ
TEFZKTsKKyAgICByZXR1cm4gRUdMX09QRU5HTF9BUEk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGdT
aGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShnU2hh
cmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQVBJKSkpCi0gICAgICAgICAg
ICBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgIH0KLSAgICByZXR1cm4g
Z1NoYXJlZEVHTERpc3BsYXk7CiB9CiAKLXN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRy
aWJ1dGVzW10gPSB7Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OLCAyLAotI2VuZGlmCi0gICAgRUdMX05PTkUKLX07Ci0KLXN0YXRpYyBib29sIGdl
dEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlw
ZSBzdXJmYWNlVHlwZSkKK0VHTGludCogR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygp
CiB7Ci0gICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyAgICBzdGF0aWMgRUdMaW50IGNv
bnRleHRBdHRyaWJ1dGVzW10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQotICAgICAgICBFR0xf
UkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0jZWxzZQotICAgICAgICBFR0xf
UkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKKyAgICAgICAgRUdMX0NPTlRFWFRfQ0xJ
RU5UX1ZFUlNJT04sIDIsCiAjZW5kaWYKLSAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAgICAg
ICBFR0xfR1JFRU5fU0laRSwgOCwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKLSAgICAgICAg
RUdMX1NURU5DSUxfU0laRSwgOCwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCi0gICAgICAg
IEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9OT05FLAogICAgICAgICBFR0xfTk9ORQogICAgIH07Ci0K
LSAgICBzd2l0Y2ggKHN1cmZhY2VUeXBlKSB7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZm
ZXJTdXJmYWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6Ci0g
ICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgotICAgICAgICBhdHRyaWJ1
dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VDb25m
aWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJD
b25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gY29u
dGV4dEF0dHJpYnV0ZXM7CiB9CiAKLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4
dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0Nv
bnRleHQpLT5tX2NvbnRleHQgOiAwOwogCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVk
RUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRF
R0xDb25maWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBj
b25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChj
b250ZXh0ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKK3N0YXRp
YyBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNo
YXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6
ZWQgPSB0cnVlOwogCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3Vy
ZmFjZShkaXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7Ci0gICAgaWYgKHN1cmZhY2UgPT0gRUdM
X05PX1NVUkZBQ0UpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFyZWRFR0xE
aXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYg
KHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNo
YXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKEdMQ29udGV4dEVHTDo6Z2xBUEko
KSkpKQorICAgICAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAg
IH0KIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZh
Y2UsIFdpbmRvd1N1cmZhY2UpKTsKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKIH0KIAot
UGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRl
eHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4
dD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0aXZlV2luZG93
VHlwZSBuYXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdM
RGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09
IEVHTF9OT19ESVNQTEFZKQorICAgIGlmICghbmF0aXZlV2luZG93KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWco
JmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQorICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAg
aWYgKEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZlZ2xDb25maWcsIEdMQ29u
dGV4dEVHTDo6V2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBFR0xDb250
ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVnbENvbmZpZywgc2hhcmlu
Z0NvbnRleHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKSk7CiAgICAgaWYgKGNv
bnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
c3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBFR0xfV0lEVEgsIDEsIEVH
TF9IRUlHSFQsIDEsIEVHTF9OT05FIH07Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3Jl
YXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7Cisg
ICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBl
Z2xDb25maWcsIG5hdGl2ZVdpbmRvdywgMCk7CiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NV
UkZBQ0UpIHsKICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
R0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7CisgICAgcmV0
dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIEdMQ29u
dGV4dEVHTDo6V2luZG93QmFzZWQpOwogfQogCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQp
CitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEdMTmF0
aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7
Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERp
c3BsYXkoKTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7CiAgICAg
aWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQ
aXhtYXBTdXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgRUdMQ29udGV4dCBl
Z2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0
RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworICAgIGlmIChPd25QdHI8R0xD
b250ZXh0PiBjb250ZXh0ID0gY3JlYXRlV2luZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5k
b3csIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgp
OworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRl
eHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gY29udGV4dC5y
ZWxlYXNlKCk7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRp
c3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7Ci0gICAg
aWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBudWxscHRyOworfQogCi0gICAgRUdMaW50IGRlcHRoOwotICAgIGlmICghZWds
R2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250
ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEFTU0VSVChkaXNwbGF5ICE9IEVHTF9OT19ESVNQ
TEFZKTsKIAotICAgIFBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHNoYXJlZFgxMURpc3Bs
YXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coc2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwgZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKQorICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNo
b29zZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBQYnVmZmVyQmFzZWQpICE9IEVHTF9UUlVF
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVn
bENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwaXhtYXAsIDApOwotCi0gICAg
aWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0g
ZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250
ZXh0QXR0cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4
dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQaXhtYXBTdXJmYWNlKSk7Ci0jZWxzZQotICAgIHJldHVy
biBudWxscHRyOwotI2VuZGlmCi19Ci0KLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRl
eHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpCi17Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCisgICAg
c3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBFR0xfV0lEVEgsIDEsIEVH
TF9IRUlHSFQsIDEsIEVHTF9OT05FIH07CisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3Jl
YXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgZWdsQ29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7
CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJv
eUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBzdWNj
ZXNzID0gdHJ1ZTsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0jaWYgIVVTRShPUEVOR0xfRVNf
MikKLSAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOwotI2VuZGlmCi0g
ICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFzdWNjZXNzKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQg
PSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250
ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBPd25QdHI8R0xDb250ZXh0RUdMPiBjb250ZXh0ID0g
d2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51
bGxwdHI7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFw
Q29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Ci0KLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Ci0gICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBHTENvbnRleHRFR0w6
OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyQmFzZWQpOwogfQogCi1H
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0
IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgQ29udGV4dFR5cGUgY29udGV4dFR5cGUpCisg
ICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9zdXJmYWNlKHN1cmZhY2UpCi0gICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fdHlwZShjb250
ZXh0VHlwZSkKICNpZiBVU0UoQ0FJUk8pCiAgICAgLCBtX2NhaXJvRGV2aWNlKDApCiAjZW5kaWYK
QEAgLTIzMCwyMCArMTU1LDIxIEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAgICAg
ICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogI2VuZGlmCiAKLSAgICBF
R0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKG1fY29udGV4
dCkgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAg
ICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBt
X2NvbnRleHQpOwotICAgIH0KKyAgICBpZiAobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKSB7
CisgICAgICAgIGlmIChtX2NvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpIHsKKyAgICAgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgICAgIGVnbE1h
a2VDdXJyZW50KG1fZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fQ09OVEVYVCk7CisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1f
Y29udGV4dCk7CisgICAgICAgIH0KIAotICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgIGVnbERl
c3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgIGlmIChtX3N1cmZhY2Ug
IT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtX2Rpc3Bs
YXksIG1fc3VyZmFjZSk7CisgICAgfQogfQogCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVy
VG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewotICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3Vy
ZmFjZTsKKyAgICByZXR1cm4gbV90eXBlID09IFdpbmRvd0Jhc2VkOwogfQogCiBJbnRTaXplIEdM
Q29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCkBAIC0yNTIsOCArMTc4LDggQEAg
SW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgICAgICBy
ZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYgKCFl
Z2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURUSCwg
JndpZHRoKQotICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwg
bV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFj
ZShtX2Rpc3BsYXksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCisgICAgICAgIHx8ICFl
Z2xRdWVyeVN1cmZhY2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQp
KQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgs
IGhlaWdodCk7CkBAIC0yNjEsMTkgKzE4NywxNyBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVm
YXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAKIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1
cnJlbnQoKQogewotICAgIEFTU0VSVChtX2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKLQogICAgIEdM
Q29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGVnbEdldEN1cnJlbnRDb250
ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBl
Z2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBt
X2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3VyZmFj
ZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1
ZmZlcnMoKQogewotICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNo
YXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBpZiAobV9zdXJmYWNlKQorICAgICAg
ICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xDb250
ZXh0RUdMOjp3YWl0TmF0aXZlKCkKQEAgLTI4OCw3ICsyMTIsNyBAQCBjYWlyb19kZXZpY2VfdCog
R0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2aWNl
OwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJvRGV2aWNl
ID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgpLCBtX2NvbnRleHQp
OworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3BsYXks
IG1fY29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpAQCAtMzAy
LDYgKzIyNiw0NCBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6cGxh
dGZvcm1Db250ZXh0KCkKIH0KICNlbmRpZgogCitFR0xCb29sZWFuIEdMQ29udGV4dEVHTDo6Y2hv
b3NlQ29uZmlnKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4
dEVHTDo6Q29udGV4dFR5cGUgY29udGV4dFR5cGUpCit7CisgICAgQVNTRVJUKGRpc3BsYXkgIT0g
RUdMX05PX0RJU1BMQVkpOworCisgICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyNpZiBV
U0UoT1BFTkdMX0VTXzIpCisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xf
RVMyX0JJVCwKKyNlbHNlCisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xf
QklULAorI2VuZGlmCisgICAgICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVO
X1NJWkUsIDgsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVEVOQ0lM
X1NJWkUsIDgsCisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfU1VSRkFD
RV9UWVBFLCBFR0xfTk9ORSwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAgc3dpdGNo
IChjb250ZXh0VHlwZSkgeworICAgIGNhc2UgUGJ1ZmZlckJhc2VkOgorICAgICAgICBhdHRyaWJ1
dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
aXhtYXBCYXNlZDoKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUElYTUFQX0JJVDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXaW5kb3dCYXNlZDoKKyAgICAgICAgYXR0cmlidXRl
TGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdXJm
YWNlbGVzczoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CisgICAgfQorCisgICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAg
ICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywg
MSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoRUdMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCmluZGV4
IGM4ODdlMGIuLjUxYzA3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTIzLDE3ICsyMyw0NCBAQAogI2lmIFVTRShF
R0wpCiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlIDxLSFIva2hycGxhdGZvcm0u
aD4KIAotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KK3R5cGVkZWYgdW5zaWduZWQgRUdMQm9vbGVhbjsK
K3R5cGVkZWYgdm9pZCogRUdMQ29uZmlnOwordHlwZWRlZiB2b2lkKiBFR0xDb250ZXh0OwordHlw
ZWRlZiB2b2lkKiBFR0xEaXNwbGF5OwordHlwZWRlZiB2b2lkKiBFR0xTdXJmYWNlOwordHlwZWRl
ZiB1bnNpZ25lZCBFR0xlbnVtOwordHlwZWRlZiBraHJvbm9zX2ludDMyX3QgRUdMaW50OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdMQ29udGV4dEVHTCA6IHB1YmxpYyBHTENvbnRl
eHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEVHTCk7CiBwdWJsaWM6Ci0g
ICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZmZXJTdXJmYWNlLCBXaW5kb3dTdXJmYWNlLCBQ
aXhtYXBTdXJmYWNlIH07Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVh
dGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQg
PSAwKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0Nv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7Cisg
ICAgZW51bSBDb250ZXh0VHlwZSB7CisgICAgICAgIFdpbmRvd0Jhc2VkLAorICAgICAgICBQYnVm
ZmVyQmFzZWQsCisgICAgICAgIFBpeG1hcEJhc2VkLAorICAgICAgICBTdXJmYWNlbGVzcywKKyAg
ICB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGUoRUdMRGlz
cGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgQ29u
dGV4dFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250
ZXh0RUdMKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIHR5cGUpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUGFzc093blB0cjxHTENvbnRleHQ+IGNyZWF0ZUNvbnRleHQoR0xOYXRpdmVXaW5kb3dU
eXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNpZiBQTEFURk9STShXQVlMQU5EKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlV2F5bGFuZENvbnRleHQoR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShYMTEpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVYMTFDb250ZXh0KEdMTmF0aXZlV2lu
ZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKworICAgIHN0YXRp
YyBFR0xCb29sZWFuIGNob29zZUNvbmZpZyhFR0xEaXNwbGF5LCBFR0xDb25maWcqLCBDb250ZXh0
VHlwZSk7CisgICAgc3RhdGljIEVHTGVudW0gZ2xBUEkoKTsKKyAgICBzdGF0aWMgRUdMaW50KiBj
b250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7CiAgICAg
dmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtNTAsMTcgKzc3LDE3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwotCiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29u
dGV4dChHTENvbnRleHRFR0wqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlz
cGxheSh2b2lkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBi
dWZmZXJDb250ZXh0KEVHTERpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0g
ICAgR0xDb250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsK
KyAgICBHTENvbnRleHRFR0woRUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgQ29u
dGV4dFR5cGUpOwogCisgICAgRUdMRGlzcGxheSBtX2Rpc3BsYXk7CiAgICAgRUdMQ29udGV4dCBt
X2NvbnRleHQ7CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2U7Ci0gICAgRUdMU3VyZmFjZVR5cGUg
bV90eXBlOworICAgIENvbnRleHRUeXBlIG1fdHlwZTsKKwogI2lmIFVTRShDQUlSTykKICAgICBj
YWlyb19kZXZpY2VfdCogbV9jYWlyb0RldmljZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NDEwNzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw1NSBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFO
RCkKKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorCisj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rr
d2F5bGFuZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVHTERp
c3BsYXkgc2hhcmVkV2F5bGFuZERpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNo
YXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHNoYXJl
ZEVHTERpc3BsYXk7CisKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyNpZiBQTEFURk9STShH
VEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQorICAgIEdka0Rpc3BsYXkqIGRp
c3BsYXkgPSBnZGtfZGlzcGxheV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3Bs
YXlfbWFuYWdlcl9nZXQoKSk7CisgICAgQVNTRVJUKEdES19JU19XQVlMQU5EX0RJU1BMQVkoZGlz
cGxheSkpOworICAgIHNoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KGdka193YXlsYW5k
X2Rpc3BsYXlfZ2V0X3dsX2Rpc3BsYXkoZGlzcGxheSkpOworI2VuZGlmCisKKyAgICBpZiAoc2hh
cmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoc2hhcmVk
RUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ2xBUEkoKSkpKQorICAgICAgICBzaGFy
ZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgcmV0dXJuIHNoYXJlZEVHTERpc3Bs
YXk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0PiBHTENvbnRleHRFR0w6OmNyZWF0ZVdheWxh
bmRDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMRGlzcGxheSBk
aXNwbGF5ID0gc2hhcmVkV2F5bGFuZERpc3BsYXkoKTsKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xf
Tk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXN0cnN0cihl
Z2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyksICJFR0xfS0hSX3N1cmZhY2Vs
ZXNzX2NvbnRleHQiKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0
IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRl
eHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7CisgICAgRUdMQ29udGV4dCBj
b250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCAwLCBzaGFyaW5nQ29udGV4dCwgY29u
dGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRl
KGRpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVzcyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFdB
WUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMWDExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0xYMTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjY4ZmFlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcApAQCAtMCwwICsxLDk4IEBACisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdMKSAmJiBQ
TEFURk9STShYMTEpCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlIDxFR0wvZWds
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkWDEx
RUdMRGlzcGxheSgpCit7CisgICAgc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSA9
IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Cisg
ICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyAg
ICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRY
MTFEaXNwbGF5KCkpOworICAgICAgICBpZiAoc2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElT
UExBWSAmJiAoIWVnbEluaXRpYWxpemUoc2hhcmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJp
bmRBUEkoR0xDb250ZXh0RUdMOjpnbEFQSSgpKSkpCisgICAgICAgICAgICBzaGFyZWRFR0xEaXNw
bGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorCisgICAgcmV0dXJuIHNoYXJlZEVHTERpc3Bs
YXk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlV2luZG93Q29udGV4
dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgaWYgKCFuYXRpdmVXaW5kb3cpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGVnbENvbmZpZzsKKyAgICBpZiAo
R0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoZGlzcGxheSwgJmVnbENvbmZpZywgR0xDb250ZXh0
RUdMOjpXaW5kb3dCYXNlZCkgIT0gRUdMX1RSVUUpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xD
b25maWcsIHNoYXJpbmdDb250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkp
OworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2Uo
ZGlzcGxheSwgZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09
IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNv
bnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gR0xD
b250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdM
OjpXaW5kb3dCYXNlZCk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRl
UGl4bWFwQ29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpCit7CisgICAgRUdMQ29uZmlnIGVnbENvbmZpZzsKKyAgICBpZiAoR0xDb250ZXh0RUdMOjpj
aG9vc2VDb25maWcoZGlzcGxheSwgJmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpQaXhtYXBCYXNl
ZCkgIT0gRUdMX1RSVUUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4
dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdD
b250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250
ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVH
TGludCBkZXB0aDsKKyAgICBpZiAoZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGVnbENvbmZp
ZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkgIT0gRUdMX1RSVUUpIHsKKyAgICAgICAgZWdsRGVz
dHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIFBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKEdMQ29udGV4dDo6c2hh
cmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgZGVwdGgp
OworICAgIGlmICghcGl4bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXks
IGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBFR0xTdXJm
YWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGVnbENvbmZpZywg
cGl4bWFwLCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAg
ICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXks
IGNvbnRleHQsIHN1cmZhY2UsIEdMQ29udGV4dEVHTDo6UGl4bWFwQmFzZWQpOworfQorCitQYXNz
T3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVYMTFDb250ZXh0KEdMTmF0aXZl
V2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCit7Cisg
ICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkWDExRUdMRGlzcGxheSgpOworICAgIGlmIChk
aXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19j
YXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKKyAgICBp
ZiAoT3duUHRyPEdMQ29udGV4dD4gY29udGV4dCA9IGNyZWF0ZVdpbmRvd0NvbnRleHQoZGlzcGxh
eSwgbmF0aXZlV2luZG93LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250
ZXh0LnJlbGVhc2UoKTsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gY29udGV4dCA9IGNyZWF0
ZVBidWZmZXJDb250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0
ID0gY3JlYXRlUGl4bWFwQ29udGV4dChkaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAg
ICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKworICAgIHJldHVybiBudWxscHRyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9S
TShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggY2JkZmUyOC4uNTIxZmQ0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBX
YXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOiBBZGQgV0FZTEFORF9MSUJTIHRvIHRoZSBsaXN0IG9mIGxpYnJhcmll
cyB0byBsaW5rIGFnYWluc3QgZm9yIHRoZSBsaWJ3ZWJraXRndGsuc28gbGlicmFyeS4KKwogMjAx
My0xMi0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QVg6IFtBVEtdIENvbnZlcnQgdGhlIGdldF90ZXh0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRvIGxh
eW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0g
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA0ZmY0NjU2Li42Mzk0OTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTI2LDYgKzEyNiw3IEBAIGxpYndlYmtp
dGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9W
RVJTSU9OQF9sYV9MSUJBCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChV
TklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChY
Q09NUE9TSVRFX0xJQlMpIFwKIAkkKFhEQU1BR0VfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY1NGMy
OTguLmNlNGEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMi0wOSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdl
YkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdBWUxBTkRfTElCUyB0byB0
aGUgbGlzdCBvZiBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0IGZvciB0aGUgbGlid2Via2l0Mmd0
ay5zbyBsaWJyYXJ5CisgICAgICAgIGFuZCB0aGUgcGx1Z2luIHByb2Nlc3MuIEFkZCBXQVlMQU5E
X0NGTEFHUyB0byB0aGUgbGlzdCBvZiBDIGNvbXBpbGVyIGZsYWdzIGZvciB0aGUgbGliUGxhdGZy
b21HdGsyLmxhIHNvdXJjZXMuCisKIDIwMTMtMTItMTAgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjU1NTY+IFdlYktpdCBkb2Vz
bid0IGRlYWwgd2l0aCBsb25nZXIgYnVuZGxlIHZlcnNpb25zIGNvcnJlY3RseQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQppbmRleCAxODE3N2MzLi40MDEzMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAt
Mjg1LDYgKzI4NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lP
TkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJJChQTkdfTElCUykgXAog
CSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykg
XAogCSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElC
UykgXApAQCAtNjAyLDcgKzYwMyw4IEBAIGxpYlBsYXRmb3JtR3RrMl9sYV9DUFBGTEFHUyA9IFwK
IAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUSzJfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRf
Q0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChX
QVlMQU5EX0NGTEFHUykKIAogIyBJbmplY3RlZCBCdW5kbGUKIGluamVjdGVkYnVuZGxlZGlyID0g
JChsaWJkaXIpL3dlYmtpdDJndGstMy4wL2luamVjdGVkLWJ1bmRsZQpAQCAtNzUzLDYgKzc1NSw3
IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERBREQgPSBcCiAJJChTSE1fTElCUykg
XAogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElC
UykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNCBiL1NvdXJj
ZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNAppbmRleCBlZmMyZGIzLi4xOTI5ZGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKKysrIGIvU291
cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CkBAIC0yMTYsNiArMjE2LDEyIEBAIGlm
IHRlc3QgIiRlbmFibGVfd2F5bGFuZF90YXJnZXQiICE9ICJubyI7IHRoZW4KICAgICBdKQogZmkK
IAoraWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3RhcmdldCIgPSAieWVzIjsgdGhlbgorICAgIFBL
R19DSEVDS19NT0RVTEVTKFtXQVlMQU5EXSwgW3dheWxhbmQtY2xpZW50IHdheWxhbmQtZWdsXSkK
KyAgICBBQ19TVUJTVChXQVlMQU5EX0NGTEFHUykKKyAgICBBQ19TVUJTVChXQVlMQU5EX0xJQlMp
CitmaQorCiBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtoYXZlX2dseD0ieWVzIl0sIFto
YXZlX2dseD0ibm8iXSkKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgR0xYIHN1
cHBvcnRdKQogaWYgdGVzdCAiJGVuYWJsZV9nbHgiICE9ICJubyI7IHRoZW4KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NGYxNWEwLi4yNjRhYzFm
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTMtMTItMDkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJHTCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODk0NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06IEFkZCBXQVlMQU5EX0xJQlMgdG8gdGhlIGxpc3Qgb2YgbGlicmFyaWVzIHRvIGxpbmsg
YWdhaW5zdCBmb3IgdGhlIER1bXBSZW5kZXJUcmVlIHByb2dyYW0uCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9HTlVtYWtlZmlsZS5hbTogRGl0dG8gZm9yIHRoZSBUZXN0V2ViQ29yZSBwcm9ncmFt
LgorCiAyMDEzLTEyLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgR2V0IHJpZCBvZiBmb3J3YXJkIGV4aXQgb24gRG91YmxlQXNJbnQzMgpkaWZmIC0tZ2l0IGEv
VG9vbHMvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmM5YTAw
Li4yMmRmMmZmIDEwMDY0NAotLS0gYS9Ub29scy9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9H
TlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIFByb2dyYW1zX0R1bXBSZW5kZXJUcmVl
X0xEQUREID0gXAogCSQoR0xJQl9MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKEZSRUVU
WVBFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0lOTU1fTElCUykgXAogCSQoWFJF
TkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5k
ZXggMDM0MjhhYS4uM2QyNDQzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVt
YWtlZmlsZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0x
NTksNiArMTU5LDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViQ29yZV9MREFERCA9
IFwKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykg
XAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykg
XAogCSQoWFRfTElCUykgXAotLSAKMS44LjEuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219170</attachid>
            <date>2013-12-13 08:02:10 -0800</date>
            <delta_ts>2013-12-13 08:23:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20131213170208.patch</filename>
            <type>text/plain</type>
            <size>36209</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMmU1OWU3NTRmYmRi
NDgyODQ5OWFlZjYyYTNhZTU5YWU5YWQzZDI5Li5iYTE4M2QyYWNmODE3MGI0OTRjNzJlNDhiOWE3
OWJiNDcwODYwMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0xMyAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9y
dCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgV2F5bGFuZCBkZXBlbmRlbmN5J3MgY29tcGls
ZXIgZmxhZ3MgdG8gdGhlIGxpc3Qgb2YgY29tcGlsZXIgZmxhZ3MgZm9yIGxpYlBsYXRmb3JtR3Rr
LgorCiAyMDEzLTEyLTExICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPiBh
bmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
QWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQxMmNkNmY0
ZDYwMjg2Y2M1MWEwMDVlYjMwN2MyY2E4MzY0YmVmODAuLmY3ZTJiYTFhOGYyNGE0N2RhOGJmZTNk
NTVlMjAzNzAwZTVkNWU5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMy0xMi0x
MyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3Vw
cG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgYnVpbGQgdGFyZ2V0cy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KTogUmV0dXJuIG51bGxwdHIg
Zm9yIE5JWC4gRm9yIEdUSywgdHJ5IHRvIGNyZWF0ZSBhIFdheWxhbmQtYmFja2VkIEVHTCBjb250
ZXh0CisgICAgICAgIGlmIHJ1bm5pbmcgdW5kZXIgdGhlIFdheWxhbmQgZGlzcGxheSwgb3RoZXJ3
aXNlIHRyeSB0byBjcmVhdGUgZmlyc3QgYSBHTFggY29udGV4dCBhbmQgdGhlbiB0aGUgWDExLWJh
Y2tlZCBFR0wgY29udGV4dC4KKyAgICAgICAgSWYgRUdMIHN1cHBvcnQgaXMgc3RpbGwgZW5hYmxl
ZCwgdHJ5IGNyZWF0aW5nIGFuIEVHTCBjb250ZXh0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZGVmYXVs
dCBFR0wgZGlzcGxheS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Z2xBUEkpOiBSZXR1cm4g
ZWl0aGVyIEVHTF9PUEVOR0xfRVNfQVBJIG9yIEVHTF9PUEVOR0xfQVBJLCBkZXBlbmRpbmcgb24g
dGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMpOiBSZXR1cm4gdGhlIGNvbnRleHQgYXR0cmlidXRlcyB3
aGljaCB3aWxsIGluY2x1ZGUgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04gd2l0aAorICAgICAg
ICB0aGUgdmFsdWUgb2YgMiBpZiBPcGVuR0xFUyAyLjAgc3VwcG9ydCBpcyBlbmFibGVkLgorICAg
ICAgICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6IFRyeSB0byBpbml0aWFsaXplIHRoZSBzaGFy
ZWQgRUdMIGRpc3BsYXkgdGhhdCBkZXBlbmRzIG9uIHRoZSBFR0xfREVGQVVMVF9ESVNQTEFZLgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93Q29udGV4dCk6IFRyeSB0byBjcmVhdGUgYW4g
RUdMIGNvbnRleHQgdGhhdCdzIGJhc2VkIG9uIGEgd2luZG93IHN1cmZhY2UgYW5kIHRoZSBkZWZh
dWx0IHNoYXJlZCBFR0wgZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6
Y3JlYXRlQ29udGV4dCk6IEFjcXVpcmUgdGhlIHNoYXJlZCBkaXNwbGF5LCBpbml0aWFsaXplIHRo
ZSBPcGVuR0wgQVBJIGFuZCB0aGVuIHRyeSB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAgICAgd2lu
ZG93LSBvciBwYnVmZmVyLWJhc2VkIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmluaXRpYWxpemVPcGVuR0xBUEkpOiBJbml0aWFsaXplIHRoZSBPcGVuR0wgc2hpbXMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQYnVm
ZmVyQ29udGV4dCk6IENvbW1vbiBwYnVmZmVyIGNvbnRleHQgY29uc3RydWN0aW9uIGltcGxlbWVu
dGF0aW9uIHRoYXQgY3JlYXRlcyBhbiBFR0wgY29udGV4dCBhbmQKKyAgICAgICAgYSBkdW1teSAx
eDFweCBwYnVmZmVyIHN1cmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdM
Q29udGV4dEVHTCk6IFRoZSBjb25zdHJ1Y3RvcnMgbm93IHRha2VzIHRoZSBjb250ZXh0IHR5cGUg
YXMgdGhlIGZvdXJ0aCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
On5HTENvbnRleHRFR0wpOiBQcm9wZXJseSBjbGVhbiB1cCB0aGUgRUdMIGNvbnRleHQgYW5kIHN1
cmZhY2UsIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fu
UmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KTogUmVtb3ZlIHRoZSBhc3NlcnRpb24gdGhhdCBoYXMg
YmVjb21lIGludmFsaWQgd2l0aCB0aGlzIHJlZmFjdG9yaW5nLgorICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6IERvbid0IGFzc2VydCB0aGF0IHRoZSBzdXJmYWNl
IGlzIG5vbi1udWxsIGFzIHRoZSBXYXlsYW5kLWJhc2VkIEdMQ29udGV4dEVHTCBkb2Vzbid0IHBv
c3Nlc3MKKyAgICAgICAgYSBwcm9wZXIgRUdMU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjaG9vc2VDb25maWcpOiBBIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb25maWcgY2hv
b3NpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOiBU
aGUgY2hhbmdlcyBpbiB0aGUgR0xDb250ZXh0RUdMIGNsYXNzIGRlY2xhcmF0aW9uIHJlZmxlY3Qg
dGhvc2UgbWFkZSBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNyZWF0ZSk6IFRoZSBuZXcgaGVscGVyIG1ldGhvZCBmb3IgY3JlYXRpbmcgR0xD
b250ZXh0RUdMIGluc3RhbmNlcyBvZiBzcGVjaWZpYyB0eXBlcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6c2hhcmVkV2F5bGFuZERpc3BsYXkpOiBFc3RhYmxpc2ggYSBzaGFyZWQgRUdMRGlz
cGxheSB0aGF0J3MgYmFzZWQgb24gdGhlIFdheWxhbmQgZGlzcGxheSB0aGF0IGlzIHByb3ZpZGVk
IGJ5IHRoZSBHVEsrIHRvb2xraXQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNy
ZWF0ZVdheWxhbmRDb250ZXh0KTogVHJ5IHRvIGNyZWF0ZSBhbiBFR0xDb250ZXh0LCB3aXRoIGRl
cGVuZGluZyBvbiB0aGUgRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IGV4dGVuc2lvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRYMTFFR0xEaXNwbGF5KTogRXN0YWJsaXNoIGEgc2hh
cmVkIEVHTERpc3BsYXkgdGhhdCdzIGJhc2VkIG9uIHRoZSBzaGFyZWQgWDExIGRpc3BsYXkuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3dDb250ZXh0KTogVHJ5IHRvIGNyZWF0ZSBhIGNv
bnRleHQgYmFzZWQgb24gdGhlIHNoYXJlZCBYMTEgZGlzcGxheSBhbmQgYSB3aW5kb3cgc3VyZmFj
ZSBiYXNlZCBvbiB0aGF0IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQaXhtYXBD
b250ZXh0KTogVHJ5IHRvIGNyZWF0ZSBhIGNvbnRleHQgYmFzZWQgb24gdGhlIHNoYXJlZCBYMTEg
ZGlzcGxheSBhbmQgYW4gWCBwaXhtYXAgc3VyZmFjZSBiYXNlZCBvbiB0aGF0IGNvbnRleHQuCisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQpOiBUcnkgdG8g
Y3JlYXRlIGEgR0xDb250ZXh0LCBlaXRoZXIgb2Ygd2luZG93LCBwYnVmZmVyIG9yIHBpeG1hcCB0
eXBlLgorCiAyMDEzLTEyLTEzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDU1NGaWx0ZXJJbWFnZVZhbHVlIGNvbnN0cnVjdG9yIHNob3VsZCByZXF1aXJlIGJv
dGggaW1hZ2UgYW5kIGZpbHRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmNjEyYjdjYjk2MmQzMDNi
YThmMzI0OWE0MzQ4OWQ2NDUwZTgwNmRjLi5iZWJjZjExMmY0ZTBhOTc2NTcxYTk4YmVlOWJmNTgy
NjRlYTFmMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMTMg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBv
cnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdheWxhbmQgZGVwZW5kZW5jeSdzIGxpbmtl
ciBmbGFncyB0byB0aGUgbGlzdCBvZiBsaW5rZXIgZmxhZ3MgZm9yIGxpYndlYmtpdGd0ay4KKwog
MjAxMy0xMi0xMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBE
b3duIGludG8gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NTA2NmIzYTFhODhkOTk4NGFl
MDNiMmVkYmM2ZDFmOTBiMDViODY1Li5mNzYxNjRiNzZmOGJjYjJjOWYzODNlOTcyMTAwM2EwYzkw
YjljOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMTMgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIg
V2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbTogQWRkIFdheWxhbmQgZGVwZW5kZW5jeSdzIGNvbXBpbGVyIGZsYWdz
IHRvIHRoZSBsaXN0IG9mIGNvbXBpbGVyIGZsYWdzIGZvciBsaWJQbGF0Zm9ybUd0azIuCisgICAg
ICAgIEFkZCBXYXlsYW5kIGRlcGVuZGVuY3kncyBsaW5rZXIgZmxhZ3MgdG8gdGhlIGxpc3Qgb2Yg
bGlua2VyIGZsYWdzIGZvciBsaWJ3ZWJraXQyZ3RrIGFuZCBXZWJLaXRQbHVnaW5Qcm9jZXNzLgor
CiAyMDEzLTEyLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBBZGQgYSB1bml0IHRlc3RzIHRvIFdlYktpdDIgdG8gdGVzdCBub2Rl
IG5hbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KaW5kZXggNzhlOGM0YjJiYTEyMmYzMmI1MWFmNjBk
N2Y2OTg2M2MzYjUxZjAzOC4uZWY3ZjI5Y2Y4MTkwZDZiNmYxMjU4NWE0MGNiOTA2NDM5OTY0MTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpAQCAtMTIyLDcgKzEyMiw4IEBAIGxpYlBsYXRmb3Jt
R3RrX2xhX0NQUEZMQUdTID0gXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFH
UykgXAogCSQoTElCU0VDUkVUX0NGTEFHUykgXAotCSQoTElCU09VUF9DRkxBR1MpCisJJChMSUJT
T1VQX0NGTEFHUykgXAorCSQoV0FZTEFORF9DRkxBR1MpCiAKIERlcml2ZWRTb3VyY2VzL1BsYXRm
b3JtL0NvbG9yRGF0YS5jcHA6ICQoV2ViQ29yZSkvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQo
V2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xzLnBsCiAJJChBTV9WX0dFTikkKFBFUkwpICQoV2ViQ29y
ZSkvbWFrZS1oYXNoLXRvb2xzLnBsICQoR0VOU09VUkNFU19QTEFURk9STSkgJChXZWJDb3JlKS9w
bGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDI2ODVmM2FlOGE2MDU5ZmZiYTcxMzBlNjY3MjcyMmY3OWJjMjRiYTIuLjZmZTY5MTczMGU3YTE0
NTdlYTVlYTJiM2FmOTU2ZDc4MzdlZTJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNjI4Nyw2ICs2Mjg3LDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiBlbmRpZiAj
IEVORCBVU0VfT1BFTkdMCiBpZiBVU0VfRUdMCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgx
MS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmgKIGVuZGlmICMgRU5EIFVTRV9FR0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwCmluZGV4IDBlZGU3ZmZlOGJjOTU2ZDM2YzNjNjNlZGM2YmIx
NDkzNzk1NjdhNTIuLjk4YmNhNTQwZmE5MmFiYWQ0N2U1NDZlY2Y4NjVmMTRiYjczMDFhZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAt
MjEsNiArMjEsOCBAQAogCiAjaWYgVVNFKE9QRU5HTCkgfHwgKFBMQVRGT1JNKE5JWCkgJiYgVVNF
KE9QRU5HTF9FU18yKSkKIAorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCiAjaWYg
VVNFKEVHTCkKICNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKICNlbmRpZgpAQCAtMjksMTkgKzMx
LDE5IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgotCiAjaWYgUExBVEZPUk0oWDExKQogI2luY2x1ZGUgPFgxMS9Y
bGliLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxnZGsvZ2RrLmg+
Ci0jaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCi0jaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5E
CisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAjaW5jbHVkZSA8Z2RrL2dka3dh
eWxhbmQuaD4KICNlbmRpZgogI2VuZGlmCisKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorI2luY2x1
ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAogdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsK
QEAgLTE0MywzMCArMTQ1LDQwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29udGV4
dHNBdEV4aXQoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotCiBQYXNzT3duUHRyPEdM
Q29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYgUExB
VEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgVVNFKEVHTCkK
LSAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVs
dF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworI2lmIFBMQVRGT1JNKE5JWCkK
KyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbHNlCiAKLSAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElT
UExBWShkaXNwbGF5KSkgewotICAgICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4
dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250
ZXh0KSkKKyNpZiBQTEFURk9STShHVEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5E
KSAmJiBVU0UoRUdMKQorICAgIC8vIElmIHdlIGFyZSBydW5uaW5nIG9uIFdheWxhbmQsIGRvbid0
IGV2ZW4gdHJ5IHRvIGNyZWF0ZSBhIEdMWCBjb250ZXh0LgorICAgIGlmIChHREtfSVNfV0FZTEFO
RF9ESVNQTEFZKGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlz
cGxheV9tYW5hZ2VyX2dldCgpKSkpIHsKKyAgICAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVn
bENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVdheWxhbmRDb250ZXh0KHNoYXJpbmdDb250
ZXh0KSkKICAgICAgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oTklYKQogI2lm
IFVTRShHTFgpCisgICAgLy8gSWYgd2UgY2Fubm90IGNyZWF0ZSBhIEdMWCBjb250ZXh0LCBmYWxs
IGJhY2sgdG8gY3JlYXRpbmcgYW4gRUdMIG9uZS4KICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4g
Z2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNo
YXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwogI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShYMTEpICYmIFVTRShFR0wpCisgICAgaWYgKE93blB0cjxHTENv
bnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQod2luZG93
SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorCiAjaWYgVVNFKEVHTCkKICAgICBp
ZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGVnbENv
bnRleHQucmVsZWFzZSgpOwogI2VuZGlmCi0jZW5kaWYKKwogICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmIC8vICFQTEFURk9STShOSVgpCiB9CiAKIEdMQ29udGV4dDo6R0xDb250ZXh0KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5jcHAKaW5kZXggMDlhN2VkOGFhMDAzZTFjZDRlYmViYjE0MWZjYWQ4MDBmYzMxYzBlYi4uMmE2
MjRjMGNmNThjZTc3ZTlhYzM4NDI3OWFmNzc5ZGEwNDVjYzg3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIy
LDEwICsyMiwxNCBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNp
ZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQorI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisjZW5kaWYKICNlbmRpZgogCiAjaWYg
VVNFKE9QRU5HTF9FU18yKQpAQCAtMzUsMTYyICszOSw4NiBAQAogI2luY2x1ZGUgIk9wZW5HTFNo
aW1zLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaW5j
bHVkZSA8Y2Fpcm8tZ2wuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBFR0xEaXNwbGF5IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0KLSNpZiBV
U0UoT1BFTkdMX0VTXzIpCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdM
X0VTX0FQSTsKLSNlbHNlCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdM
X0FQSTsKLSNlbmRpZgotCi1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKK0VH
TGVudW0gR0xDb250ZXh0RUdMOjpnbEFQSSgpCiB7Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVk
ID0gdHJ1ZTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0g
ZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7CisjaWYgVVNFKE9Q
RU5HTF9FU18yKQorICAgIHJldHVybiBFR0xfT1BFTkdMX0VTX0FQSTsKICNlbHNlCi0gICAgICAg
IGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsK
KyAgICByZXR1cm4gRUdMX09QRU5HTF9BUEk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGdTaGFyZWRF
R0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShnU2hhcmVkRUdM
RGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQVBJKSkpCi0gICAgICAgICAgICBnU2hh
cmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgIH0KLSAgICByZXR1cm4gZ1NoYXJl
ZEVHTERpc3BsYXk7CiB9CiAKLXN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVz
W10gPSB7Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJT
SU9OLCAyLAotI2VuZGlmCi0gICAgRUdMX05PTkUKLX07Ci0KLXN0YXRpYyBib29sIGdldEVHTENv
bmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJm
YWNlVHlwZSkKK0VHTGludCogR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpCiB7Ci0g
ICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyAgICBzdGF0aWMgRUdMaW50IGNvbnRleHRB
dHRyaWJ1dGVzW10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQotICAgICAgICBFR0xfUkVOREVS
QUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0jZWxzZQotICAgICAgICBFR0xfUkVOREVS
QUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKKyAgICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZF
UlNJT04sIDIsCiAjZW5kaWYKLSAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAgICAgICBFR0xf
R1JFRU5fU0laRSwgOCwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKLSAgICAgICAgRUdMX1NU
RU5DSUxfU0laRSwgOCwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCi0gICAgICAgIEVHTF9T
VVJGQUNFX1RZUEUsIEVHTF9OT05FLAogICAgICAgICBFR0xfTk9ORQogICAgIH07Ci0KLSAgICBz
d2l0Y2ggKHN1cmZhY2VUeXBlKSB7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJm
YWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6Ci0gICAgICAg
IGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0
WzEzXSA9IEVHTF9XSU5ET1dfQklUOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBFR0xp
bnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hh
cmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdz
UmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gY29udGV4dEF0
dHJpYnV0ZXM7CiB9CiAKLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNo
YXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQp
LT5tX2NvbnRleHQgOiAwOwotCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlz
cGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25m
aWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcs
IGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChjb250ZXh0
ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKK3N0YXRpYyBFR0xE
aXNwbGF5IHNoYXJlZERpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVH
TERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9
IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOwogCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShk
aXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7Ci0gICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NV
UkZBQ0UpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5
ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKHNoYXJl
ZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVH
TERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKEdMQ29udGV4dEVHTDo6Z2xBUEkoKSkpKQor
ICAgICAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KIAot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFdp
bmRvd1N1cmZhY2UpKTsKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKIH0KIAotUGFzc093
blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3Jl
YXRlV2luZG93Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0aXZlV2luZG93VHlwZSBu
YXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQorICAgIGlmICghbmF0aXZlV2luZG93KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZp
ZywgUGJ1ZmZlclN1cmZhY2UpKQorICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKEdM
Q29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZlZ2xDb25maWcsIEdMQ29udGV4dEVH
TDo6V2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmln
LCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBFR0xDb250ZXh0IGNv
bnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRl
eHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKSk7CiAgICAgaWYgKGNvbnRleHQg
PT0gRUdMX05PX0NPTlRFWFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGlj
IGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBFR0xfV0lEVEgsIDEsIEVHTF9IRUlH
SFQsIDEsIEVHTF9OT05FIH07Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1
ZmZlclN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7CisgICAgRUdM
U3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBlZ2xDb25m
aWcsIG5hdGl2ZVdpbmRvdywgMCk7CiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0Up
IHsKICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250
ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7CisgICAgcmV0dXJuIEdM
Q29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIEdMQ29udGV4dEVH
TDo6V2luZG93QmFzZWQpOwogfQogCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitQYXNz
T3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEdMTmF0aXZlV2lu
ZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYg
UExBVEZPUk0oWDExKQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXko
KTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7CiAgICAgaWYgKGRp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
RUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBT
dXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdD
b250ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMaW50IGRlcHRoOwotICAgIGlmICghZWds
R2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQ
aXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhzaGFyZWRYMTFEaXNw
bGF5KCkpLCAxLCAxLCBkZXB0aCk7Ci0gICAgaWYgKCFwaXhtYXApCisgICAgaWYgKCFpbml0aWFs
aXplT3BlbkdMQVBJKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBpeG1h
cCwgMCk7Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdD
b250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2Nv
bnRleHQgOiAwOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRlV2lu
ZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0
PiBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRl
eHQpKQorICAgICAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CiAKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQaXhtYXBTdXJmYWNlKSk7
Ci0jZWxzZQogICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCiB9CiAKLVBhc3NPd25QdHI8R0xD
b250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitib29sIEdMQ29udGV4dEVHTDo6
aW5pdGlhbGl6ZU9wZW5HTEFQSSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKICAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7CkBAIC0xOTksMjQgKzEyNywzNiBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogI2Vu
ZGlmCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFzdWNjZXNz
KQorICAgIHJldHVybiBzdWNjZXNzOworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKGRpc3BsYXkgIT0gRUdMX05PX0RJ
U1BMQVkpOworCisgICAgRUdMQ29uZmlnIGVnbENvbmZpZzsKKyAgICBpZiAoY2hvb3NlQ29uZmln
KGRpc3BsYXksICZlZ2xDb25maWcsIFBidWZmZXJCYXNlZCkgIT0gRUdMX1RSVUUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNo
YXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQp
LT5tX2NvbnRleHQgOiAwOwotICAgIE93blB0cjxHTENvbnRleHRFR0w+IGNvbnRleHQgPSB3aW5k
b3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVsbHB0
cjsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250
ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLQotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29u
dGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLSAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWds
Q3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0
QXR0cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1
dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKKyAgICBF
R0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBlZ2xD
b25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VS
RkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6
Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJCYXNlZCk7CiB9CiAKLUdM
Q29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitH
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKKyAg
ICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV90eXBlKGNvbnRl
eHRUeXBlKQogI2lmIFVTRShDQUlSTykKICAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKICNlbmRpZgpA
QCAtMjMwLDIwICsxNzAsMjEgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICAgICAg
ICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAobV9jb250ZXh0
KSB7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAg
ICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIG1f
Y29udGV4dCk7Ci0gICAgfQorICAgIGlmIChtX2Rpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpIHsK
KyAgICAgICAgaWYgKG1fY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICAgICAgZWdsTWFr
ZUN1cnJlbnQobV9kaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9O
T19DT05URVhUKTsKKyAgICAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9j
b250ZXh0KTsKKyAgICAgICAgfQogCi0gICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgZWdsRGVz
dHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSAh
PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1fZGlzcGxh
eSwgbV9zdXJmYWNlKTsKKyAgICB9CiB9CiAKIGJvb2wgR0xDb250ZXh0RUdMOjpjYW5SZW5kZXJU
b0RlZmF1bHRGcmFtZWJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBXaW5kb3dTdXJm
YWNlOworICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93QmFzZWQ7CiB9CiAKIEludFNpemUgR0xD
b250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKQEAgLTI1Miw4ICsxOTMsOCBAQCBJ
bnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgICAgIHJl
dHVybiBJbnRTaXplKCk7CiAKICAgICBFR0xpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVn
bFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAm
d2lkdGgpCi0gICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBt
X3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNl
KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVn
bFF1ZXJ5U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkp
CiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKQEAgLTI2MSwxOSArMjAyLDE3IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCkKIAogYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3Vy
cmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOwotCiAgICAgR0xD
b250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRl
eHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGVn
bE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1f
Y29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9zdXJmYWNl
LCBtX3N1cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwQnVm
ZmVycygpCiB7Ci0gICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hh
cmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAg
IGVnbFN3YXBCdWZmZXJzKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKIH0KIAogdm9pZCBHTENvbnRl
eHRFR0w6OndhaXROYXRpdmUoKQpAQCAtMjg4LDcgKzIyNyw3IEBAIGNhaXJvX2RldmljZV90KiBH
TENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7
CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2Ug
PSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7
CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKG1fZGlzcGxheSwg
bV9jb250ZXh0KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CkBAIC0zMDIs
NiArMjQxLDQ0IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR0xDb250ZXh0RUdMOjpwbGF0
Zm9ybUNvbnRleHQoKQogfQogI2VuZGlmCiAKK0VHTEJvb2xlYW4gR0xDb250ZXh0RUdMOjpjaG9v
c2VDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0
RUdMOjpDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKK3sKKyAgICBBU1NFUlQoZGlzcGxheSAhPSBF
R0xfTk9fRElTUExBWSk7CisKKyAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0geworI2lmIFVT
RShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9F
UzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9C
SVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAorICAgICAgICBFR0xfR1JFRU5f
U0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAgRUdMX1NURU5DSUxf
U0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVVJGQUNF
X1RZUEUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBzd2l0Y2gg
KGNvbnRleHRUeXBlKSB7CisgICAgY2FzZSBQYnVmZmVyQmFzZWQ6CisgICAgICAgIGF0dHJpYnV0
ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBp
eG1hcEJhc2VkOgorICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpbmRvd0Jhc2VkOgorICAgICAgICBhdHRyaWJ1dGVM
aXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1cmZh
Y2VsZXNzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOworICAg
IHJldHVybiBlZ2xDaG9vc2VDb25maWcoZGlzcGxheSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAx
LCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXgg
Yzg4N2UwYmViY2VmNzlhNTRjNGU5YzVkNWQ2ZTFiOTI2ZmM5NTRjMS4uNGRjNTZkNDkyODQ2YzRj
YTlmYjQxOTZiOGQyYWJkZTU3OTM4ZmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMjMsMTcgKzIzLDQ0IEBACiAj
aWYgVVNFKEVHTCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUgPEtIUi9raHJw
bGF0Zm9ybS5oPgogCi0jaW5jbHVkZSA8RUdML2VnbC5oPgordHlwZWRlZiB1bnNpZ25lZCBFR0xC
b29sZWFuOwordHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVHTENvbnRl
eHQ7Cit0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Cit0eXBlZGVmIHZvaWQqIEVHTFN1cmZhY2U7
Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVudW07Cit0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBFR0xp
bnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGlj
IEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1
YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1
cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRF
R0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCA9IDApOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
V2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0KTsKKyAgICBlbnVtIENvbnRleHRUeXBlIHsKKyAgICAgICAgV2luZG93QmFzZWQsCisgICAg
ICAgIFBidWZmZXJCYXNlZCwKKyAgICAgICAgUGl4bWFwQmFzZWQsCisgICAgICAgIFN1cmZhY2Vs
ZXNzLAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0
ZShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBDb250ZXh0VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBHTENvbnRleHRFR0woZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgdHlwZSkpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlQ29udGV4dChHTE5hdGl2
ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVXYXlsYW5kQ29u
dGV4dChHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFgx
MSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHQ+IGNyZWF0ZVgxMUNvbnRleHQoR0xO
YXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorCisg
ICAgc3RhdGljIEVHTEJvb2xlYW4gY2hvb3NlQ29uZmlnKEVHTERpc3BsYXksIEVHTENvbmZpZyos
IENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgRUdMZW51bSBnbEFQSSgpOworICAgIHN0YXRpYyBF
R0xpbnQqIGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICB2aXJ0dWFsIH5HTENvbnRleHRFR0wo
KTsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC01MCwxNyArNzcs
MTggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENv
bnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0KKyAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplT3BlbkdMQVBJKCk7CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENv
bnRleHRFR0wqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lk
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250
ZXh0KEVHTERpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250
ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKKyAgICBHTENv
bnRleHRFR0woRUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgQ29udGV4dFR5cGUp
OwogCisgICAgRUdMRGlzcGxheSBtX2Rpc3BsYXk7CiAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7
CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2U7Ci0gICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOwor
ICAgIENvbnRleHRUeXBlIG1fdHlwZTsKKwogI2lmIFVTRShDQUlSTykKICAgICBjYWlyb19kZXZp
Y2VfdCogbV9jYWlyb0RldmljZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYzNjJkODBlOGRhM2UxYTA0M2Y0Y2I5NzE4MmIwYTFkNGFkMWIxN2MKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw1OCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFO
RCkKKworI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgorCisj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rr
d2F5bGFuZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVHTERp
c3BsYXkgc2hhcmVkV2F5bGFuZERpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNo
YXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHNoYXJl
ZEVHTERpc3BsYXk7CisKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyNpZiBQTEFURk9STShH
VEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQorICAgIEdka0Rpc3BsYXkqIGRp
c3BsYXkgPSBnZGtfZGlzcGxheV9tYW5hZ2VyX2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3Bs
YXlfbWFuYWdlcl9nZXQoKSk7CisgICAgQVNTRVJUKEdES19JU19XQVlMQU5EX0RJU1BMQVkoZGlz
cGxheSkpOworICAgIHNoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KGdka193YXlsYW5k
X2Rpc3BsYXlfZ2V0X3dsX2Rpc3BsYXkoZGlzcGxheSkpOworI2VuZGlmCisKKyAgICBpZiAoc2hh
cmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoc2hhcmVk
RUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoR0xDb250ZXh0RUdMOjpnbEFQSSgpKSkp
CisgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICByZXR1cm4g
c2hhcmVkRUdMRGlzcGxheTsKK30KKworUGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dEVH
TDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAg
ICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRXYXlsYW5kRGlzcGxheSgpOworICAgIGlmIChk
aXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGlmICghaW5pdGlhbGl6ZU9wZW5HTEFQSSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGlmICghc3Ryc3RyKGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKSwg
IkVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0
YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsK
KyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIDAsIGVn
bFNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9
PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
R0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UsIFN1
cmZhY2VsZXNzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNF
KEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJm
Y2RiNGZmMjZjMjhjOGZlZmZmMjQ0MzI3M2RkMjg1ZDE1OGIyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3Bw
CkBAIC0wLDAgKzEsMTAxIEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250
ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCisKKyNpbmNsdWRlICJH
TENvbnRleHQuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkWDExRUdMRGlzcGxheSgpCit7CisgICAgc3RhdGlj
IEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRp
YyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAg
ICAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IGVn
bEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworICAgICAgICBpZiAo
c2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoc2hh
cmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoR0xDb250ZXh0RUdMOjpnbEFQSSgp
KSkpCisgICAgICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAg
fQorCisgICAgcmV0dXJuIHNoYXJlZEVHTERpc3BsYXk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRy
PEdMQ29udGV4dD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0
aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7
CisgICAgaWYgKCFuYXRpdmVXaW5kb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
RUdMQ29uZmlnIGVnbENvbmZpZzsKKyAgICBpZiAoR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWco
ZGlzcGxheSwgJmVnbENvbmZpZywgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCkgIT0gRUdMX1RS
VUUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0g
ZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBHTENv
bnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9O
T19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgZWdsQ29uZmlnLCBuYXRpdmVX
aW5kb3csIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAg
IGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwg
Y29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCk7Cit9CisKK3N0YXRp
YyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xEaXNwbGF5IGRp
c3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMQ29uZmlnIGVnbENv
bmZpZzsKKyAgICBpZiAoR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoZGlzcGxheSwgJmVnbENv
bmZpZywgR0xDb250ZXh0RUdMOjpQaXhtYXBCYXNlZCkgIT0gRUdMX1RSVUUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4
dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRl
eHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTGludCBkZXB0aDsKKyAgICBpZiAoZWdsR2V0
Q29uZmlnQXR0cmliKGRpc3BsYXksIGVnbENvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkg
IT0gRUdMX1RSVUUpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4
dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFBpeG1hcCBwaXhtYXAg
PSBYQ3JlYXRlUGl4bWFwKEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9v
dFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgZGVwdGgpOworICAgIGlmICghcGl4bWFwKSB7CisgICAg
ICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXht
YXBTdXJmYWNlKGRpc3BsYXksIGVnbENvbmZpZywgcGl4bWFwLCAwKTsKKyAgICBpZiAoc3VyZmFj
ZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5
LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJu
IEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIEdMQ29udGV4
dEVHTDo6UGl4bWFwQmFzZWQpOworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVYMTFDb250ZXh0KEdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdM
Q29udGV4dCogc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hh
cmVkWDExRUdMRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTEFQSSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0Nv
bnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJp
bmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gY29u
dGV4dCA9IGNyZWF0ZVdpbmRvd0NvbnRleHQoZGlzcGxheSwgbmF0aXZlV2luZG93LCBlZ2xTaGFy
aW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBpZiAo
T3duUHRyPEdMQ29udGV4dD4gY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGRpc3BsYXks
IGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwor
ICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChk
aXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBjb250ZXh0LnJlbGVh
c2UoKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDA5ZDM4MzE4M2I0YmJmMWNjODBmZTUyNGI1YzI3YTRlZjllMDViYmEuLmQ5
NTEzYmYzYWJmOGI3ZWU3OTM5NDgyODM5MDM1MTYwYjFkMDU2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMjcsNiArMTI3LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJ
X01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkk
KFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCiAJJChVUE9XRVJfR0xJQl9MSUJT
KSBcCisJJChXQVlMQU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWENPTVBPU0lURV9M
SUJTKSBcCiAJJChYREFNQUdFX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzRiMzg3
NTMzZWZiZTQ2YjFhNzUyODE4YTkwZmMxODZkNGM4YWM1OS4uZmQzYmYzZjEzZmVhODA0YWYxOGFl
MTQ0YzY0YTY1Njc5YzlkYzI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTI4Niw2ICsyODYs
NyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklD
T0RFX0xJQlMpIFwKIAkkKFVQT1dFUl9HTElCX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAog
CSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykg
XApAQCAtNjAzLDcgKzYwNCw4IEBAIGxpYlBsYXRmb3JtR3RrMl9sYV9DUFBGTEFHUyA9IFwKIAkk
KEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUSzJfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZM
QUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlM
QU5EX0NGTEFHUykKIAogIyBJbmplY3RlZCBCdW5kbGUKIGluamVjdGVkYnVuZGxlZGlyID0gJChs
aWJkaXIpL3dlYmtpdDJndGstMy4wL2luamVjdGVkLWJ1bmRsZQpAQCAtNzU2LDYgKzc1OCw3IEBA
IFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERBREQgPSBcCiAJJChTSE1fTElCUykgXAog
CSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykg
XAogCSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNCBiL1NvdXJjZS9h
dXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNAppbmRleCBlZmMyZGIzODFlZGQzOTk3NzgxODc5
NTk4Yzc2Yjc5YmQ5NjY4MDk2Li4xOTI5ZGU0NTQxOGUwZjMxYmZhMTVkOWVkZTUxMjk4OTlkZmU3
NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKKysr
IGIvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CkBAIC0yMTYsNiArMjE2LDEy
IEBAIGlmIHRlc3QgIiRlbmFibGVfd2F5bGFuZF90YXJnZXQiICE9ICJubyI7IHRoZW4KICAgICBd
KQogZmkKIAoraWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3RhcmdldCIgPSAieWVzIjsgdGhlbgor
ICAgIFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EXSwgW3dheWxhbmQtY2xpZW50IHdheWxhbmQt
ZWdsXSkKKyAgICBBQ19TVUJTVChXQVlMQU5EX0NGTEFHUykKKyAgICBBQ19TVUJTVChXQVlMQU5E
X0xJQlMpCitmaQorCiBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtoYXZlX2dseD0ieWVz
Il0sIFtoYXZlX2dseD0ibm8iXSkKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUg
R0xYIHN1cHBvcnRdKQogaWYgdGVzdCAiJGVuYWJsZV9nbHgiICE9ICJubyI7IHRoZW4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZDBkYWVkNjZh
M2M1MTQ1ODljZGIyODQ1NmMyYWYxNzhmZTg1NjkwLi5hYTNmMjg0MDJjYzc0MjIwYTBkYTE2YTM1
Y2U2NGRkZWIxNWM3ZDY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMTMgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbTogQWRkIFdheWxhbmQgZGVwZW5kZW5jeSdzIGxpbmtlciBmbGFncyB0byB0aGUgbGlz
dCBvZiBsaW5rZXIgZmxhZ3MgZm9yIER1bXBSZW5kZXJUcmVlLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvR05VbWFrZWZpbGUuYW06IERpdHRvIGZvciBUZXN0V2ViQ29yZS4KKwogMjAxMy0xMi0x
MSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+IGFuZCBEYW5pbG8gQ2Vz
YXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNvLnVrPgogCiAgICAg
ICAgIEFkZGluZyBhIC55Y21fZXh0cmFfY29uZiBmaWxlIGZvciB3ZWJraXRHdGsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KaW5kZXggM2Zj
OWEwMDVkN2MzMWE1MDg0YTRlMzk2N2U1NDAyYzEyYTc0YTFmNi4uMjJkZjJmZjc2YjNhMjQ4Nzdj
NDY4M2M1NGJjNDZkMWYzM2FmNTYyOCAxMDA2NDQKLS0tIGEvVG9vbHMvR05VbWFrZWZpbGUuYW0K
KysrIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTE2MSw2ICsxNjEsNyBAQCBQcm9ncmFtc19E
dW1wUmVuZGVyVHJlZV9MREFERCA9IFwKIAkkKEdMSUJfTElCUykgXAogCSQoTElCU09VUF9MSUJT
KSBcCiAJJChGUkVFVFlQRV9MSUJTKSBcCisJJChXQVlMQU5EX0xJQlMpIFwKIAkkKFdJTk1NX0xJ
QlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDFjZDQ4NmYxMTVlOWRjNWI2ODljZmFhMDQ1MGRiODQ2ZWJjYTU0OTIu
LjEzMWFmMTY0MGMxYjllMGMyN2VjZGMwZTI4ODMxOTc5ZGFjYWNmYzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9HTlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIFByb2dyYW1zX1Rlc3RXZWJLaXRB
UElfVGVzdFdlYkNvcmVfTERBREQgPSBcCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJT
KSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9MSUJT
KSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0MTg0ZTRmMjNhZjUxMGUzZTBhZDVhMGNkODliYWUxNzA5
ZDQ5NDhjLi5iMDU2YTVhYWVhZTUzNDk4Yjc2MmE1MjdiZDU3ZmIzNTJjZGQ2NjNhIDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTIt
MTMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1
cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQ6IENoZWNr
IGZvciB0aGUgd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtZWdsIHBhY2thZ2VzLgorCiAyMDEz
LTEyLTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBSZW1vdmUgdGhlIC1Xbm8tYysrMTEtZXh0ZW5zaW9ucyBjb21waWxlciBvcHRpb24gZm9y
IENsYW5nIGJ1aWxkcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219171</attachid>
            <date>2013-12-13 08:23:29 -0800</date>
            <delta_ts>2014-01-15 01:35:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20131213172328.patch</filename>
            <type>text/plain</type>
            <size>36253</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMmU1OWU3NTRmYmRi
NDgyODQ5OWFlZjYyYTNhZTU5YWU5YWQzZDI5Li5iYTE4M2QyYWNmODE3MGI0OTRjNzJlNDhiOWE3
OWJiNDcwODYwMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0xMyAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9y
dCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgV2F5bGFuZCBkZXBlbmRlbmN5J3MgY29tcGls
ZXIgZmxhZ3MgdG8gdGhlIGxpc3Qgb2YgY29tcGlsZXIgZmxhZ3MgZm9yIGxpYlBsYXRmb3JtR3Rr
LgorCiAyMDEzLTEyLTExICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPiBh
bmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
QWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQxMmNkNmY0
ZDYwMjg2Y2M1MWEwMDVlYjMwN2MyY2E4MzY0YmVmODAuLmY3ZTJiYTFhOGYyNGE0N2RhOGJmZTNk
NTVlMjAzNzAwZTVkNWU5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMy0xMi0x
MyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3Vw
cG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgYnVpbGQgdGFyZ2V0cy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KTogUmV0dXJuIG51bGxwdHIg
Zm9yIE5JWC4gRm9yIEdUSywgdHJ5IHRvIGNyZWF0ZSBhIFdheWxhbmQtYmFja2VkIEVHTCBjb250
ZXh0CisgICAgICAgIGlmIHJ1bm5pbmcgdW5kZXIgdGhlIFdheWxhbmQgZGlzcGxheSwgb3RoZXJ3
aXNlIHRyeSB0byBjcmVhdGUgZmlyc3QgYSBHTFggY29udGV4dCBhbmQgdGhlbiB0aGUgWDExLWJh
Y2tlZCBFR0wgY29udGV4dC4KKyAgICAgICAgSWYgRUdMIHN1cHBvcnQgaXMgc3RpbGwgZW5hYmxl
ZCwgdHJ5IGNyZWF0aW5nIGFuIEVHTCBjb250ZXh0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZGVmYXVs
dCBFR0wgZGlzcGxheS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Z2xBUEkpOiBSZXR1cm4g
ZWl0aGVyIEVHTF9PUEVOR0xfRVNfQVBJIG9yIEVHTF9PUEVOR0xfQVBJLCBkZXBlbmRpbmcgb24g
dGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMpOiBSZXR1cm4gdGhlIGNvbnRleHQgYXR0cmlidXRlcyB3
aGljaCB3aWxsIGluY2x1ZGUgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04gd2l0aAorICAgICAg
ICB0aGUgdmFsdWUgb2YgMiBpZiBPcGVuR0xFUyAyLjAgc3VwcG9ydCBpcyBlbmFibGVkLgorICAg
ICAgICAoV2ViQ29yZTo6c2hhcmVkRGlzcGxheSk6IFRyeSB0byBpbml0aWFsaXplIHRoZSBzaGFy
ZWQgRUdMIGRpc3BsYXkgdGhhdCBkZXBlbmRzIG9uIHRoZSBFR0xfREVGQVVMVF9ESVNQTEFZLgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93Q29udGV4dCk6IFRyeSB0byBjcmVhdGUgYW4g
RUdMIGNvbnRleHQgdGhhdCdzIGJhc2VkIG9uIGEgd2luZG93IHN1cmZhY2UgYW5kIHRoZSBkZWZh
dWx0IHNoYXJlZCBFR0wgZGlzcGxheS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6
Y3JlYXRlQ29udGV4dCk6IEFjcXVpcmUgdGhlIHNoYXJlZCBkaXNwbGF5LCBpbml0aWFsaXplIHRo
ZSBPcGVuR0wgQVBJIGFuZCB0aGVuIHRyeSB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAgICAgd2lu
ZG93LSBvciBwYnVmZmVyLWJhc2VkIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmluaXRpYWxpemVPcGVuR0xBUEkpOiBJbml0aWFsaXplIHRoZSBPcGVuR0wgc2hpbXMg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQYnVm
ZmVyQ29udGV4dCk6IENvbW1vbiBwYnVmZmVyIGNvbnRleHQgY29uc3RydWN0aW9uIGltcGxlbWVu
dGF0aW9uIHRoYXQgY3JlYXRlcyBhbiBFR0wgY29udGV4dCBhbmQKKyAgICAgICAgYSBkdW1teSAx
eDFweCBwYnVmZmVyIHN1cmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdM
Q29udGV4dEVHTCk6IFRoZSBjb25zdHJ1Y3RvcnMgbm93IHRha2VzIHRoZSBjb250ZXh0IHR5cGUg
YXMgdGhlIGZvdXJ0aCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
On5HTENvbnRleHRFR0wpOiBQcm9wZXJseSBjbGVhbiB1cCB0aGUgRUdMIGNvbnRleHQgYW5kIHN1
cmZhY2UsIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fu
UmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEVHTDo6bWFrZUNvbnRleHRDdXJyZW50KTogUmVtb3ZlIHRoZSBhc3NlcnRpb24gdGhhdCBoYXMg
YmVjb21lIGludmFsaWQgd2l0aCB0aGlzIHJlZmFjdG9yaW5nLgorICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6IERvbid0IGFzc2VydCB0aGF0IHRoZSBzdXJmYWNl
IGlzIG5vbi1udWxsIGFzIHRoZSBXYXlsYW5kLWJhc2VkIEdMQ29udGV4dEVHTCBkb2Vzbid0IHBv
c3Nlc3MKKyAgICAgICAgYSBwcm9wZXIgRUdMU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjaG9vc2VDb25maWcpOiBBIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb25maWcgY2hv
b3NpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOiBU
aGUgY2hhbmdlcyBpbiB0aGUgR0xDb250ZXh0RUdMIGNsYXNzIGRlY2xhcmF0aW9uIHJlZmxlY3Qg
dGhvc2UgbWFkZSBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNyZWF0ZSk6IFRoZSBuZXcgaGVscGVyIG1ldGhvZCBmb3IgY3JlYXRpbmcgR0xD
b250ZXh0RUdMIGluc3RhbmNlcyBvZiBzcGVjaWZpYyB0eXBlcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6c2hhcmVkV2F5bGFuZERpc3BsYXkpOiBFc3RhYmxpc2ggYSBzaGFyZWQgRUdMRGlz
cGxheSB0aGF0J3MgYmFzZWQgb24gdGhlIFdheWxhbmQgZGlzcGxheSB0aGF0IGlzIHByb3ZpZGVk
IGJ5IHRoZSBHVEsrIHRvb2xraXQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNy
ZWF0ZVdheWxhbmRDb250ZXh0KTogVHJ5IHRvIGNyZWF0ZSBhbiBFR0xDb250ZXh0LCB3aXRoIGRl
cGVuZGluZyBvbiB0aGUgRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IGV4dGVuc2lvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRYMTFFR0xEaXNwbGF5KTogRXN0YWJsaXNoIGEgc2hh
cmVkIEVHTERpc3BsYXkgdGhhdCdzIGJhc2VkIG9uIHRoZSBzaGFyZWQgWDExIGRpc3BsYXkuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3dDb250ZXh0KTogVHJ5IHRvIGNyZWF0ZSBhIGNv
bnRleHQgYmFzZWQgb24gdGhlIHNoYXJlZCBYMTEgZGlzcGxheSBhbmQgYSB3aW5kb3cgc3VyZmFj
ZSBiYXNlZCBvbiB0aGF0IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQaXhtYXBD
b250ZXh0KTogVHJ5IHRvIGNyZWF0ZSBhIGNvbnRleHQgYmFzZWQgb24gdGhlIHNoYXJlZCBYMTEg
ZGlzcGxheSBhbmQgYW4gWCBwaXhtYXAgc3VyZmFjZSBiYXNlZCBvbiB0aGF0IGNvbnRleHQuCisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQpOiBUcnkgdG8g
Y3JlYXRlIGEgR0xDb250ZXh0LCBlaXRoZXIgb2Ygd2luZG93LCBwYnVmZmVyIG9yIHBpeG1hcCB0
eXBlLgorCiAyMDEzLTEyLTEzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDU1NGaWx0ZXJJbWFnZVZhbHVlIGNvbnN0cnVjdG9yIHNob3VsZCByZXF1aXJlIGJv
dGggaW1hZ2UgYW5kIGZpbHRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmNjEyYjdjYjk2MmQzMDNi
YThmMzI0OWE0MzQ4OWQ2NDUwZTgwNmRjLi5iZWJjZjExMmY0ZTBhOTc2NTcxYTk4YmVlOWJmNTgy
NjRlYTFmMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMTMg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBv
cnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFdheWxhbmQgZGVwZW5kZW5jeSdzIGxpbmtl
ciBmbGFncyB0byB0aGUgbGlzdCBvZiBsaW5rZXIgZmxhZ3MgZm9yIGxpYndlYmtpdGd0ay4KKwog
MjAxMy0xMi0xMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBE
b3duIGludG8gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NTA2NmIzYTFhODhkOTk4NGFl
MDNiMmVkYmM2ZDFmOTBiMDViODY1Li5mNzYxNjRiNzZmOGJjYjJjOWYzODNlOTcyMTAwM2EwYzkw
YjljOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMTMgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIg
V2F5bGFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbTogQWRkIFdheWxhbmQgZGVwZW5kZW5jeSdzIGNvbXBpbGVyIGZsYWdz
IHRvIHRoZSBsaXN0IG9mIGNvbXBpbGVyIGZsYWdzIGZvciBsaWJQbGF0Zm9ybUd0azIuCisgICAg
ICAgIEFkZCBXYXlsYW5kIGRlcGVuZGVuY3kncyBsaW5rZXIgZmxhZ3MgdG8gdGhlIGxpc3Qgb2Yg
bGlua2VyIGZsYWdzIGZvciBsaWJ3ZWJraXQyZ3RrIGFuZCBXZWJLaXRQbHVnaW5Qcm9jZXNzLgor
CiAyMDEzLTEyLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBBZGQgYSB1bml0IHRlc3RzIHRvIFdlYktpdDIgdG8gdGVzdCBub2Rl
IG5hbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KaW5kZXggNzhlOGM0YjJiYTEyMmYzMmI1MWFmNjBk
N2Y2OTg2M2MzYjUxZjAzOC4uZWY3ZjI5Y2Y4MTkwZDZiNmYxMjU4NWE0MGNiOTA2NDM5OTY0MTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpAQCAtMTIyLDcgKzEyMiw4IEBAIGxpYlBsYXRmb3Jt
R3RrX2xhX0NQUEZMQUdTID0gXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFH
UykgXAogCSQoTElCU0VDUkVUX0NGTEFHUykgXAotCSQoTElCU09VUF9DRkxBR1MpCisJJChMSUJT
T1VQX0NGTEFHUykgXAorCSQoV0FZTEFORF9DRkxBR1MpCiAKIERlcml2ZWRTb3VyY2VzL1BsYXRm
b3JtL0NvbG9yRGF0YS5jcHA6ICQoV2ViQ29yZSkvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQo
V2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xzLnBsCiAJJChBTV9WX0dFTikkKFBFUkwpICQoV2ViQ29y
ZSkvbWFrZS1oYXNoLXRvb2xzLnBsICQoR0VOU09VUkNFU19QTEFURk9STSkgJChXZWJDb3JlKS9w
bGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDI2ODVmM2FlOGE2MDU5ZmZiYTcxMzBlNjY3MjcyMmY3OWJjMjRiYTIuLjZmZTY5MTczMGU3YTE0
NTdlYTVlYTJiM2FmOTU2ZDc4MzdlZTJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNjI4Nyw2ICs2Mjg3LDggQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiBlbmRpZiAj
IEVORCBVU0VfT1BFTkdMCiBpZiBVU0VfRUdMCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgx
MS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmgKIGVuZGlmICMgRU5EIFVTRV9FR0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwCmluZGV4IDBlZGU3ZmZlOGJjOTU2ZDM2YzNjNjNlZGM2YmIx
NDkzNzk1NjdhNTIuLjk4YmNhNTQwZmE5MmFiYWQ0N2U1NDZlY2Y4NjVmMTRiYjczMDFhZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAt
MjEsNiArMjEsOCBAQAogCiAjaWYgVVNFKE9QRU5HTCkgfHwgKFBMQVRGT1JNKE5JWCkgJiYgVVNF
KE9QRU5HTF9FU18yKSkKIAorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCiAjaWYg
VVNFKEVHTCkKICNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKICNlbmRpZgpAQCAtMjksMTkgKzMx
LDE5IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgotCiAjaWYgUExBVEZPUk0oWDExKQogI2luY2x1ZGUgPFgxMS9Y
bGliLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxnZGsvZ2RrLmg+
Ci0jaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCi0jaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5E
CisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCiAjaW5jbHVkZSA8Z2RrL2dka3dh
eWxhbmQuaD4KICNlbmRpZgogI2VuZGlmCisKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorI2luY2x1
ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAogdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsK
QEAgLTE0MywzMCArMTQ1LDQwIEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29udGV4
dHNBdEV4aXQoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotCiBQYXNzT3duUHRyPEdM
Q29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYgUExB
VEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgVVNFKEVHTCkK
LSAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVs
dF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworI2lmIFBMQVRGT1JNKE5JWCkK
KyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbHNlCiAKLSAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElT
UExBWShkaXNwbGF5KSkgewotICAgICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4
dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250
ZXh0KSkKKyNpZiBQTEFURk9STShHVEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5E
KSAmJiBVU0UoRUdMKQorICAgIC8vIElmIHdlIGFyZSBydW5uaW5nIG9uIFdheWxhbmQsIGRvbid0
IGV2ZW4gdHJ5IHRvIGNyZWF0ZSBhIEdMWCBjb250ZXh0LgorICAgIGlmIChHREtfSVNfV0FZTEFO
RF9ESVNQTEFZKGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlz
cGxheV9tYW5hZ2VyX2dldCgpKSkpIHsKKyAgICAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVn
bENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVdheWxhbmRDb250ZXh0KHNoYXJpbmdDb250
ZXh0KSkKICAgICAgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oTklYKQogI2lm
IFVTRShHTFgpCisgICAgLy8gSWYgd2UgY2Fubm90IGNyZWF0ZSBhIEdMWCBjb250ZXh0LCBmYWxs
IGJhY2sgdG8gY3JlYXRpbmcgYW4gRUdMIG9uZS4KICAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4g
Z2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNo
YXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwogI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShYMTEpICYmIFVTRShFR0wpCisgICAgaWYgKE93blB0cjxHTENv
bnRleHQ+IGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQod2luZG93
SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorCiAjaWYgVVNFKEVHTCkKICAgICBp
ZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29u
dGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGVnbENv
bnRleHQucmVsZWFzZSgpOwogI2VuZGlmCi0jZW5kaWYKKwogICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmIC8vICFQTEFURk9STShOSVgpCiB9CiAKIEdMQ29udGV4dDo6R0xDb250ZXh0KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5jcHAKaW5kZXggMDlhN2VkOGFhMDAzZTFjZDRlYmViYjE0MWZjYWQ4MDBmYzMxYzBlYi4uMmE2
MjRjMGNmNThjZTc3ZTlhYzM4NDI3OWFmNzc5ZGEwNDVjYzg3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIy
LDEwICsyMiwxNCBAQAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNp
ZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQorI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisjZW5kaWYKICNlbmRpZgogCiAjaWYg
VVNFKE9QRU5HTF9FU18yKQpAQCAtMzUsMTYyICszOSw4NiBAQAogI2luY2x1ZGUgIk9wZW5HTFNo
aW1zLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaW5j
bHVkZSA8Y2Fpcm8tZ2wuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBFR0xEaXNwbGF5IGdTaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0KLSNpZiBV
U0UoT1BFTkdMX0VTXzIpCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdM
X0VTX0FQSTsKLSNlbHNlCi1zdGF0aWMgY29uc3QgRUdMZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdM
X0FQSTsKLSNlbmRpZgotCi1zdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKK0VH
TGVudW0gR0xDb250ZXh0RUdMOjpnbEFQSSgpCiB7Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVk
ID0gdHJ1ZTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgICAgIGdTaGFyZWRFR0xEaXNwbGF5ID0g
ZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7CisjaWYgVVNFKE9Q
RU5HTF9FU18yKQorICAgIHJldHVybiBFR0xfT1BFTkdMX0VTX0FQSTsKICNlbHNlCi0gICAgICAg
IGdTaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsK
KyAgICByZXR1cm4gRUdMX09QRU5HTF9BUEk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGdTaGFyZWRF
R0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShnU2hhcmVkRUdM
RGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQVBJKSkpCi0gICAgICAgICAgICBnU2hh
cmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgIH0KLSAgICByZXR1cm4gZ1NoYXJl
ZEVHTERpc3BsYXk7CiB9CiAKLXN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVz
W10gPSB7Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJT
SU9OLCAyLAotI2VuZGlmCi0gICAgRUdMX05PTkUKLX07Ci0KLXN0YXRpYyBib29sIGdldEVHTENv
bmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJm
YWNlVHlwZSkKK0VHTGludCogR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpCiB7Ci0g
ICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyAgICBzdGF0aWMgRUdMaW50IGNvbnRleHRB
dHRyaWJ1dGVzW10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQotICAgICAgICBFR0xfUkVOREVS
QUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0jZWxzZQotICAgICAgICBFR0xfUkVOREVS
QUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKKyAgICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZF
UlNJT04sIDIsCiAjZW5kaWYKLSAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAgICAgICBFR0xf
R1JFRU5fU0laRSwgOCwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKLSAgICAgICAgRUdMX1NU
RU5DSUxfU0laRSwgOCwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCi0gICAgICAgIEVHTF9T
VVJGQUNFX1RZUEUsIEVHTF9OT05FLAogICAgICAgICBFR0xfTk9ORQogICAgIH07Ci0KLSAgICBz
d2l0Y2ggKHN1cmZhY2VUeXBlKSB7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJm
YWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6Ci0gICAgICAg
IGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0
WzEzXSA9IEVHTF9XSU5ET1dfQklUOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBFR0xp
bnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hh
cmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdz
UmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gY29udGV4dEF0
dHJpYnV0ZXM7CiB9CiAKLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQpCi17Ci0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNo
YXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQp
LT5tX2NvbnRleHQgOiAwOwotCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlz
cGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25m
aWcoJmNvbmZpZywgV2luZG93U3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcs
IGVnbFNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChjb250ZXh0
ID09IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKK3N0YXRpYyBFR0xE
aXNwbGF5IHNoYXJlZERpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVH
TERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9
IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOwogCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShk
aXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7Ci0gICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NV
UkZBQ0UpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5
ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKHNoYXJl
ZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVH
TERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKEdMQ29udGV4dEVHTDo6Z2xBUEkoKSkpKQor
ICAgICAgICAgICAgc2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KIAot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFdp
bmRvd1N1cmZhY2UpKTsKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKIH0KIAotUGFzc093
blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3Jl
YXRlV2luZG93Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0aXZlV2luZG93VHlwZSBu
YXRpdmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQorICAgIGlmICghbmF0aXZlV2luZG93KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZp
ZywgUGJ1ZmZlclN1cmZhY2UpKQorICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKEdM
Q29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZlZ2xDb25maWcsIEdMQ29udGV4dEVH
TDo6V2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmln
LCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBFR0xDb250ZXh0IGNv
bnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRl
eHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKSk7CiAgICAgaWYgKGNvbnRleHQg
PT0gRUdMX05PX0NPTlRFWFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGlj
IGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBFR0xfV0lEVEgsIDEsIEVHTF9IRUlH
SFQsIDEsIEVHTF9OT05FIH07Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1
ZmZlclN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7CisgICAgRUdM
U3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBlZ2xDb25m
aWcsIG5hdGl2ZVdpbmRvdywgMCk7CiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0Up
IHsKICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0xDb250
ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKSk7CisgICAgcmV0dXJuIEdM
Q29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIEdMQ29udGV4dEVH
TDo6V2luZG93QmFzZWQpOwogfQogCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitQYXNz
T3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEdMTmF0aXZlV2lu
ZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYg
UExBVEZPUk0oWDExKQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXko
KTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7CiAgICAgaWYgKGRp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
RUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBT
dXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdD
b250ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMaW50IGRlcHRoOwotICAgIGlmICghZWds
R2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQ
aXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhzaGFyZWRYMTFEaXNw
bGF5KCkpLCAxLCAxLCBkZXB0aCk7Ci0gICAgaWYgKCFwaXhtYXApCisgICAgaWYgKCFpbml0aWFs
aXplT3BlbkdMQVBJKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBpeG1h
cCwgMCk7Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdD
b250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2Nv
bnRleHQgOiAwOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRlV2lu
ZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0
PiBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRl
eHQpKQorICAgICAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CiAKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQaXhtYXBTdXJmYWNlKSk7
Ci0jZWxzZQogICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCiB9CiAKLVBhc3NPd25QdHI8R0xD
b250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitib29sIEdMQ29udGV4dEVHTDo6
aW5pdGlhbGl6ZU9wZW5HTEFQSSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKICAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7CkBAIC0xOTksMjQgKzEyNywzNiBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogI2Vu
ZGlmCiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFzdWNjZXNz
KQorICAgIHJldHVybiBzdWNjZXNzOworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJUKGRpc3BsYXkgIT0gRUdMX05PX0RJ
U1BMQVkpOworCisgICAgRUdMQ29uZmlnIGVnbENvbmZpZzsKKyAgICBpZiAoY2hvb3NlQ29uZmln
KGRpc3BsYXksICZlZ2xDb25maWcsIFBidWZmZXJCYXNlZCkgIT0gRUdMX1RSVUUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNo
YXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQp
LT5tX2NvbnRleHQgOiAwOwotICAgIE93blB0cjxHTENvbnRleHRFR0w+IGNvbnRleHQgPSB3aW5k
b3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0NvbnRleHQpIDogbnVsbHB0
cjsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250
ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLQotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29u
dGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLSAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWds
Q3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0
QXR0cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1
dGVzW10gPSB7IEVHTF9XSURUSCwgMSwgRUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKKyAgICBF
R0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBlZ2xD
b25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VS
RkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6
Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJCYXNlZCk7CiB9CiAKLUdM
Q29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitH
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKKyAg
ICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV90eXBlKGNvbnRl
eHRUeXBlKQogI2lmIFVTRShDQUlSTykKICAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKICNlbmRpZgpA
QCAtMjMwLDIwICsxNzAsMjEgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICAgICAg
ICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAobV9jb250ZXh0
KSB7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAg
ICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIG1f
Y29udGV4dCk7Ci0gICAgfQorICAgIGlmIChtX2Rpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpIHsK
KyAgICAgICAgaWYgKG1fY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICAgICAgZWdsTWFr
ZUN1cnJlbnQobV9kaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9O
T19DT05URVhUKTsKKyAgICAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9j
b250ZXh0KTsKKyAgICAgICAgfQogCi0gICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgZWdsRGVz
dHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSAh
PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1fZGlzcGxh
eSwgbV9zdXJmYWNlKTsKKyAgICB9CiB9CiAKIGJvb2wgR0xDb250ZXh0RUdMOjpjYW5SZW5kZXJU
b0RlZmF1bHRGcmFtZWJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBXaW5kb3dTdXJm
YWNlOworICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93QmFzZWQ7CiB9CiAKIEludFNpemUgR0xD
b250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkKQEAgLTI1Miw4ICsxOTMsOCBAQCBJ
bnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgICAgIHJl
dHVybiBJbnRTaXplKCk7CiAKICAgICBFR0xpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVn
bFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAm
d2lkdGgpCi0gICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBt
X3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQpKQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNl
KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVn
bFF1ZXJ5U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkp
CiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKQEAgLTI2MSwxOSArMjAyLDE3IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCkKIAogYm9vbCBHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3Vy
cmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2UpOwotCiAgICAgR0xD
b250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAoZWdsR2V0Q3VycmVudENvbnRl
eHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGVn
bE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1f
Y29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9zdXJmYWNl
LCBtX3N1cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjpzd2FwQnVm
ZmVycygpCiB7Ci0gICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dhcEJ1ZmZlcnMoc2hh
cmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAg
IGVnbFN3YXBCdWZmZXJzKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKIH0KIAogdm9pZCBHTENvbnRl
eHRFR0w6OndhaXROYXRpdmUoKQpAQCAtMjg4LDcgKzIyNyw3IEBAIGNhaXJvX2RldmljZV90KiBH
TENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKCkKICAgICAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7
CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIG1fY2Fpcm9EZXZpY2Ug
PSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShzaGFyZWRFR0xEaXNwbGF5KCksIG1fY29udGV4dCk7
CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKG1fZGlzcGxheSwg
bV9jb250ZXh0KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CkBAIC0zMDIs
NiArMjQxLDQ0IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR0xDb250ZXh0RUdMOjpwbGF0
Zm9ybUNvbnRleHQoKQogfQogI2VuZGlmCiAKK0VHTEJvb2xlYW4gR0xDb250ZXh0RUdMOjpjaG9v
c2VDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0
RUdMOjpDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKK3sKKyAgICBBU1NFUlQoZGlzcGxheSAhPSBF
R0xfTk9fRElTUExBWSk7CisKKyAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0geworI2lmIFVT
RShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9F
UzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9C
SVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAorICAgICAgICBFR0xfR1JFRU5f
U0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAgRUdMX1NURU5DSUxf
U0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVVJGQUNF
X1RZUEUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBzd2l0Y2gg
KGNvbnRleHRUeXBlKSB7CisgICAgY2FzZSBQYnVmZmVyQmFzZWQ6CisgICAgICAgIGF0dHJpYnV0
ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBp
eG1hcEJhc2VkOgorICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpbmRvd0Jhc2VkOgorICAgICAgICBhdHRyaWJ1dGVM
aXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1cmZh
Y2VsZXNzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOworICAg
IHJldHVybiBlZ2xDaG9vc2VDb25maWcoZGlzcGxheSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAx
LCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShFR0wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXgg
Yzg4N2UwYmViY2VmNzlhNTRjNGU5YzVkNWQ2ZTFiOTI2ZmM5NTRjMS4uNGRjNTZkNDkyODQ2YzRj
YTlmYjQxOTZiOGQyYWJkZTU3OTM4ZmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMjMsMTcgKzIzLDQ0IEBACiAj
aWYgVVNFKEVHTCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUgPEtIUi9raHJw
bGF0Zm9ybS5oPgogCi0jaW5jbHVkZSA8RUdML2VnbC5oPgordHlwZWRlZiB1bnNpZ25lZCBFR0xC
b29sZWFuOwordHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVHTENvbnRl
eHQ7Cit0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Cit0eXBlZGVmIHZvaWQqIEVHTFN1cmZhY2U7
Cit0eXBlZGVmIHVuc2lnbmVkIEVHTGVudW07Cit0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBFR0xp
bnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGlj
IEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1
YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1
cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRF
R0w+IGNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCA9IDApOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
V2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0KTsKKyAgICBlbnVtIENvbnRleHRUeXBlIHsKKyAgICAgICAgV2luZG93QmFzZWQsCisgICAg
ICAgIFBidWZmZXJCYXNlZCwKKyAgICAgICAgUGl4bWFwQmFzZWQsCisgICAgICAgIFN1cmZhY2Vs
ZXNzLAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0
ZShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBDb250ZXh0VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBHTENvbnRleHRFR0woZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgdHlwZSkpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlQ29udGV4dChHTE5hdGl2
ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVXYXlsYW5kQ29u
dGV4dChHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFgx
MSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHQ+IGNyZWF0ZVgxMUNvbnRleHQoR0xO
YXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorCisg
ICAgc3RhdGljIEVHTEJvb2xlYW4gY2hvb3NlQ29uZmlnKEVHTERpc3BsYXksIEVHTENvbmZpZyos
IENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgRUdMZW51bSBnbEFQSSgpOworICAgIHN0YXRpYyBF
R0xpbnQqIGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICB2aXJ0dWFsIH5HTENvbnRleHRFR0wo
KTsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC01MCwxNyArNzcs
MTggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250
ZXh0KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENv
bnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7Ci0KKyAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplT3BlbkdMQVBJKCk7CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENv
bnRleHRFR0wqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lk
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250
ZXh0KEVHTERpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250
ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKKyAgICBHTENv
bnRleHRFR0woRUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgQ29udGV4dFR5cGUp
OwogCisgICAgRUdMRGlzcGxheSBtX2Rpc3BsYXk7CiAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7
CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2U7Ci0gICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOwor
ICAgIENvbnRleHRUeXBlIG1fdHlwZTsKKwogI2lmIFVTRShDQUlSTykKICAgICBjYWlyb19kZXZp
Y2VfdCogbV9jYWlyb0RldmljZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgyMzIwY2I4NmM2YTIxY2M3YTczZTY2YzkzZmZmYzc3NGNkYWQ4OGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw2MCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFO
RCkKKworI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgorCisj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpZiBkZWZpbmVkKEdES19X
SU5ET1dJTkdfV0FZTEFORCkKKyNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgorI2VuZGlmCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRX
YXlsYW5kRGlzcGxheSgpCit7CisgICAgc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxh
eSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7
CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsK
KworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworI2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCisgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19k
aXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dl
dCgpKTsKKyAgICBBU1NFUlQoR0RLX0lTX1dBWUxBTkRfRElTUExBWShkaXNwbGF5KSk7CisgICAg
c2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoZ2RrX3dheWxhbmRfZGlzcGxheV9nZXRf
d2xfZGlzcGxheShkaXNwbGF5KSk7CisjZW5kaWYKKworICAgIGlmIChzaGFyZWRFR0xEaXNwbGF5
ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShzaGFyZWRFR0xEaXNwbGF5LCAw
LCAwKSB8fCAhZWdsQmluZEFQSShHTENvbnRleHRFR0w6OmdsQVBJKCkpKSkKKyAgICAgICAgc2hh
cmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHJldHVybiBzaGFyZWRFR0xEaXNw
bGF5OworfQorCitQYXNzT3duUHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXls
YW5kQ29udGV4dChHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHNoYXJlZFdheWxhbmREaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFpbml0aWFs
aXplT3BlbkdMQVBJKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFzdHJz
dHIoZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpLCAiRUdMX0tIUl9zdXJm
YWNlbGVzc19jb250ZXh0IikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29u
dGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xD
b250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworICAgIEVHTENvbnRl
eHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgMCwgZWdsU2hhcmluZ0NvbnRl
eHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05U
RVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBHTENvbnRleHRFR0w6
OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFU
Rk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmZjZGI0ZmYyNmMyOGM4
ZmVmZmYyNDQzMjczZGQyODVkMTU4YjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKQEAgLTAsMCArMSwx
MDEgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKwor
I2lmIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKKworI2luY2x1ZGUgIkdMQ29udGV4dC5oIgor
I2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRUdM
RGlzcGxheSBzaGFyZWRYMTFFR0xEaXNwbGF5KCkKK3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBz
aGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKKworICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShH
TENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKSk7CisgICAgICAgIGlmIChzaGFyZWRFR0xEaXNw
bGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShzaGFyZWRFR0xEaXNwbGF5
LCAwLCAwKSB8fCAhZWdsQmluZEFQSShHTENvbnRleHRFR0w6OmdsQVBJKCkpKSkKKyAgICAgICAg
ICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICByZXR1
cm4gc2hhcmVkRUdMRGlzcGxheTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBj
cmVhdGVXaW5kb3dDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgR0xOYXRpdmVXaW5kb3dUeXBl
IG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBpZiAoIW5h
dGl2ZVdpbmRvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb25maWcgZWds
Q29uZmlnOworICAgIGlmIChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmZWds
Q29uZmlnLCBHTENvbnRleHRFR0w6OldpbmRvd0Jhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250
ZXh0KGRpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIEdMQ29udGV4dEVHTDo6Y29u
dGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3Jl
YXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBlZ2xDb25maWcsIG5hdGl2ZVdpbmRvdywgMCk7Cisg
ICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNv
bnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJm
YWNlLCBHTENvbnRleHRFR0w6OldpbmRvd0Jhc2VkKTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8
R0xDb250ZXh0PiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlm
IChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBHTENvbnRl
eHRFR0w6OlBpeG1hcEJhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVn
bENvbmZpZywgc2hhcmluZ0NvbnRleHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMo
KSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgRUdMaW50IGRlcHRoOworICAgIGlmIChlZ2xHZXRDb25maWdBdHRyaWIo
ZGlzcGxheSwgZWdsQ29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSAhPSBFR0xfVFJVRSkg
eworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXht
YXAoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3Bs
YXkpLCAxLCAxLCBkZXB0aCk7CisgICAgaWYgKCFwaXhtYXApIHsKKyAgICAgICAgZWdsRGVzdHJv
eUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlz
cGxheSwgZWdsQ29uZmlnLCBwaXhtYXAsIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gR0xDb250ZXh0RUdM
OjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpQaXhtYXBC
YXNlZCk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0PiBHTENvbnRleHRFR0w6OmNyZWF0ZVgx
MUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgR0xDb250ZXh0KiBzaGFy
aW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRYMTFFR0xEaXNw
bGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMQVBJKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJp
bmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5t
X2NvbnRleHQgOiAwOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRl
V2luZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVnbFNoYXJpbmdDb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIGlmIChPd25QdHI8R0xDb250
ZXh0PiBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0Nv
bnRleHQpKQorICAgICAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisgICAgaWYgKE93blB0
cjxHTENvbnRleHQ+IGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGRpc3BsYXksIGVnbFNo
YXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXgg
MDlkMzgzMTgzYjRiYmYxY2M4MGZlNTI0YjVjMjdhNGVmOWUwNWJiYS4uZDk1MTNiZjNhYmY4Yjdl
ZTc5Mzk0ODI4MzkwMzUxNjBiMWQwNTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAg
LTEyNyw2ICsxMjcsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lP
TkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQoU1FMSVRFM19MSUJT
KSBcCiAJJChVTklDT0RFX0xJQlMpIFwKIAkkKFVQT1dFUl9HTElCX0xJQlMpIFwKKwkkKFdBWUxB
TkRfTElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYQ09NUE9TSVRFX0xJQlMpIFwKIAkkKFhE
QU1BR0VfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA3NGIzODc1MzNlZmJlNDZiMWE3
NTI4MThhOTBmYzE4NmQ0YzhhYzU5Li5mZDNiZjNmMTNmZWE4MDRhZjE4YWUxNDRjNjRhNjU2Nzlj
OWRjMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMjg2LDYgKzI4Niw3IEBAIGxpYndlYmtp
dDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkBfbGFfTElCCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAog
CSQoVVBPV0VSX0dMSUJfTElCUykgXAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMp
IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWENPTVBPU0lURV9MSUJTKSBcCkBAIC02MDMsNyAr
NjA0LDggQEAgbGliUGxhdGZvcm1HdGsyX2xhX0NQUEZMQUdTID0gXAogCSQoR1NUUkVBTUVSX0NG
TEFHUykgXAogCSQoR1RLMl9DRkxBR1MpIFwKIAkkKExJQlNFQ1JFVF9DRkxBR1MpIFwKLQkkKExJ
QlNPVVBfQ0ZMQUdTKQorCSQoTElCU09VUF9DRkxBR1MpIFwKKwkkKFdBWUxBTkRfQ0ZMQUdTKQog
CiAjIEluamVjdGVkIEJ1bmRsZQogaW5qZWN0ZWRidW5kbGVkaXIgPSAkKGxpYmRpcikvd2Via2l0
Mmd0ay0zLjAvaW5qZWN0ZWQtYnVuZGxlCkBAIC03NTYsNiArNzU4LDcgQEAgUHJvZ3JhbXNfV2Vi
S2l0UGx1Z2luUHJvY2Vzc19MREFERCA9IFwKIAkkKFNITV9MSUJTKSBcCiAJJChTUUxJVEUzX0xJ
QlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJ
QlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291
cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00IGIvU291cmNlL2F1dG90b29scy9GaW5k
RGVwZW5kZW5jaWVzLm00CmluZGV4IGVmYzJkYjM4MWVkZDM5OTc3ODE4Nzk1OThjNzZiNzliZDk2
NjgwOTYuLjE5MjlkZTQ1NDE4ZTBmMzFiZmExNWQ5ZWRlNTEyOTg5OWRmZTc0ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNAorKysgYi9Tb3VyY2UvYXV0
b3Rvb2xzL0ZpbmREZXBlbmRlbmNpZXMubTQKQEAgLTIxNiw2ICsyMTYsMTIgQEAgaWYgdGVzdCAi
JGVuYWJsZV93YXlsYW5kX3RhcmdldCIgIT0gIm5vIjsgdGhlbgogICAgIF0pCiBmaQogCitpZiB0
ZXN0ICIkZW5hYmxlX3dheWxhbmRfdGFyZ2V0IiA9ICJ5ZXMiOyB0aGVuCisgICAgUEtHX0NIRUNL
X01PRFVMRVMoW1dBWUxBTkRdLCBbd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2xdKQorICAgIEFD
X1NVQlNUKFdBWUxBTkRfQ0ZMQUdTKQorICAgIEFDX1NVQlNUKFdBWUxBTkRfTElCUykKK2ZpCisK
IEFDX0NIRUNLX0hFQURFUlMoW0dML2dseC5oXSwgW2hhdmVfZ2x4PSJ5ZXMiXSwgW2hhdmVfZ2x4
PSJubyJdKQogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBHTFggc3VwcG9ydF0p
CiBpZiB0ZXN0ICIkZW5hYmxlX2dseCIgIT0gIm5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkMGRhZWQ2NmEzYzUxNDU4OWNkYjI4
NDU2YzJhZjE3OGZlODU2OTAuLmFhM2YyODQwMmNjNzQyMjBhMGRhMTZhMzVjZTY0ZGRlYjE1Yzdk
NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0xMi0xMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQg
V2F5bGFuZCBkZXBlbmRlbmN5J3MgbGlua2VyIGZsYWdzIHRvIHRoZSBsaXN0IG9mIGxpbmtlciBm
bGFncyBmb3IgRHVtcFJlbmRlclRyZWUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtl
ZmlsZS5hbTogRGl0dG8gZm9yIFRlc3RXZWJDb3JlLgorCiAyMDEzLTEyLTExICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4gYW5kIERhbmlsbyBDZXNhciBMZW1lcyBkZSBQ
YXVsYSAgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgQWRkaW5nIGEg
LnljbV9leHRyYV9jb25mIGZpbGUgZm9yIHdlYmtpdEd0awpkaWZmIC0tZ2l0IGEvVG9vbHMvR05V
bWFrZWZpbGUuYW0gYi9Ub29scy9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmM5YTAwNWQ3YzMxYTUw
ODRhNGUzOTY3ZTU0MDJjMTJhNzRhMWY2Li4yMmRmMmZmNzZiM2EyNDg3N2M0NjgzYzU0YmM0NmQx
ZjMzYWY1NjI4IDEwMDY0NAotLS0gYS9Ub29scy9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9H
TlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIFByb2dyYW1zX0R1bXBSZW5kZXJUcmVl
X0xEQUREID0gXAogCSQoR0xJQl9MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKEZSRUVU
WVBFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0lOTU1fTElCUykgXAogCSQoWFJF
TkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5k
ZXggMWNkNDg2ZjExNWU5ZGM1YjY4OWNmYWEwNDUwZGI4NDZlYmNhNTQ5Mi4uMTMxYWYxNjQwYzFi
OWUwYzI3ZWNkYzBlMjg4MzE5NzlkYWNhY2ZjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxl
LmFtCkBAIC0xNjEsNiArMTYxLDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViQ29y
ZV9MREFERCA9IFwKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNP
REVfTElCUykgXAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5E
RVJfTElCUykgXAogCSQoWFRfTElCUykgXApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDQxODRlNGYyM2FmNTEwZTNlMGFkNWEwY2Q4OWJhZTE3MDlkNDk0OGMuLmIwNTZh
NWFhZWFlNTM0OThiNzYyYTUyN2JkNTdmYjM1MmNkZDY2M2EgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0xMyAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBX
YXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNvdXJjZS9hdXRvdG9vbHMvRmluZERlcGVuZGVuY2llcy5tNDogQ2hlY2sgZm9yIHRoZSB3YXls
YW5kLWNsaWVudCBhbmQgd2F5bGFuZC1lZ2wgcGFja2FnZXMuCisKIDIwMTMtMTItMTMgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlbW92ZSB0
aGUgLVduby1jKysxMS1leHRlbnNpb25zIGNvbXBpbGVyIG9wdGlvbiBmb3IgQ2xhbmcgYnVpbGRz
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221241</attachid>
            <date>2014-01-15 01:35:33 -0800</date>
            <delta_ts>2015-12-07 10:54:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-118944-20140115103531.patch</filename>
            <type>text/plain</type>
            <size>37707</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMmU1OWU3NTRmYmRi
NDgyODQ5OWFlZjYyYTNhZTU5YWU5YWQzZDI5Li4xMzk4NzNkMDQzMzZhYzM3MGNlNWNmZDQ3MmM5
M2M1NTU4ZWM3NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMS0xNCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wgc3VwcG9y
dCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGVqYW5kcm8gRy4gQ2FzdHJv
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBXYXlsYW5kIGRlcGVuZGVuY3kncyBj
b21waWxlciBmbGFncyB0byB0aGUgbGlzdCBvZiBjb21waWxlciBmbGFncyBmb3IgbGliUGxhdGZv
cm1HdGsuCisKIDIwMTMtMTItMTEgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5j
b20+IGFuZCBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgYSBVUG93ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Rj
ZjNmMGU3MTJhMDFjMmE0ZTA0OTYxNGZjNjFhZWEwYmY3ZTZmZC4uMTNlNDk3ZTgzNWViNGQ0ODJm
NmQ4ZTZiMjhlZWNmY2RmOGNiZjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0
LTAxLTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4gYW5kIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJH
TCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExODk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZWphbmRybyBH
LiBDYXN0cm8uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGJ1aWxk
IHRhcmdldHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyk6IFJldHVy
biBudWxscHRyIGZvciBOSVguIEZvciBHVEssIHRyeSB0byBjcmVhdGUgYSBXYXlsYW5kLWJhY2tl
ZCBFR0wgY29udGV4dAorICAgICAgICBpZiBydW5uaW5nIHVuZGVyIHRoZSBXYXlsYW5kIGRpc3Bs
YXksIG90aGVyd2lzZSB0cnkgdG8gY3JlYXRlIGZpcnN0IGEgR0xYIGNvbnRleHQgYW5kIHRoZW4g
dGhlIFgxMS1iYWNrZWQgRUdMIGNvbnRleHQuCisgICAgICAgIElmIEVHTCBzdXBwb3J0IGlzIHN0
aWxsIGVuYWJsZWQsIHRyeSBjcmVhdGluZyBhbiBFR0wgY29udGV4dCB0aGF0IGRlcGVuZHMgb24g
dGhlIGRlZmF1bHQgRUdMIGRpc3BsYXkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmdsQVBJ
KTogUmV0dXJuIGVpdGhlciBFR0xfT1BFTkdMX0VTX0FQSSBvciBFR0xfT1BFTkdMX0FQSSwgZGVw
ZW5kaW5nIG9uIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKTogUmV0dXJuIHRoZSBjb250ZXh0IGF0
dHJpYnV0ZXMgd2hpY2ggd2lsbCBpbmNsdWRlIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OIHdp
dGgKKyAgICAgICAgdGhlIHZhbHVlIG9mIDIgaWYgT3BlbkdMRVMgMi4wIHN1cHBvcnQgaXMgZW5h
YmxlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZERpc3BsYXkpOiBUcnkgdG8gaW5pdGlhbGl6
ZSB0aGUgc2hhcmVkIEVHTCBkaXNwbGF5IHRoYXQgZGVwZW5kcyBvbiB0aGUgRUdMX0RFRkFVTFRf
RElTUExBWS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBUcnkgdG8g
Y3JlYXRlIGFuIEVHTCBjb250ZXh0IHRoYXQncyBiYXNlZCBvbiBhIHdpbmRvdyBzdXJmYWNlIGFu
ZCB0aGUgZGVmYXVsdCBzaGFyZWQgRUdMIGRpc3BsYXkuCisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6OmNyZWF0ZUNvbnRleHQpOiBBY3F1aXJlIHRoZSBzaGFyZWQgZGlzcGxheSwgaW5p
dGlhbGl6ZSB0aGUgT3BlbkdMIEFQSSBhbmQgdGhlbiB0cnkgdG8gY3JlYXRlIGVpdGhlciBhCisg
ICAgICAgIHdpbmRvdy0gb3IgcGJ1ZmZlci1iYXNlZCBjb250ZXh0LgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjppbml0aWFsaXplT3BlbkdMQVBJKTogSW5pdGlhbGl6ZSB0aGUgT3Bl
bkdMIHNoaW1zIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6
Y3JlYXRlUGJ1ZmZlckNvbnRleHQpOiBDb21tb24gcGJ1ZmZlciBjb250ZXh0IGNvbnN0cnVjdGlv
biBpbXBsZW1lbnRhdGlvbiB0aGF0IGNyZWF0ZXMgYW4gRUdMIGNvbnRleHQgYW5kCisgICAgICAg
IGEgZHVtbXkgMXgxcHggcGJ1ZmZlciBzdXJmYWNlLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0RUdMOjpHTENvbnRleHRFR0wpOiBUaGUgY29uc3RydWN0b3JzIG5vdyB0YWtlcyB0aGUgY29u
dGV4dCB0eXBlIGFzIHRoZSBmb3VydGggcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6R0xD
b250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKTogUHJvcGVybHkgY2xlYW4gdXAgdGhlIEVHTCBjb250
ZXh0IGFuZCBzdXJmYWNlLCBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCk6IFJlbW92ZSB0aGUgYXNzZXJ0aW9u
IHRoYXQgaGFzIGJlY29tZSBpbnZhbGlkIHdpdGggdGhpcyByZWZhY3RvcmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMpOiBEb24ndCBhc3NlcnQgdGhhdCB0
aGUgc3VyZmFjZSBpcyBub24tbnVsbCBhcyB0aGUgV2F5bGFuZC1iYXNlZCBHTENvbnRleHRFR0wg
ZG9lc24ndCBwb3NzZXNzCisgICAgICAgIGEgcHJvcGVyIEVHTFN1cmZhY2UuCisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKTogQSBjb21tb24gaW1wbGVtZW50YXRpb24gb2YgRUdM
Q29uZmlnIGNob29zaW5nLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuaDogVGhlIGNoYW5nZXMgaW4gdGhlIEdMQ29udGV4dEVHTCBjbGFzcyBkZWNsYXJhdGlv
biByZWZsZWN0IHRob3NlIG1hZGUgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGUpOiBUaGUgbmV3IGhlbHBlciBtZXRob2QgZm9yIGNy
ZWF0aW5nIEdMQ29udGV4dEVHTCBpbnN0YW5jZXMgb2Ygc3BlY2lmaWMgdHlwZXMuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZFdheWxhbmREaXNwbGF5KTogRXN0YWJsaXNoIGEgc2hh
cmVkIEVHTERpc3BsYXkgdGhhdCdzIGJhc2VkIG9uIHRoZSBXYXlsYW5kIGRpc3BsYXkgdGhhdCBp
cyBwcm92aWRlZCBieSB0aGUgR1RLKyB0b29sa2l0LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dCk6IFRyeSB0byBjcmVhdGUgYW4gRUdMQ29udGV4
dCwgd2l0aCBkZXBlbmRpbmcgb24gdGhlIEVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCBleHRl
bnNpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkWDExRUdMRGlzcGxheSk6IEVzdGFi
bGlzaCBhIHNoYXJlZCBFR0xEaXNwbGF5IHRoYXQncyBiYXNlZCBvbiB0aGUgc2hhcmVkIFgxMSBk
aXNwbGF5LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93Q29udGV4dCk6IFRyeSB0byBj
cmVhdGUgYSBjb250ZXh0IGJhc2VkIG9uIHRoZSBzaGFyZWQgWDExIGRpc3BsYXkgYW5kIGEgd2lu
ZG93IHN1cmZhY2UgYmFzZWQgb24gdGhhdCBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUGl4bWFwQ29udGV4dCk6IFRyeSB0byBjcmVhdGUgYSBjb250ZXh0IGJhc2VkIG9uIHRoZSBz
aGFyZWQgWDExIGRpc3BsYXkgYW5kIGFuIFggcGl4bWFwIHN1cmZhY2UgYmFzZWQgb24gdGhhdCBj
b250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVYMTFDb250ZXh0
KTogVHJ5IHRvIGNyZWF0ZSBhIEdMQ29udGV4dCwgZWl0aGVyIG9mIHdpbmRvdywgcGJ1ZmZlciBv
ciBwaXhtYXAgdHlwZS4KKwogMjAxNC0wMS0xNCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9o
QGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE2
MTk4MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyMTI1OGRiZWJhM2VhYmFkNmNiZmZiZWYxOWQ0ZjI5
MTdiYWNhMzU5Li5hZjIzZWI5YjU2M2NlZjdjMDJkMmYzMzA3MzU4MzczYjQ3ZmZkMTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDEtMTQgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPiBhbmQgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxlamFuZHJvIEcuIENhc3Ryby4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOiBBZGQgV2F5bGFuZCBkZXBlbmRlbmN5J3MgbGlua2VyIGZsYWdzIHRv
IHRoZSBsaXN0IG9mIGxpbmtlciBmbGFncyBmb3IgbGlid2Via2l0Z3RrLgorCiAyMDE0LTAxLTEz
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
U09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEgU291cFNlc3Npb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMmFlMDgyZTgyYmJlNDdjNGI4NTI4ZTYyNDE5MDNmOGI3MTAxYWYzLi44
NzMyZGQ3NDI2NzdjNjVmMTA0Y2RlZWRkYzQ1OWM1MWQ5NDk4ODhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTQtMDEtMTQgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPiBhbmQgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dUS10gQWRkIFdlYkdMIHN1cHBvcnQgdW5kZXIgV2F5bGFuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxlamFuZHJvIEcuIENhc3Ryby4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBB
ZGQgV2F5bGFuZCBkZXBlbmRlbmN5J3MgY29tcGlsZXIgZmxhZ3MgdG8gdGhlIGxpc3Qgb2YgY29t
cGlsZXIgZmxhZ3MgZm9yIGxpYlBsYXRmb3JtR3RrMi4KKyAgICAgICAgQWRkIFdheWxhbmQgZGVw
ZW5kZW5jeSdzIGxpbmtlciBmbGFncyB0byB0aGUgbGlzdCBvZiBsaW5rZXIgZmxhZ3MgZm9yIGxp
YndlYmtpdDJndGsgYW5kIFdlYktpdFBsdWdpblByb2Nlc3MuCisKIDIwMTQtMDEtMTQgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVJ
IHByb2Nlc3MgY3Jhc2hlcyB3aGVuIGNsb3NpbmcgdGhlIHdpbmRvdyByaWdodCBhZnRlciBwcmlu
dGluZyB3aXRoIGphdmFzY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtl
ZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQppbmRleCBmYWYzZThjNWRl
MGI2ZTVlMTVhODIwY2UyNWU1ZTUyOGI0ZmExMjI0Li5iNDA3ZTZkY2YyODAyMGU1YjBmYjk1NTYy
OTFkM2MzNDkyNGUyNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjMsNyArMTIzLDgg
QEAgbGliUGxhdGZvcm1HdGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBc
CiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTRUNSRVRfQ0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NG
TEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChXQVlMQU5EX0NGTEFHUykKIAogRGVyaXZl
ZFNvdXJjZXMvUGxhdGZvcm0vQ29sb3JEYXRhLmNwcDogJChXZWJDb3JlKS9wbGF0Zm9ybS9Db2xv
ckRhdGEuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwKIAkkKEFNX1ZfR0VOKSQo
UEVSTCkgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwgJChHRU5TT1VSQ0VTX1BMQVRGT1JN
KSAkKFdlYkNvcmUpL3BsYXRmb3JtL0NvbG9yRGF0YS5ncGVyZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggZjYxMzgwZDFkNmUzYTVlZDIyMzI5NjFlZjc2NDI0NWE1Njg3MDIwNy4u
MjExMTg2MTNkNzI0ZTFhOTQ0MDQzMDE1Mjc1NDc3NWI4YjAzNTEzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC02MzMwLDYgKzYzMzAsOCBAQCBwbGF0Zm9ybWd0a19zb3VyY2Vz
ICs9IFwKIGVuZGlmICMgRU5EIFVTRV9PUEVOR0wKIGlmIFVTRV9FR0wKIHdlYmNvcmVndGtfc291
cmNlcyArPSBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTFdheWxhbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMWDExLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuaAogZW5kaWYgIyBFTkQgVVNFX0VHTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggMTY5OTNhMTQ3OWNjMjE3
NTBlOTk2YmI2NjA4ZDI0Y2Q5MjllYjc1MS4uNmI2NjJmZDc3ZDBmOTBmZjQ1ODkxYTY4NzlmMjU4
ZjQ4ZWRlMDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuY3BwCkBAIC0yMSw2ICsyMSw4IEBACiAKICNpZiBVU0UoT1BFTkdMKSB8fCAoUExBVEZP
Uk0oTklYKSAmJiBVU0UoT1BFTkdMX0VTXzIpKQogCisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNp
ZmljLmg+CisKICNpZiBVU0UoRUdMKQogI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgogI2VuZGlm
CkBAIC0yOSw4ICszMSw2IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCiAjZW5kaWYKIAot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCiAjaWYgUExBVEZPUk0oWDExKQogI2lu
Y2x1ZGUgPFgxMS9YbGliLmg+CiAjZW5kaWYKQEAgLTQyLDYgKzQyLDEwIEBACiAjZW5kaWYKICNl
bmRpZgogCisjaWYgIVVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgor
I2VuZGlmCisKIHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTE0MSwyOSArMTQ1LDM2IEBAIHZvaWQgR0xDb250ZXh0OjpjbGVhbnVwQWN0aXZlQ29u
dGV4dHNBdEV4aXQoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotCiBQYXNzT3duUHRy
PEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2lu
ZG93VHlwZSB3aW5kb3dIYW5kbGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7Ci0jaWYg
UExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShXQVlMQU5EKSAmJiAhZGVmaW5lZChHVEtfQVBJX1ZF
UlNJT05fMikgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpICYmIFVTRShFR0wpCi0g
ICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRf
ZGlzcGxheShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKTsKLQotICAgIGlmIChHREtfSVNfV0FZ
TEFORF9ESVNQTEFZKGRpc3BsYXkpKSB7Ci0gICAgICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBl
Z2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hh
cmluZ0NvbnRleHQpKQorI2lmICFQTEFURk9STShOSVgpCisjaWYgUExBVEZPUk0oR1RLKSAmJiBk
ZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkgJiYgVVNFKEVHTCkKKyAgICAvLyBJZiB3ZSBh
cmUgcnVubmluZyBvbiBXYXlsYW5kLCBkb24ndCBldmVuIHRyeSB0byBjcmVhdGUgYSBHTFggY29u
dGV4dC4KKyAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWShnZGtfZGlzcGxheV9tYW5hZ2Vy
X2dldF9kZWZhdWx0X2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXQoKSkpKSB7CisgICAg
ICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVh
dGVXYXlsYW5kQ29udGV4dChzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZWds
Q29udGV4dC5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICNlbmRp
ZgogCi0jaWYgIVBMQVRGT1JNKE5JWCkKICNpZiBVU0UoR0xYKQorICAgIC8vIElmIHdlIGNhbm5v
dCBjcmVhdGUgYSBHTFggY29udGV4dCwgZmFsbCBiYWNrIHRvIGNyZWF0aW5nIGFuIEVHTCBvbmUu
CiAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNy
ZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgIHJldHVy
biBnbHhDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oWDExKSAmJiBV
U0UoRUdMKQorICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0
RUdMOjpjcmVhdGVYMTFDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAg
ICAgICByZXR1cm4gZWdsQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKKwogI2lmIFVTRShFR0wpCiAgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGVnbENvbnRl
eHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29u
dGV4dCkpCiAgICAgICAgIHJldHVybiBlZ2xDb250ZXh0LnJlbGVhc2UoKTsKICNlbmRpZgotI2Vu
ZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKE5JWCkKKwogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuY3BwCmluZGV4IDA5YTdlZDhhYTAwM2UxY2Q0ZWJlYmIxNDFmY2FkODAwZmMzMWMwZWIu
LjJhNjI0YzBjZjU4Y2U3N2U5YWMzODQyNzlhZjc3OWRhMDQ1Y2M4NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBA
IC0yMiwxMCArMjIsMTQgQEAKICNpZiBVU0UoRUdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgPGNhaXJvLmg+CisjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKKyNpbmNsdWRlIDxjYWlyby1nbC5oPgorI2VuZGlmCiAjZW5kaWYKIAog
I2lmIFVTRShPUEVOR0xfRVNfMikKQEAgLTM1LDE2MiArMzksODYgQEAKICNpbmNsdWRlICJPcGVu
R0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQot
I2luY2x1ZGUgPGNhaXJvLWdsLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgRUdMRGlzcGxheSBnU2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotCi0j
aWYgVVNFKE9QRU5HTF9FU18yKQotc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0gRUdMX09Q
RU5HTF9FU19BUEk7Ci0jZWxzZQotc3RhdGljIGNvbnN0IEVHTGVudW0gZ0dMQVBJID0gRUdMX09Q
RU5HTF9BUEk7Ci0jZW5kaWYKLQotc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSgp
CitFR0xlbnVtIEdMQ29udGV4dEVHTDo6Z2xBUEkoKQogewotICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgICAgICBnU2hhcmVkRUdMRGlzcGxh
eSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworI2lmIFVT
RShPUEVOR0xfRVNfMikKKyAgICByZXR1cm4gRUdMX09QRU5HTF9FU19BUEk7CiAjZWxzZQotICAg
ICAgICBnU2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExB
WSk7CisgICAgcmV0dXJuIEVHTF9PUEVOR0xfQVBJOwogI2VuZGlmCi0gICAgICAgIGlmIChnU2hh
cmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoZ1NoYXJl
ZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKGdHTEFQSSkpKQotICAgICAgICAgICAg
Z1NoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLSAgICB9Ci0gICAgcmV0dXJuIGdT
aGFyZWRFR0xEaXNwbGF5OwogfQogCi1zdGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0QXR0cmli
dXRlc1tdID0gewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICBFR0xfQ09OVEVYVF9DTElFTlRf
VkVSU0lPTiwgMiwKLSNlbmRpZgotICAgIEVHTF9OT05FCi19OwotCi1zdGF0aWMgYm9vbCBnZXRF
R0xDb25maWcoRUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUg
c3VyZmFjZVR5cGUpCitFR0xpbnQqIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKQog
ewotICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CisgICAgc3RhdGljIEVHTGludCBjb250
ZXh0QXR0cmlidXRlc1tdID0gewogI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgRUdMX1JF
TkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9FUzJfQklULAotI2Vsc2UKLSAgICAgICAgRUdMX1JF
TkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9CSVQsCisgICAgICAgIEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OLCAyLAogI2VuZGlmCi0gICAgICAgIEVHTF9SRURfU0laRSwgOCwKLSAgICAgICAg
RUdMX0dSRUVOX1NJWkUsIDgsCi0gICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCi0gICAgICAgIEVH
TF9TVEVOQ0lMX1NJWkUsIDgsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAotICAgICAgICBF
R0xfU1VSRkFDRV9UWVBFLCBFR0xfTk9ORSwKICAgICAgICAgRUdMX05PTkUKICAgICB9OwotCi0g
ICAgc3dpdGNoIChzdXJmYWNlVHlwZSkgewotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQYnVmZmVy
U3VyZmFjZToKLSAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUEJVRkZFUl9CSVQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpQaXhtYXBTdXJmYWNlOgotICAg
ICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEdMQ29udGV4dEVHTDo6V2luZG93U3VyZmFjZToKLSAgICAgICAgYXR0cmlidXRl
TGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
RUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKLSAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmln
KHNoYXJlZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29u
Zmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7CisgICAgcmV0dXJuIGNvbnRl
eHRBdHRyaWJ1dGVzOwogfQogCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdM
OjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0KQotewotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQg
PSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250
ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVH
TERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdM
Q29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29u
ZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAoY29u
dGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CitzdGF0aWMg
RUdMRGlzcGxheSBzaGFyZWREaXNwbGF5KCkKK3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBzaGFy
ZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVk
ID0gdHJ1ZTsKIAotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZh
Y2UoZGlzcGxheSwgY29uZmlnLCB3aW5kb3csIDApOwotICAgIGlmIChzdXJmYWNlID09IEVHTF9O
T19TVVJGQUNFKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcmVkRUdMRGlz
cGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisgICAgICAgIGlmIChz
aGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShzaGFy
ZWRFR0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQSShHTENvbnRleHRFR0w6OmdsQVBJKCkp
KSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9
CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdMQ29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNl
LCBXaW5kb3dTdXJmYWNlKSk7CisgICAgcmV0dXJuIHNoYXJlZEVHTERpc3BsYXk7CiB9CiAKLVBh
c3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0
KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHQ+
IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBHTE5hdGl2ZVdpbmRvd1R5
cGUgbmF0aXZlV2luZG93LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIEVHTERp
c3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxheSA9PSBF
R0xfTk9fRElTUExBWSkKKyAgICBpZiAoIW5hdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmlnKCZj
b25maWcsIFBidWZmZXJTdXJmYWNlKSkKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlm
IChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBHTENvbnRl
eHRFR0w6OldpbmRvd0Jhc2VkKSAhPSBFR0xfVFJVRSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNv
bmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgRUdMQ29udGV4
dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdD
b250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkpOwogICAgIGlmIChjb250
ZXh0ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0
YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgRUdMX1dJRFRILCAxLCBFR0xf
SEVJR0hULCAxLCBFR0xfTk9ORSB9OwotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0
ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAg
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgZWds
Q29uZmlnLCBuYXRpdmVXaW5kb3csIDApOwogICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJG
QUNFKSB7CiAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdM
Q29udGV4dEVHTChjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSkpOworICAgIHJldHVy
biBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBHTENvbnRl
eHRFR0w6OldpbmRvd0Jhc2VkKTsKIH0KIAotUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQor
UGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChHTE5hdGl2
ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQogewot
I2lmIFBMQVRGT1JNKFgxMSkKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNw
bGF5KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOwogICAgIGlm
IChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGl4
bWFwU3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29udGV4dCBj
b250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0
LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhU
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTGludCBkZXB0aDsKLSAgICBpZiAo
IWVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVw
dGgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFBpeG1hcCBwaXhtYXAgPSBYQ3Jl
YXRlUGl4bWFwKHNoYXJlZFgxMURpc3BsYXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coc2hhcmVkWDEx
RGlzcGxheSgpKSwgMSwgMSwgZGVwdGgpOwotICAgIGlmICghcGl4bWFwKQorICAgIGlmICghaW5p
dGlhbGl6ZU9wZW5HTEFQSSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTFN1
cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBw
aXhtYXAsIDApOwotCi0gICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFy
aW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+
bV9jb250ZXh0IDogMDsKKyAgICBpZiAoT3duUHRyPEdMQ29udGV4dD4gY29udGV4dCA9IGNyZWF0
ZVdpbmRvd0NvbnRleHQoZGlzcGxheSwgbmF0aXZlV2luZG93LCBlZ2xTaGFyaW5nQ29udGV4dCkp
CisgICAgICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBpZiAoT3duUHRyPEdMQ29u
dGV4dD4gY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdD
b250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwogCi0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHTENvbnRleHRFR0woY29udGV4dCwgc3VyZmFjZSwgUGl4bWFwU3VyZmFj
ZSkpOwotI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgogfQogCi1QYXNzT3duUHRy
PEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorYm9vbCBHTENvbnRleHRF
R0w6OmluaXRpYWxpemVPcGVuR0xBUEkoKQogewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVk
ID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgaWYgKCFpbml0
aWFsaXplZCkgewpAQCAtMTk5LDI0ICsxMjcsMzYgQEAgUGFzc093blB0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywK
ICNlbmRpZgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQotICAgIGlmICghc3Vj
Y2VzcykKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworUGFzc093blB0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBF
R0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEFTU0VSVChkaXNwbGF5ICE9IEVHTF9O
T19ESVNQTEFZKTsKKworICAgIEVHTENvbmZpZyBlZ2xDb25maWc7CisgICAgaWYgKGNob29zZUNv
bmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBQYnVmZmVyQmFzZWQpICE9IEVHTF9UUlVFKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQg
PSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250
ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBPd25QdHI8R0xDb250ZXh0RUdMPiBjb250ZXh0ID0g
d2luZG93ID8gY3JlYXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51
bGxwdHI7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFw
Q29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Ci0KLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IGNvbnRleHQgPSBjcmVhdGVQYnVmZmVyQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7Ci0gICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29u
dGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0
cmlidXRlc1tdID0geyBFR0xfV0lEVEgsIDEsIEVHTF9IRUlHSFQsIDEsIEVHTF9OT05FIH07Cisg
ICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwg
ZWdsQ29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05P
X1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBHTENvbnRleHRF
R0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyQmFzZWQpOwogfQog
Ci1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZh
Y2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUgdHlwZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0
KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250
ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgQ29udGV4dFR5cGUgY29udGV4dFR5cGUp
CisgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9zdXJmYWNlKHN1cmZhY2UpCi0gICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fdHlwZShj
b250ZXh0VHlwZSkKICNpZiBVU0UoQ0FJUk8pCiAgICAgLCBtX2NhaXJvRGV2aWNlKDApCiAjZW5k
aWYKQEAgLTIzMCwyMCArMTcwLDIxIEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogI2VuZGlmCiAKLSAg
ICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKG1fY29u
dGV4dCkgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0g
ICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VS
RkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5
LCBtX2NvbnRleHQpOwotICAgIH0KKyAgICBpZiAobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZ
KSB7CisgICAgICAgIGlmIChtX2NvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpIHsKKyAgICAgICAg
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgICAgIGVn
bE1ha2VDdXJyZW50KG1fZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBF
R0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXks
IG1fY29udGV4dCk7CisgICAgICAgIH0KIAotICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgIGVn
bERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgIGlmIChtX3N1cmZh
Y2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtX2Rp
c3BsYXksIG1fc3VyZmFjZSk7CisgICAgfQogfQogCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVu
ZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewotICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93
U3VyZmFjZTsKKyAgICByZXR1cm4gbV90eXBlID09IFdpbmRvd0Jhc2VkOwogfQogCiBJbnRTaXpl
IEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCkBAIC0yNTIsOCArMTkzLDgg
QEAgSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQogICAgICAg
ICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgRUdMaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgaWYg
KCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9XSURU
SCwgJndpZHRoKQotICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXko
KSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkKKyAgICBpZiAoIWVnbFF1ZXJ5U3Vy
ZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCisgICAgICAgIHx8
ICFlZ2xRdWVyeVN1cmZhY2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWln
aHQpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgcmV0dXJuIEludFNpemUod2lk
dGgsIGhlaWdodCk7CkBAIC0yNjEsMTkgKzIwMiwxNyBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6
ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAKIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4
dEN1cnJlbnQoKQogewotICAgIEFTU0VSVChtX2NvbnRleHQgJiYgbV9zdXJmYWNlKTsKLQogICAg
IEdMQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKGVnbEdldEN1cnJlbnRD
b250ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVy
biBlZ2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNl
LCBtX2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3Vy
ZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dh
cEJ1ZmZlcnMoKQogewotICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJz
KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBpZiAobV9zdXJmYWNlKQorICAg
ICAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xD
b250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKQEAgLTI4OCw3ICsyMjcsNyBAQCBjYWlyb19kZXZpY2Vf
dCogR0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2
aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJvRGV2
aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgpLCBtX2NvbnRl
eHQpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3Bs
YXksIG1fY29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpAQCAt
MzAyLDYgKzI0MSw0NCBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEVHTDo6
cGxhdGZvcm1Db250ZXh0KCkKIH0KICNlbmRpZgogCitFR0xCb29sZWFuIEdMQ29udGV4dEVHTDo6
Y2hvb3NlQ29uZmlnKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnKiBjb25maWcsIEdMQ29u
dGV4dEVHTDo6Q29udGV4dFR5cGUgY29udGV4dFR5cGUpCit7CisgICAgQVNTRVJUKGRpc3BsYXkg
IT0gRUdMX05PX0RJU1BMQVkpOworCisgICAgRUdMaW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyNp
ZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVO
R0xfRVMyX0JJVCwKKyNlbHNlCisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVO
R0xfQklULAorI2VuZGlmCisgICAgICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dS
RUVOX1NJWkUsIDgsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9TVEVO
Q0lMX1NJWkUsIDgsCisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfU1VS
RkFDRV9UWVBFLCBFR0xfTk9ORSwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAgc3dp
dGNoIChjb250ZXh0VHlwZSkgeworICAgIGNhc2UgUGJ1ZmZlckJhc2VkOgorICAgICAgICBhdHRy
aWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQaXhtYXBCYXNlZDoKKyAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfUElYTUFQX0JJ
VDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXaW5kb3dCYXNlZDoKKyAgICAgICAgYXR0cmli
dXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dXJmYWNlbGVzczoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CisgICAgfQorCisgICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZDsK
KyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZp
ZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoRUdMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCmlu
ZGV4IGM4ODdlMGJlYmNlZjc5YTU0YzRlOWM1ZDVkNmUxYjkyNmZjOTU0YzEuLjRkYzU2ZDQ5Mjg0
NmM0Y2E5ZmI0MTk2YjhkMmFiZGU1NzkzOGZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTIzLDE3ICsyMyw0NCBA
QAogI2lmIFVTRShFR0wpCiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlIDxLSFIv
a2hycGxhdGZvcm0uaD4KIAotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KK3R5cGVkZWYgdW5zaWduZWQg
RUdMQm9vbGVhbjsKK3R5cGVkZWYgdm9pZCogRUdMQ29uZmlnOwordHlwZWRlZiB2b2lkKiBFR0xD
b250ZXh0OwordHlwZWRlZiB2b2lkKiBFR0xEaXNwbGF5OwordHlwZWRlZiB2b2lkKiBFR0xTdXJm
YWNlOwordHlwZWRlZiB1bnNpZ25lZCBFR0xlbnVtOwordHlwZWRlZiBraHJvbm9zX2ludDMyX3Qg
RUdMaW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdMQ29udGV4dEVHTCA6IHB1
YmxpYyBHTENvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdMQ29udGV4dEVHTCk7
CiBwdWJsaWM6Ci0gICAgZW51bSBFR0xTdXJmYWNlVHlwZSB7IFBidWZmZXJTdXJmYWNlLCBXaW5k
b3dTdXJmYWNlLCBQaXhtYXBTdXJmYWNlIH07Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hh
cmluZ0NvbnRleHQgPSAwKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNy
ZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCk7CisgICAgZW51bSBDb250ZXh0VHlwZSB7CisgICAgICAgIFdpbmRvd0Jhc2VkLAor
ICAgICAgICBQYnVmZmVyQmFzZWQsCisgICAgICAgIFBpeG1hcEJhc2VkLAorICAgICAgICBTdXJm
YWNlbGVzcywKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBj
cmVhdGUoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgQ29udGV4dFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgR0xDb250ZXh0RUdMKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIHR5cGUpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHTENvbnRleHQ+IGNyZWF0ZUNvbnRleHQoR0xO
YXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNpZiBQTEFURk9S
TShXQVlMQU5EKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdMQ29udGV4dD4gY3JlYXRlV2F5bGFu
ZENvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKyNpZiBQTEFURk9S
TShYMTEpCisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVYMTFDb250ZXh0
KEdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisjZW5kaWYK
KworICAgIHN0YXRpYyBFR0xCb29sZWFuIGNob29zZUNvbmZpZyhFR0xEaXNwbGF5LCBFR0xDb25m
aWcqLCBDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEVHTGVudW0gZ2xBUEkoKTsKKyAgICBzdGF0
aWMgRUdMaW50KiBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgdmlydHVhbCB+R0xDb250ZXh0
RUdMKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtNTAsMTcg
Kzc3LDE4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXht
YXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwotCisgICAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZU9wZW5HTEFQSSgpOwogICAgIHN0YXRpYyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQo
R0xDb250ZXh0RUdMKik7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cFNoYXJlZEVHTERpc3BsYXko
dm9pZCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVy
Q29udGV4dChFR0xEaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKIAotICAgIEdM
Q29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CisgICAg
R0xDb250ZXh0RUdMKEVHTERpc3BsYXksIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIENvbnRleHRU
eXBlKTsKIAorICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5OwogICAgIEVHTENvbnRleHQgbV9jb250
ZXh0OwogICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlOwotICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlw
ZTsKKyAgICBDb250ZXh0VHlwZSBtX3R5cGU7CisKICNpZiBVU0UoQ0FJUk8pCiAgICAgY2Fpcm9f
ZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYTBkMWRmYTQ1YjgwMWI0YzZmMGJmMGI5Yjg2YmYwZjExOTcyYmM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTFdheWxhbmQuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSWdhbGlhLCBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdM
KSAmJiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNpbmNs
dWRlIDxFR0wvZWdsLmg+CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dkay5o
PgorI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XQVlMQU5EKQorI2luY2x1ZGUgPGdkay9nZGt3
YXlsYW5kLmg+CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBFR0xEaXNwbGF5IHNoYXJlZFdheWxhbmREaXNwbGF5KCkKK3sKKyAgICBzdGF0aWMgRUdMRGlz
cGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVy
biBzaGFyZWRFR0xEaXNwbGF5OworCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisjaWYgUExB
VEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyAgICBHZGtEaXNw
bGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdlcl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdk
a19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOworICAgIEFTU0VSVChHREtfSVNfV0FZTEFORF9ESVNQ
TEFZKGRpc3BsYXkpKTsKKyAgICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShnZGtf
d2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5KGRpc3BsYXkpKTsKKyNlbmRpZgorCisgICAg
aWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXpl
KHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8ICFlZ2xCaW5kQVBJKEdMQ29udGV4dEVHTDo6Z2xB
UEkoKSkpKQorICAgICAgICBzaGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAg
cmV0dXJuIHNoYXJlZEVHTERpc3BsYXk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0PiBHTENv
bnRleHRFR0w6OmNyZWF0ZVdheWxhbmRDb250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQp
Cit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkV2F5bGFuZERpc3BsYXkoKTsKKyAg
ICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xBUEkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBpZiAoIXN0cnN0cihlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5T
SU9OUyksICJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQiKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRl
eHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4
dCA6IDA7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5
LCAwLCBlZ2xTaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNv
bnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJG
QUNFLCBTdXJmYWNlbGVzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlZjVjZWE0MmViMDAzMTIzODYzZGUyYjgwYWMzYjZiZDY5NzM3NmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
WDExLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2Fs
aWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworI2lmIFVTRShFR0wpICYmIFBMQVRG
T1JNKFgxMSkKKworI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRYMTFFR0xE
aXNwbGF5KCkKK3sKKyAgICBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gRUdM
X05PX0RJU1BMQVk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBp
ZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAg
ICBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShHTENvbnRleHQ6OnNoYXJlZFgxMURp
c3BsYXkoKSk7CisgICAgICAgIGlmIChzaGFyZWRFR0xEaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZ
ICYmICghZWdsSW5pdGlhbGl6ZShzaGFyZWRFR0xEaXNwbGF5LCAwLCAwKSB8fCAhZWdsQmluZEFQ
SShHTENvbnRleHRFR0w6OmdsQVBJKCkpKSkKKyAgICAgICAgICAgIHNoYXJlZEVHTERpc3BsYXkg
PSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsK
K30KKworc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVXaW5kb3dDb250ZXh0KEVH
TERpc3BsYXkgZGlzcGxheSwgR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBpZiAoIW5hdGl2ZVdpbmRvdykKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChHTENv
bnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6
OldpbmRvd0Jhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVnbENvbmZp
Zywgc2hhcmluZ0NvbnRleHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKSk7Cisg
ICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNw
bGF5LCBlZ2xDb25maWcsIG5hdGl2ZVdpbmRvdywgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdM
X05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4
dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBHTENvbnRl
eHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBHTENvbnRleHRFR0w6Oldp
bmRvd0Jhc2VkKTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8R0xDb250ZXh0PiBjcmVhdGVQaXht
YXBDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkK
K3sKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlmIChHTENvbnRleHRFR0w6OmNob29z
ZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBHTENvbnRleHRFR0w6OlBpeG1hcEJhc2VkKSAh
PSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNv
bnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRl
eHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQg
PT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMaW50
IGRlcHRoOworICAgIGlmIChlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgZWdsQ29uZmlnLCBF
R0xfREVQVEhfU0laRSwgJmRlcHRoKSAhPSBFR0xfVFJVRSkgeworICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoR0xDb250ZXh0OjpzaGFyZWRY
MTFEaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXkpLCAxLCAxLCBkZXB0aCk7Cisg
ICAgaWYgKCFwaXhtYXApIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIEVHTFN1cmZhY2Ug
c3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgZWdsQ29uZmlnLCBwaXht
YXAsIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29u
dGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpQaXhtYXBCYXNlZCk7Cit9CisKK1Bhc3NPd25Q
dHI8R0xDb250ZXh0PiBHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQoR0xOYXRpdmVXaW5k
b3dUeXBlIG5hdGl2ZVdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBF
R0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRYMTFFR0xEaXNwbGF5KCk7CisgICAgaWYgKGRpc3Bs
YXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KCFpbml0aWFsaXplT3BlbkdMQVBJKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
RUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nh
c3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworICAgIGlm
IChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRlV2luZG93Q29udGV4dChkaXNwbGF5
LCBuYXRpdmVXaW5kb3csIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQucmVsZWFzZSgpOworICAgIGlmIChPd25QdHI8R0xDb250ZXh0PiBjb250ZXh0ID0gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1
cm4gY29udGV4dC5yZWxlYXNlKCk7CisgICAgaWYgKE93blB0cjxHTENvbnRleHQ+IGNvbnRleHQg
PSBjcmVhdGVQaXhtYXBDb250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBMQVRGT1JN
KFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggZjk0Y2Y5MjgyZjZlZjc0M2QyNWI0
ZDI1MDAwZDFkZTViNzdmMjU0MS4uNTE4MjM4YmZlY2VjMWYyOWEwMTJjYTM3NmIxYjgxYTc4NDQ1
NjhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTEyNyw2ICsxMjcsNyBAQCBsaWJ3
ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfTElCQQogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMp
IFwKIAkkKFVQT1dFUl9HTElCX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElCUykgXAogCSQoV0VCUF9M
SUJTKSBcCiAJJChYQ09NUE9TSVRFX0xJQlMpIFwKIAkkKFhEQU1BR0VfTElCUykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQppbmRleCA0OTRiMDRkODM0NzgxNzI4ZDYzMmIwYzlkNDJkYzAxYmFiZmFhOTNl
Li4zNmE0NDIxMWQwOThlZmU3NWI0YzM3ZjJiMDVmMDc3MmRjYjA4YjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQpAQCAtMjcxLDYgKzI3MSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJJChT
UUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAogCSQoVVBPV0VSX0dMSUJfTElCUykg
XAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykg
XAogCSQoWENPTVBPU0lURV9MSUJTKSBcCkBAIC02NDAsNyArNjQxLDggQEAgbGliUGxhdGZvcm1H
dGsyX2xhX0NQUEZMQUdTID0gXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLMl9DRkxB
R1MpIFwKIAkkKExJQlNFQ1JFVF9DRkxBR1MpIFwKLQkkKExJQlNPVVBfQ0ZMQUdTKQorCSQoTElC
U09VUF9DRkxBR1MpIFwKKwkkKFdBWUxBTkRfQ0ZMQUdTKQogCiAjIEluamVjdGVkIEJ1bmRsZQog
aW5qZWN0ZWRidW5kbGVkaXIgPSAkKGxpYmRpcikvd2Via2l0Mmd0ay0zLjAvaW5qZWN0ZWQtYnVu
ZGxlCkBAIC03OTIsNiArNzk0LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFE
RCA9IFwKIAkkKFNITV9MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElC
UykgXAorCSQoV0FZTEFORF9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElC
UykgXAogCSQoWFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9GaW5kRGVw
ZW5kZW5jaWVzLm00IGIvU291cmNlL2F1dG90b29scy9GaW5kRGVwZW5kZW5jaWVzLm00CmluZGV4
IGVmYzJkYjM4MWVkZDM5OTc3ODE4Nzk1OThjNzZiNzliZDk2NjgwOTYuLjE5MjlkZTQ1NDE4ZTBm
MzFiZmExNWQ5ZWRlNTEyOTg5OWRmZTc0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMv
RmluZERlcGVuZGVuY2llcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL0ZpbmREZXBlbmRlbmNp
ZXMubTQKQEAgLTIxNiw2ICsyMTYsMTIgQEAgaWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kX3Rhcmdl
dCIgIT0gIm5vIjsgdGhlbgogICAgIF0pCiBmaQogCitpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRf
dGFyZ2V0IiA9ICJ5ZXMiOyB0aGVuCisgICAgUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRdLCBb
d2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2xdKQorICAgIEFDX1NVQlNUKFdBWUxBTkRfQ0ZMQUdT
KQorICAgIEFDX1NVQlNUKFdBWUxBTkRfTElCUykKK2ZpCisKIEFDX0NIRUNLX0hFQURFUlMoW0dM
L2dseC5oXSwgW2hhdmVfZ2x4PSJ5ZXMiXSwgW2hhdmVfZ2x4PSJubyJdKQogQUNfTVNHX0NIRUNL
SU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBHTFggc3VwcG9ydF0pCiBpZiB0ZXN0ICIkZW5hYmxlX2ds
eCIgIT0gIm5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDBjZjc5Mjg4Mzk4Nzk3ZDA4N2FiYjAyODFiNGVmODcxZTg0ODNkYWUuLmNl
Yzg2M2E0YjAyZGZlYzIzYzkxNDg3ZjZmMjE1YjFhMGJkOGJkNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0w
MS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgV2ViR0wg
c3VwcG9ydCB1bmRlciBXYXlsYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGVqYW5kcm8gRy4g
Q2FzdHJvLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBXYXlsYW5kIGRlcGVuZGVu
Y3kncyBsaW5rZXIgZmxhZ3MgdG8gdGhlIGxpc3Qgb2YgbGlua2VyIGZsYWdzIGZvciBEdW1wUmVu
ZGVyVHJlZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtOiBEaXR0byBm
b3IgVGVzdFdlYkNvcmUuCisKIDIwMTQtMDEtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFrZSBEb1lvdUV2ZW5CZW5jaCBydW5uYWJsZSBieSBydW4tcGVy
Zi10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9HTlVtYWtl
ZmlsZS5hbQppbmRleCAxNDcwZjZiYTNmOWUyZDg1Y2Q2NDg1Y2Y1NjEyOTBiOTIyNzU4MjY1Li42
NTQwNmNkMmY3ZDBjYjcyNzM5MTE3NTAwN2U0MGNkN2FiMDFhNmMzIDEwMDY0NAotLS0gYS9Ub29s
cy9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9HTlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2
MSw3IEBAIFByb2dyYW1zX0R1bXBSZW5kZXJUcmVlX0xEQUREID0gXAogCSQoR0xJQl9MSUJTKSBc
CiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKEZSRUVUWVBFX0xJQlMpIFwKKwkkKFdBWUxBTkRfTElC
UykgXAogCSQoV0lOTU1fTElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggNGZiZDM5MTI2OWFlOGQ4MDQ2NjcyMmYy
OTkzNGY2YWZjNDFlYWM3Yy4uYWE4YTE2MGNhYjUzZjhlM2ZlNDhmNTdkZmU3ZTIyZTRiMGVmOGE2
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0zMTEsNiArMzExLDcgQEAgUHJv
Z3JhbXNfVGVzdFdlYktpdEFQSV9XZWJDb3JlX1Rlc3RXZWJDb3JlX0xEQUREID0gXAogCSQoUE5H
X0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChXQVlM
QU5EX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9M
SUJTKSBcCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYjA0YTAzM2Y4
ZGQyZDU1Njk4ZGRlNzgyOGZkNTFkODBjNjdhODVkNi4uYmU3ZmY0ZjBlYzQzNmQyZjlmMTJjOGU4
ODk4ODBmOGM0NTJiMzY2MCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE0LTAxLTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFkZCBXZWJHTCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZWphbmRybyBHLiBDYXN0cm8uCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL0ZpbmREZXBlbmRlbmNpZXMubTQ6IENoZWNrIGZvciB0aGUgd2F5bGFuZC1jbGllbnQgYW5k
IHdheWxhbmQtZWdsIHBhY2thZ2VzLgorCiAyMDE0LTAxLTE0ICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSB1c2UgY29sb3IgaW4gbWFrZSBvdXRwdXQgd2hl
biBpdOKAmXMgZ29pbmcgdG8gYSB0ZXJtaW5hbC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255559</attachid>
            <date>2015-06-25 09:27:15 -0700</date>
            <delta_ts>2015-07-02 05:38:08 -0700</delta_ts>
            <desc>Updated patch against 2.8.3</desc>
            <filename>0002-Updated-webgl-patch-from-118944.patch</filename>
            <type>text/plain</type>
            <size>28184</size>
            <attacher name="Emilio Pozuelo Monfort">pochu27</attacher>
            
              <data encoding="base64">LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQAogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvR0xDb250ZXh0LmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTFdheWxhbmQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFgxMS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAogCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTE5
LDYgKzE5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHTENvbnRleHQuaCIK
IAorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCiAjaWYgVVNFKEVHTCkKICNpbmNs
dWRlICJHTENvbnRleHRFR0wuaCIKICNlbmRpZgpAQCAtMjcsOCArMjksNiBAQAogI2luY2x1ZGUg
IkdMQ29udGV4dEdMWC5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMu
aD4KLQogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2VuZGlmCkBA
IC00MCw2ICs0MCwxMCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmICFVU0UoT1BFTkdMX0VTXzIp
CisjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKKyNlbmRpZgorCiB1c2luZyBXVEY6OlRocmVhZFNw
ZWNpZmljOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsMjAgKzE0NiwyNyBAQAogCiBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5k
b3coR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29u
dGV4dCkKIHsKLSNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmICFkZWZp
bmVkKEdUS19BUElfVkVSU0lPTl8yKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkg
JiYgVVNFKEVHTCkKLSAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFuYWdl
cl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOwotCi0gICAg
aWYgKEdES19JU19XQVlMQU5EX0RJU1BMQVkoZGlzcGxheSkpIHsKLSAgICAgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNo
YXJpbmdDb250ZXh0KSkKKyNpZiBQTEFURk9STShHVEspICYmIGRlZmluZWQoR0RLX1dJTkRPV0lO
R19XQVlMQU5EKSAmJiBVU0UoRUdMKQorICAgIC8vIElmIHdlIGFyZSBydW5uaW5nIG9uIFdheWxh
bmQsIGRvbid0IGV2ZW4gdHJ5IHRvIGNyZWF0ZSBhIEdMWCBjb250ZXh0LgorICAgIGlmIChHREtf
SVNfV0FZTEFORF9ESVNQTEFZKGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxh
eShnZGtfZGlzcGxheV9tYW5hZ2VyX2dldCgpKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZWdsQ29u
dGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoc2hhcmluZ0NvbnRleHQp
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZShlZ2xDb250ZXh0KTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogI2VuZGlmCiAKICNpZiBVU0UoR0xYKQorICAgIC8vIElmIHdl
IGNhbm5vdCBjcmVhdGUgYSBHTFggY29udGV4dCwgZmFsbCBiYWNrIHRvIGNyZWF0aW5nIGFuIEVH
TCBvbmUuCiAgICAgaWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29u
dGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIFdURjo6
bW92ZShnbHhDb250ZXh0KTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdM
KQorICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRl
eHQod2luZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6Om1v
dmUoZWdsQ29udGV4dCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKKwogI2lmIFVTRShF
R0wpCiAgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4
dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bW92
ZShlZ2xDb250ZXh0KTsKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIyLDEwICsyMiwxOCBAQAogI2lmIFVTRShFR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8u
aD4KKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorLy8gY2Fpcm8tZ2wuaCBpbmNs
dWRlcyBzb21lIGRlZmluaXRpb25zIGZyb20gR0xYIHRoYXQgY29uZmxpY3Qgd2l0aAorLy8gdGhl
IG9uZXMgcHJvdmlkZWQgYnkgdXMuIFNpbmNlIEdMQ29udGV4dEVHTCBkb2Vzbid0IHVzZSBhbnkg
R0xYCisvLyBmdW5jdGlvbnMgd2UgY2FuIHNhZmVseSBkaXNhYmxlIHRoZW0uCisjdW5kZWYgQ0FJ
Uk9fSEFTX0dMWF9GVU5DVElPTlMKKyNpbmNsdWRlIDxjYWlyby1nbC5oPgorI2VuZGlmCiAjZW5k
aWYKIAogI2lmIFVTRShPUEVOR0xfRVNfMikKQEAgLTQyLDE3NyArNTAsODUgQEAKICNlbmRpZgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotLy8gY2Fpcm8tZ2wu
aCBpbmNsdWRlcyBzb21lIGRlZmluaXRpb25zIGZyb20gR0xYIHRoYXQgY29uZmxpY3Qgd2l0aAot
Ly8gdGhlIG9uZXMgcHJvdmlkZWQgYnkgdXMuIFNpbmNlIEdMQ29udGV4dEVHTCBkb2Vzbid0IHVz
ZSBhbnkgR0xYCi0vLyBmdW5jdGlvbnMgd2UgY2FuIHNhZmVseSBkaXNhYmxlIHRoZW0uCi0jdW5k
ZWYgQ0FJUk9fSEFTX0dMWF9GVU5DVElPTlMKLSNpbmNsdWRlIDxjYWlyby1nbC5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEVHTERpc3BsYXkgZ1NoYXJlZEVHTERp
c3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLQotI2lmIFVTRShPUEVOR0xfRVNfMikKLXN0YXRpYyBj
b25zdCBFR0xlbnVtIGdHTEFQSSA9IEVHTF9PUEVOR0xfRVNfQVBJOwotI2Vsc2UKLXN0YXRpYyBj
b25zdCBFR0xlbnVtIGdHTEFQSSA9IEVHTF9PUEVOR0xfQVBJOwotI2VuZGlmCi0KLXN0YXRpYyBF
R0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkoKQorRUdMZW51bSBHTENvbnRleHRFR0w6OmdsQVBJ
KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIGlmICghaW5p
dGlhbGl6ZWQpIHsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotI2lmIFBMQVRGT1JNKEdU
SykgJiYgUExBVEZPUk0oV0FZTEFORCkgJiYgIWRlZmluZWQoR1RLX0FQSV9WRVJTSU9OXzIpCi0g
ICAgICAgIGlmIChnZXREaXNwbGF5U3lzdGVtVHlwZSgpID09IERpc3BsYXlTeXN0ZW1UeXBlOjpX
YXlsYW5kICYmIFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgpKQotICAgICAgICAgICAgZ1NoYXJl
ZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgpLT5u
YXRpdmVEaXNwbGF5KCkpOwotICAgICAgICBlbHNlIC8vIE5vdGUgdGhhdCB0aGlzIGJyYW5jaCBj
b250aW51dGVzIG91dHNpZGUgdGhpcyAjaWYtZ3VhcmRlZCBzZWdtZW50LgotI2VuZGlmCi0jaWYg
UExBVEZPUk0oWDExKQotICAgICAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNw
bGF5KEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpKTsKKyNpZiBVU0UoT1BFTkdMX0VTXzIp
CisgICAgcmV0dXJuIEVHTF9PUEVOR0xfRVNfQVBJOwogI2Vsc2UKLSAgICAgICAgICAgIGdTaGFy
ZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICBy
ZXR1cm4gRUdMX09QRU5HTF9BUEk7CiAjZW5kaWYKLSAgICAgICAgaWYgKGdTaGFyZWRFR0xEaXNw
bGF5ICE9IEVHTF9OT19ESVNQTEFZICYmICghZWdsSW5pdGlhbGl6ZShnU2hhcmVkRUdMRGlzcGxh
eSwgMCwgMCkgfHwgIWVnbEJpbmRBUEkoZ0dMQVBJKSkpCi0gICAgICAgICAgICBnU2hhcmVkRUdM
RGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgIH0KLSAgICByZXR1cm4gZ1NoYXJlZEVHTERp
c3BsYXk7CiB9CiAKLXN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7
Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAy
LAotI2VuZGlmCi0gICAgRUdMX05PTkUKLX07Ci0KLXN0YXRpYyBib29sIGdldEVHTENvbmZpZyhF
R0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlw
ZSkKK0VHTGludCogR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpCiB7Ci0gICAgRUdM
aW50IGF0dHJpYnV0ZUxpc3RbXSA9IHsKKyAgICBzdGF0aWMgRUdMaW50IGNvbnRleHRBdHRyaWJ1
dGVzW10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQotICAgICAgICBFR0xfUkVOREVSQUJMRV9U
WVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0jZWxzZQotICAgICAgICBFR0xfUkVOREVSQUJMRV9U
WVBFLCBFR0xfT1BFTkdMX0JJVCwKKyAgICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04s
IDIsCiAjZW5kaWYKLSAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAgICAgICBFR0xfR1JFRU5f
U0laRSwgOCwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKLSAgICAgICAgRUdMX1NURU5DSUxf
U0laRSwgOCwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCi0gICAgICAgIEVHTF9TVVJGQUNF
X1RZUEUsIEVHTF9OT05FLAogICAgICAgICBFR0xfTk9ORQogICAgIH07Ci0KLSAgICBzd2l0Y2gg
KHN1cmZhY2VUeXBlKSB7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJmYWNlOgot
ICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6Ci0gICAgICAgIGF0dHJp
YnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
R0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgotICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9
IEVHTF9XSU5ET1dfQklUOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBFR0xpbnQgbnVt
YmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRUdM
RGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJu
ZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0
ZXM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xDb250ZXh0KiBz
aGFyaW5nQ29udGV4dCkKK3N0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZERpc3BsYXkoKQogewotICAg
IEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19j
YXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLQotICAg
IEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAoZGlzcGxh
eSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xD
b25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25maWcsIFdpbmRvd1N1cmZh
Y2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBlZ2xTaGFyaW5nQ29udGV4dCwgZ0Nv
bnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgc3RhdGljIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlz
cGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFs
c2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7
CiAKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3Bs
YXksIGNvbmZpZywgd2luZG93LCAwKTsKLSAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFD
RSkgewotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNw
bGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBpZiAoc2hhcmVkRUdMRGlzcGxheSAh
PSBFR0xfTk9fRElTUExBWSAmJiAoIWVnbEluaXRpYWxpemUoc2hhcmVkRUdMRGlzcGxheSwgMCwg
MCkgfHwgIWVnbEJpbmRBUEkoR0xDb250ZXh0RUdMOjpnbEFQSSgpKSkpCisgICAgICAgICAgICBz
aGFyZWRFR0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJm
YWNlKTsKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250
ZXh0IHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0
RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgR0xOYXRpdmVXaW5k
b3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBF
R0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkg
PT0gRUdMX05PX0RJU1BMQVkpCisgICAgaWYgKCFuYXRpdmVXaW5kb3cpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZp
ZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCisgICAgRUdMQ29uZmlnIGVnbENvbmZpZzsKKyAg
ICBpZiAoR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoZGlzcGxheSwgJmVnbENvbmZpZywgR0xD
b250ZXh0RUdMOjpXaW5kb3dCYXNlZCkgIT0gRUdMX1RSVUUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5
LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOworICAgIEVHTENv
bnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgZWdsQ29uZmlnLCBzaGFy
aW5nQ29udGV4dCwgR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpKTsKICAgICBpZiAo
Y29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBzdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEVHTF9XSURUSCwgMSwg
RUdMX0hFSUdIVCwgMSwgRUdMX05PTkUgfTsKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xD
cmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsK
KyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXks
IGVnbENvbmZpZywgbmF0aXZlV2luZG93LCAwKTsKICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9f
U1VSRkFDRSkgewogICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R0xDb250ZXh0RUdMPihjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSk7Cisg
ICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2Us
IEdMQ29udGV4dEVHTDo6V2luZG93QmFzZWQpOwogfQogCi0jaWYgUExBVEZPUk0oWDExKQotc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250
ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
PiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdp
bmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBFR0xEaXNwbGF5IGRpc3Bs
YXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVk
RGlzcGxheSgpOwogICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xD
b25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdM
QVBJKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0
ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29u
dGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTGludCBkZXB0aDsKLSAgICBpZiAoIWVnbEdl
dENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgpKSB7
Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1h
cChzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KHNoYXJlZFgxMURpc3BsYXko
KSksIDEsIDEsIGRlcHRoKTsKLSAgICBpZiAoIXBpeG1hcCkgewotICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNw
bGF5LCBjb25maWcsIHBpeG1hcCwgMCk7Ci0gICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZB
Q0UpIHsKLSAgICAgICAgWEZyZWVQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBwaXhtYXApOwot
ICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBz
aGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0
KS0+bV9jb250ZXh0IDogMDsKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlV2luZG93Q29u
dGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1
cm4gV1RGOjptb3ZlKGNvbnRleHQpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xD
b250ZXh0RUdMPihjb250ZXh0LCBzdXJmYWNlLCBwaXhtYXApOworICAgIHJldHVybiBudWxscHRy
OwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorYm9vbCBHTENvbnRleHRFR0w6OmluaXRp
YWxpemVPcGVuR0xBUEkoKQogewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7
CiAgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgaWYgKCFpbml0aWFsaXplZCkg
ewpAQCAtMjIxLDM0ICsxMzcsNDMgQEAKICNlbmRpZgogICAgICAgICBpbml0aWFsaXplZCA9IHRy
dWU7CiAgICAgfQotICAgIGlmICghc3VjY2VzcykKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwor
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVy
Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7
CisgICAgQVNTRVJUKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOworCisgICAgRUdMQ29uZmln
IGVnbENvbmZpZzsKKyAgICBpZiAoY2hvb3NlQ29uZmlnKGRpc3BsYXksICZlZ2xDb25maWcsIFBi
dWZmZXJCYXNlZCkgIT0gRUdMX1RSVUUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
RUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nh
c3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwotICAgIGF1
dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5n
Q29udGV4dCkgOiBudWxscHRyOwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0
KTsKLSNlbmRpZgotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBi
dWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICBFR0xDb250ZXh0IGNvbnRleHQg
PSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVnbENvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNv
bnRleHRBdHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXVEY6Om1vdmUoY29udGV4dCk7
Ci19CisgICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBFR0xfV0lE
VEgsIDEsIEVHTF9IRUlHSFQsIDEsIEVHTF9OT05FIH07CisgICAgRUdMU3VyZmFjZSBzdXJmYWNl
ID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgZWdsQ29uZmlnLCBwYnVmZmVyQXR0
cmlidXRlcyk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAg
ZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250
ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwg
Y29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlckJhc2VkKTsKKyB9CisKK0dMQ29udGV4dEVHTDo6R0xD
b250ZXh0RUdMKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJm
YWNlIHN1cmZhY2UsIENvbnRleHRUeXBlIGNvbnRleHRUeXBlKQorICAgIDogbV9kaXNwbGF5KGRp
c3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNl
KQotICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX3R5cGUoY29udGV4dFR5cGUpCiB7Ci0gICAg
QVNTRVJUKHR5cGUgIT0gUGl4bWFwU3VyZmFjZSk7CiB9CiAKICNpZiBQTEFURk9STShYMTEpCiBH
TENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgUGl4bWFwIHBpeG1hcCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9zdXJmYWNlKHN1cmZhY2UpCi0gICAgLCBtX3R5cGUoUGl4bWFwU3VyZmFjZSkKICAgICAsIG1f
cGl4bWFwKHBpeG1hcCkKIHsKIH0KQEAgLTI2MSwxNSArMTg2LDE2IEBACiAgICAgICAgIGNhaXJv
X2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogI2VuZGlmCiAKLSAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKG1fY29udGV4dCkgewotICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGVnbE1h
a2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05P
X0NPTlRFWFQpOwotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQp
OwotICAgIH0KKyAgICBpZiAobV9kaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKSB7CisgICAgICAg
IGlmIChtX2NvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpIHsKKyAgICAgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgICAgIGVnbE1ha2VDdXJyZW50
KG1fZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVY
VCk7CisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dCk7
CisgICAgICAgIH0KIAotICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgIGVnbERlc3Ryb3lTdXJm
YWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgIGlmIChtX3N1cmZhY2UgIT0gRUdMX05P
X1NVUkZBQ0UpCisgICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtX2Rpc3BsYXksIG1fc3Vy
ZmFjZSk7CisgICAgfQogCiAjaWYgUExBVEZPUk0oWDExKQogICAgIGlmIChtX3BpeG1hcCkKQEAg
LTI3OSw3ICsyMDUsNyBAQAogCiBib29sIEdMQ29udGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0
RnJhbWVidWZmZXIoKQogewotICAgIHJldHVybiBtX3R5cGUgPT0gV2luZG93U3VyZmFjZTsKKyAg
ICByZXR1cm4gbV90eXBlID09IFdpbmRvd0Jhc2VkOwogfQogCiBJbnRTaXplIEdMQ29udGV4dEVH
TDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCkBAIC0yODgsOCArMjE0LDggQEAKICAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKIAogICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0OwotICAgIGlmICgh
ZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfV0lEVEgs
ICZ3aWR0aCkKLSAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xEaXNwbGF5KCks
IG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCisgICAgaWYgKCFlZ2xRdWVyeVN1cmZh
Y2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAgICAgICB8fCAh
ZWdsUXVlcnlTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0
KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJbnRTaXplKHdpZHRo
LCBoZWlnaHQpOwpAQCAtMjk3LDE5ICsyMjMsMTcgQEAKIAogYm9vbCBHTENvbnRleHRFR0w6Om1h
a2VDb250ZXh0Q3VycmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dCAmJiBtX3N1cmZhY2Up
OwotCiAgICAgR0xDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAoZWdsR2V0
Q3VycmVudENvbnRleHQoKSA9PSBtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBt
X3N1cmZhY2UsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxh
eSwgbV9zdXJmYWNlLCBtX3N1cmZhY2UsIG1fY29udGV4dCk7CiB9CiAKIHZvaWQgR0xDb250ZXh0
RUdMOjpzd2FwQnVmZmVycygpCiB7Ci0gICAgQVNTRVJUKG1fc3VyZmFjZSk7Ci0gICAgZWdsU3dh
cEJ1ZmZlcnMoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UpOworICAgIGlmIChtX3N1cmZh
Y2UpCisgICAgICAgIGVnbFN3YXBCdWZmZXJzKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKIH0KIAog
dm9pZCBHTENvbnRleHRFR0w6OndhaXROYXRpdmUoKQpAQCAtMzI0LDcgKzI0OCw3IEBACiAgICAg
ICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVk
RUdMRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xf
ZGV2aWNlX2NyZWF0ZShtX2Rpc3BsYXksIG1fY29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVy
biBtX2NhaXJvRGV2aWNlOwpAQCAtMzM4LDYgKzI2Miw0NCBAQAogfQogI2VuZGlmCiAKK0VHTEJv
b2xlYW4gR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xD
b25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKK3sK
KyAgICBBU1NFUlQoZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSk7CisKKyAgICBFR0xpbnQgYXR0
cmlidXRlTGlzdFtdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICAgICAgRUdMX1JFTkRF
UkFCTEVfVFlQRSwgRUdMX09QRU5HTF9FUzJfQklULAorI2Vsc2UKKyAgICAgICAgRUdMX1JFTkRF
UkFCTEVfVFlQRSwgRUdMX09QRU5HTF9CSVQsCisjZW5kaWYKKyAgICAgICAgRUdMX1JFRF9TSVpF
LCA4LAorICAgICAgICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwg
OCwKKyAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUs
IDgsCisgICAgICAgIEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9OT05FLAorICAgICAgICBFR0xfTk9O
RQorICAgIH07CisKKyAgICBzd2l0Y2ggKGNvbnRleHRUeXBlKSB7CisgICAgY2FzZSBQYnVmZmVy
QmFzZWQ6CisgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BCVUZGRVJfQklUOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBpeG1hcEJhc2VkOgorICAgICAgICBhdHRyaWJ1dGVMaXN0
WzEzXSA9IEVHTF9QSVhNQVBfQklUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpbmRvd0Jh
c2VkOgorICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9XSU5ET1dfQklUOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN1cmZhY2VsZXNzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBFR0xpbnQgbnVt
YmVyQ29uZmlnc1JldHVybmVkOworICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoZGlzcGxheSwg
YXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1i
ZXJDb25maWdzUmV0dXJuZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFVTRShFR0wpCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmgKQEAgLTI1LDYgKzI1LDE0IEBACiAjaW5jbHVkZSAiR0xDb250ZXh0Lmgi
CiAjaW5jbHVkZSA8RUdML2VnbC5oPgogCit0eXBlZGVmIHVuc2lnbmVkIEVHTEJvb2xlYW47Cit0
eXBlZGVmIHZvaWQqIEVHTENvbmZpZzsKK3R5cGVkZWYgdm9pZCogRUdMQ29udGV4dDsKK3R5cGVk
ZWYgdm9pZCogRUdMRGlzcGxheTsKK3R5cGVkZWYgdm9pZCogRUdMU3VyZmFjZTsKK3R5cGVkZWYg
dW5zaWduZWQgRUdMZW51bTsKK3R5cGVkZWYga2hyb25vc19pbnQzMl90IEVHTGludDsKKwogI2lm
IFBMQVRGT1JNKFgxMSkKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7CiAjZW5kaWYKQEAg
LTM0LDExICs0MiwzMiBAQAogY2xhc3MgR0xDb250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBl
bnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZlclN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1h
cFN1cmZhY2UgfTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3Jl
YXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0
ID0gMCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdp
bmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4
dCk7CisgICAgZW51bSBDb250ZXh0VHlwZSB7CisgICAgICAgIFdpbmRvd0Jhc2VkLAorICAgICAg
ICBQYnVmZmVyQmFzZWQsCisgICAgICAgIFBpeG1hcEJhc2VkLAorICAgICAgICBTdXJmYWNlbGVz
cywKKyAgICB9OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNy
ZWF0ZShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBDb250ZXh0VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R0xDb250ZXh0RUdMPihkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCB0eXBlKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlQ29u
dGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVXaW5kb3dDb250ZXh0KEVH
TERpc3BsYXkgZGlzcGxheSwgR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCk7CisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlV2F5bGFuZENvbnRleHQoR0xDb250ZXh0
KiBzaGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShYMTEpCisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVgxMUNvbnRleHQoR0xOYXRpdmVXaW5k
b3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgogCi0gICAgR0xDb250
ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKKyAgICBzdGF0
aWMgRUdMQm9vbGVhbiBjaG9vc2VDb25maWcoRUdMRGlzcGxheSwgRUdMQ29uZmlnKiwgQ29udGV4
dFR5cGUpOworICAgIHN0YXRpYyBFR0xlbnVtIGdsQVBJKCk7CisgICAgc3RhdGljIEVHTGludCog
Y29udGV4dEF0dHJpYnV0ZXMoKTsKKworICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xT
dXJmYWNlLCBFR0xTdXJmYWNlLCBDb250ZXh0VHlwZSk7CiAjaWYgUExBVEZPUk0oWDExKQogICAg
IEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBQaXhtYXApOwogI2VuZGlmCkBA
IC01NywxNyArODYsMTUgQEAKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCk7Ci0jZW5kaWYKLQorICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVPcGVuR0xBUEko
KTsKICAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVDb250ZXh0KEdMQ29udGV4dEVHTCopOwogICAg
IHN0YXRpYyB2b2lkIGNsZWFudXBTaGFyZWRFR0xEaXNwbGF5KHZvaWQpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xEaXNw
bGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKIAorICAgIEVHTERpc3BsYXkgbV9kaXNw
bGF5OwogICAgIEVHTENvbnRleHQgbV9jb250ZXh0OwogICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNl
OwotICAgIEVHTFN1cmZhY2VUeXBlIG1fdHlwZTsKKyAgICBDb250ZXh0VHlwZSBtX3R5cGU7CiAj
aWYgUExBVEZPUk0oWDExKQogICAgIFBpeG1hcCBtX3BpeG1hcDsKICNlbmRpZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xXYXlsYW5kLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYg
UExBVEZPUk0oV0FZTEFORCkKKworI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8
RUdML2VnbC5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNp
ZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfV0FZTEFORCkKKyNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFu
ZC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRUdM
RGlzcGxheSBzaGFyZWRXYXlsYW5kRGlzcGxheSgpCit7CisgICAgc3RhdGljIEVHTERpc3BsYXkg
c2hhcmVkRUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkID0gZmFsc2U7CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4gc2hh
cmVkRUdMRGlzcGxheTsKKworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworI2lmIFBMQVRGT1JN
KEdUSykgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dBWUxBTkQpCisgICAgR2RrRGlzcGxheSog
ZGlzcGxheSA9IGdka19kaXNwbGF5X21hbmFnZXJfZ2V0X2RlZmF1bHRfZGlzcGxheShnZGtfZGlz
cGxheV9tYW5hZ2VyX2dldCgpKTsKKyAgICBBU1NFUlQoR0RLX0lTX1dBWUxBTkRfRElTUExBWShk
aXNwbGF5KSk7CisgICAgc2hhcmVkRUdMRGlzcGxheSA9IGVnbEdldERpc3BsYXkoKEVHTE5hdGl2
ZURpc3BsYXlUeXBlKWdka193YXlsYW5kX2Rpc3BsYXlfZ2V0X3dsX2Rpc3BsYXkoZGlzcGxheSkp
OworI2VuZGlmCisKKyAgICBpZiAoc2hhcmVkRUdMRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSAm
JiAoIWVnbEluaXRpYWxpemUoc2hhcmVkRUdMRGlzcGxheSwgMCwgMCkgfHwgIWVnbEJpbmRBUEko
R0xDb250ZXh0RUdMOjpnbEFQSSgpKSkpCisgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBFR0xf
Tk9fRElTUExBWTsKKyAgICByZXR1cm4gc2hhcmVkRUdMRGlzcGxheTsKK30KKworc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChHTENv
bnRleHQqIHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJl
ZFdheWxhbmREaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMQVBJKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFzdHJzdHIoZWdsUXVlcnlTdHJp
bmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0
IikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVn
bENyZWF0ZUNvbnRleHQoZGlzcGxheSwgMCwgZWdsU2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRy
aWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5
LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0xYMTEuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVH
TCkgJiYgUExBVEZPUk0oWDExKQorCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSA8
RUdML2VnbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBFR0xEaXNwbGF5IHNo
YXJlZFgxMUVHTERpc3BsYXkoKQoreworICAgIHN0YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERp
c3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZh
bHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OworCisgICAgICAgIHNoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEdMQ29udGV4dDo6
c2hhcmVkWDExRGlzcGxheSgpKTsKKyAgICAgICAgaWYgKHNoYXJlZEVHTERpc3BsYXkgIT0gRUdM
X05PX0RJU1BMQVkgJiYgKCFlZ2xJbml0aWFsaXplKHNoYXJlZEVHTERpc3BsYXksIDAsIDApIHx8
ICFlZ2xCaW5kQVBJKEdMQ29udGV4dEVHTDo6Z2xBUEkoKSkpKQorICAgICAgICAgICAgc2hhcmVk
RUdMRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAgIH0KKworICAgIHJldHVybiBzaGFyZWRF
R0xEaXNwbGF5OworfQorCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRl
V2luZG93Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0aXZlV2luZG93VHlwZSBuYXRp
dmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgaWYgKCFuYXRpdmVX
aW5kb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMQ29uZmlnIGVnbENvbmZp
ZzsKKyAgICBpZiAoR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoZGlzcGxheSwgJmVnbENvbmZp
ZywgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCkgIT0gRUdMX1RSVUUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCBlZ2xDb25maWcsIHNoYXJpbmdDb250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRB
dHRyaWJ1dGVzKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdp
bmRvd1N1cmZhY2UoZGlzcGxheSwgZWdsQ29uZmlnLCBuYXRpdmVXaW5kb3csIDApOworICAgIGlm
IChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0
KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwg
R0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCk7Cit9CisKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0PiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xDb25maWcgZWdsQ29uZmlnOworICAgIGlm
IChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmZWdsQ29uZmlnLCBHTENvbnRl
eHRFR0w6OlBpeG1hcEJhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGVn
bENvbmZpZywgc2hhcmluZ0NvbnRleHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMo
KSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgRUdMaW50IGRlcHRoOworICAgIGlmIChlZ2xHZXRDb25maWdBdHRyaWIo
ZGlzcGxheSwgZWdsQ29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSAhPSBFR0xfVFJVRSkg
eworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXht
YXAoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3Bs
YXkpLCAxLCAxLCBkZXB0aCk7CisgICAgaWYgKCFwaXhtYXApIHsKKyAgICAgICAgZWdsRGVzdHJv
eUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlz
cGxheSwgZWdsQ29uZmlnLCBwaXhtYXAsIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gR0xDb250ZXh0RUdM
OjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpQaXhtYXBC
YXNlZCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dEVHTDo6Y3Jl
YXRlWDExQ29udGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZFgxMUVH
TERpc3BsYXkoKTsKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xBUEkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0g
c2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4
dCktPm1fY29udGV4dCA6IDA7CisgICAgaWYgKGF1dG8gY29udGV4dCA9IGNyZWF0ZVdpbmRvd0Nv
bnRleHQoZGlzcGxheSwgbmF0aXZlV2luZG93LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAg
IHJldHVybiBXVEY6Om1vdmUoY29udGV4dCk7CisgICAgaWYgKGF1dG8gY29udGV4dCA9IGNyZWF0
ZVBidWZmZXJDb250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGl4
bWFwQ29udGV4dChkaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBX
VEY6Om1vdmUoY29udGV4dCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZPUk0oWDExKQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmREaXNwbGF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxh
bmREaXNwbGF5LmNwcApAQCAtMTMxLDEyICsxMzEsMTQgQEAKICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXYXlsYW5kU3VyZmFjZT4od2xTdXJmYWNlLCBuYXRpdmVXaW5kb3cpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU2hhcmlu
Z0dMQ29udGV4dCgpCisjaWYgMAorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gV2F5bGFuZERp
c3BsYXk6OmNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKQogewogICAgIHN0cnVjdCB3bF9zdXJmYWNl
KiB3bFN1cmZhY2UgPSB3bF9jb21wb3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7
CiAgICAgRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2Ny
ZWF0ZSh3bFN1cmZhY2UsIDEsIDEpOwotICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZVdp
bmRvd0NvbnRleHQobmF0aXZlV2luZG93LCBudWxscHRyKTsKKyAgICByZXR1cm4gR0xDb250ZXh0
RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG1fZWdsRGlzcGxheSwgbmF0aXZlV2luZG93LCBudWxs
cHRyKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRGlzcGxheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3BsYXku
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAorI2luY2x1ZGUg
IkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYktpdEd0a1dheWxhbmRDbGllbnRQcm90b2NvbC5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgpAQCAtNTAs
NyArNTEsNyBAQAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVT
dXJmYWNlKGNvbnN0IEludFNpemUmLCBpbnQgd2lkZ2V0SUQpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOworICAgIC8vc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOwogCiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgbV9yZWdpc3Ry
eUxpc3RlbmVyOwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmRTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcApAQCAtNjYsMTAgKzY2LDEyIEBACiAgICAgd2xf
ZWdsX3dpbmRvd19yZXNpemUobV9uYXRpdmVXaW5kb3csIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgMCwgMCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IFdheWxhbmRT
dXJmYWNlOjpjcmVhdGVHTENvbnRleHQoKQorI2lmIDAKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHQ+IFdheWxhbmRTdXJmYWNlOjpjcmVhdGVHTENvbnRleHQoKQogewotICAgIHJldHVybiBHTENv
bnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQobV9uYXRpdmVXaW5kb3csIEdMQ29udGV4dDo6
c2hhcmluZ0NvbnRleHQoKSk7CisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93
Q29udGV4dChXYXlsYW5kRGlzcGxheTo6aW5zdGFuY2UoKS0+ZWdsRGlzcGxheSgpLCBtX25hdGl2
ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKIH0KKyNlbmRpZgogCiB2b2lk
IFdheWxhbmRTdXJmYWNlOjpyZXF1ZXN0RnJhbWUoKQogewotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShXQVlMQU5EKQogCisjaW5jbHVkZSAiR0xDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KIAogI2luY2x1ZGUgPHdheWxhbmQtZWds
Lmg+CkBAIC00OCw3ICs0OSw3IEBACiAKICAgICB2b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJik7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVHTENvbnRleHQoKTsK
KyAgICAvL3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZUdMQ29udGV4dCgpOwogCiAg
ICAgdm9pZCByZXF1ZXN0RnJhbWUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256005</attachid>
            <date>2015-07-02 05:38:08 -0700</date>
            <delta_ts>2015-12-07 08:51:56 -0800</delta_ts>
            <desc>Patch against git master (commit 27f9f4, svn r186113)</desc>
            <filename>0001-Add-support-for-WebGL-on-Wayland.patch</filename>
            <type>text/plain</type>
            <size>25538</size>
            <attacher name="Emilio Pozuelo Monfort">pochu27</attacher>
            
              <data encoding="base64">RnJvbSBhMmRjNTY1OTI0OWY0ODU5MTM2MTg5NmUwMjg4ZTlmZDA0ZGExYjViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbWlsaW8gUG96dWVsbyBNb25mb3J0IDxlbWlsaW8ucG96dWVs
b0Bjb2xsYWJvcmEuY28udWs+CkRhdGU6IFdlZCwgMSBKdWwgMjAxNSAxNTo1Mjo0MiArMDIwMApT
dWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBXZWJHTCBvbiBXYXlsYW5kCgotLS0KIFNv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAgICAgICAgICAgICAgIHwgICAyICsK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgICAgIHwgICA3
ICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCB8
IDE3OCArKysrKysrKystLS0tLS0tLS0tLS0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuaCAgIHwgIDQyICsrKy0tCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwICB8ICA1MyArKysrKysKIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcCAgICAgIHwgIDg1ICsrKysrKysrKysKIC4u
Li9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwICAgIHwgICA0ICst
CiAuLi4vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmggICAgICB8ICAg
MyArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwICAg
fCAgIDQgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgg
ICAgIHwgICAzICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygrKSwgMTE4IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiZmVmM2Q2Li5mNjlhZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtOTAsNiArOTAsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcAogCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCBmNjIxNDAzLi43ZTJiYTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRG
b3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiB7CiAjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYg
VVNFKEVHTCkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewotICAgICAgICBpZiAoYXV0byBl
Z2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hh
cmluZ0NvbnRleHQpKQorICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdM
OjpjcmVhdGVXYXlsYW5kQ29udGV4dChzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgICAgICByZXR1
cm4gV1RGOjptb3ZlKGVnbENvbnRleHQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0xMzEsNiArMTMxLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4
dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUKICAgICBpZiAoYXV0
byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdMWFdpbmRvd0hhbmRs
ZSwgc2hhcmluZ0NvbnRleHQpKQogICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGdseENvbnRleHQp
OwogI2VuZGlmCisjaWYgMCAvLyBYWFggUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKQorICAgIGlm
IChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQod2luZG93
SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6Om1vdmUoZWdsQ29u
dGV4dCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKICNpZiBVU0UoRUdMKQogICAgIGlm
IChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFu
ZGxlLCBzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoZWdsQ29udGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuY3BwCmluZGV4IDA4N2Q5YmYuLmE2NmVlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0zNSwx
MSArMzUsNyBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKFgxMSkKLSNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKLSNpbmNsdWRlIDxYMTEv
WGxpYi5oPgotI2VuZGlmCi0KKy8vIFhYWCBtb3ZlIGluc2lkZSBpZiBVU0UoQ0FJUk8pID8KICNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogLy8gY2Fpcm8tZ2wuaCBpbmNsdWRlcyBz
b21lIGRlZmluaXRpb25zIGZyb20gR0xYIHRoYXQgY29uZmxpY3Qgd2l0aAogLy8gdGhlIG9uZXMg
cHJvdmlkZWQgYnkgdXMuIFNpbmNlIEdMQ29udGV4dEVHTCBkb2Vzbid0IHVzZSBhbnkgR0xYCkBA
IC01MCwxOSArNDYsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitFR0xlbnVtIEdMQ29u
dGV4dEVHTDo6Z2xBUEkoKQoreworI2lmIFVTRShPUEVOR0xfRVNfMikKKyAgICByZXR1cm4gRUdM
X09QRU5HTF9FU19BUEk7CisjZWxzZQorICAgIHJldHVybiBFR0xfT1BFTkdMX0FQSTsKKyNlbmRp
ZgorfQorCiBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpOwogfQogCi1z
dGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRlc1tdID0geworRUdMaW50KiBHTENv
bnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkKK3sKKyAgICBzdGF0aWMgRUdMaW50IGNvbnRl
eHRBdHRyaWJ1dGVzW10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQotICAgIEVHTF9DT05URVhU
X0NMSUVOVF9WRVJTSU9OLCAyLAorICAgICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwg
MiwKICNlbmRpZgotICAgIEVHTF9OT05FCi19OworICAgICAgICBFR0xfTk9ORQorICAgIH07CiAK
LXN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdM
OjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSkKKyAgICByZXR1cm4gY29udGV4dEF0dHJpYnV0
ZXM7Cit9CisKK0VHTEJvb2xlYW4gR0xDb250ZXh0RUdMOjpjaG9vc2VDb25maWcoRUdMRGlzcGxh
eSBkaXNwbGF5LCBFR0xDb25maWcqIGNvbmZpZywgR0xDb250ZXh0RUdMOjpDb250ZXh0VHlwZSBj
b250ZXh0VHlwZSkKIHsKICAgICBFR0xpbnQgYXR0cmlidXRlTGlzdFtdID0gewogI2lmIFVTRShP
UEVOR0xfRVNfMikKQEAgLTc5LDM1ICs4OSwzNSBAQCBzdGF0aWMgYm9vbCBnZXRFR0xDb25maWco
RUdMQ29uZmlnKiBjb25maWcsIEdMQ29udGV4dEVHTDo6RUdMU3VyZmFjZVR5cGUgc3VyZmFjZQog
ICAgICAgICBFR0xfTk9ORQogICAgIH07CiAKLSAgICBzd2l0Y2ggKHN1cmZhY2VUeXBlKSB7Ci0g
ICAgY2FzZSBHTENvbnRleHRFR0w6OlBidWZmZXJTdXJmYWNlOgorICAgIHN3aXRjaCAoY29udGV4
dFR5cGUpIHsKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1ZmZlckJhc2VkOgogICAgICAgICBh
dHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QQlVGRkVSX0JJVDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBHTENvbnRleHRFR0w6OlBpeG1hcFN1cmZhY2U6CisgICAgY2FzZSBHTENvbnRleHRFR0w6
OlBpeG1hcEJhc2VkOgogICAgICAgICBhdHRyaWJ1dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklU
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6V2luZG93U3VyZmFjZToK
KyAgICBjYXNlIEdMQ29udGV4dEVHTDo6V2luZG93QmFzZWQ6CiAgICAgICAgIGF0dHJpYnV0ZUxp
c3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7CiAgICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBjYXNl
IEdMQ29udGV4dEVHTDo6U3VyZmFjZWxlc3M6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworfQogCiAgICAgRUdMaW50IG51bWJlckNvbmZp
Z3NSZXR1cm5lZDsKLSAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKHNoYXJlZEVHTERpc3BsYXko
KSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBu
dW1iZXJDb25maWdzUmV0dXJuZWQ7CisgICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhkaXNwbGF5
LCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51
bWJlckNvbmZpZ3NSZXR1cm5lZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
R0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwg
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsK
LSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0
aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0K
LSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZp
ZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAgICBpZiAoIWNob29zZUNvbmZpZyhkaXNwbGF5
LCAmY29uZmlnLCBHTENvbnRleHRFR0w6OldpbmRvd0Jhc2VkKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAg
RUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNo
YXJpbmdDb250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkpOwogICAgIGlm
IChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMTE3LDIwICsxMjcsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250
ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1QKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250
ZXh0RUdMPihjb250ZXh0LCBzdXJmYWNlLCBXaW5kb3dTdXJmYWNlKTsKKyAgICByZXR1cm4gR0xD
b250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdM
OjpXaW5kb3dCYXNlZCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkK
K3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZl
ckNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQog
ewotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAo
ZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
QVNTRVJUKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOwogCiAgICAgRUdMQ29uZmlnIGNvbmZp
ZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkpCisgICAg
aWYgKCFjaG9vc2VDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGJ1ZmZlckJhc2VkKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVD
b250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0cmlidXRl
cyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBj
b25maWcsIHNoYXJpbmdDb250ZXh0LCBHTENvbnRleHRFR0w6OmNvbnRleHRBdHRyaWJ1dGVzKCkp
OwogICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTQxLDUyICsxNDksMzMgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXIKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8R0xDb250ZXh0RUdMPihjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyU3VyZmFjZSk7CisgICAg
cmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3BsYXksIGNvbnRleHQsIHN1cmZhY2UsIFBi
dWZmZXJCYXNlZCk7CiB9CiAKLSNpZiBQTEFURk9STShYMTEpCi1zdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dEVHTDo6
Y3JlYXRlQ29udGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KQogewogICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERp
c3BsYXkoKTsKICAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29u
ZmlnKCZjb25maWcsIFBpeG1hcFN1cmZhY2UpKQorICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTEFQ
SSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgZ0NvbnRl
eHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xpbnQgZGVwdGg7Ci0gICAgaWYgKCFlZ2xHZXRD
b25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkgewot
ICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRGlzcGxheSogeDExRGlzcGxheSA9IGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpOwotICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5KSwgMSwgMSwgZGVwdGgpOwotICAgIGlm
ICghcGl4bWFwKSB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBFR0xTdXJmYWNlIHN1cmZh
Y2UgPSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcmVpbnRlcnByZXRf
Y2FzdDxFR0xOYXRpdmVQaXhtYXBUeXBlPihwaXhtYXAuZ2V0KCkpLCAwKTsKLSAgICBpZiAoc3Vy
ZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgewotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNw
bGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIEVHTENv
bnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdM
Q29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKKyAgICBpZiAoYXV0
byBjb250ZXh0ID0gY3JlYXRlV2luZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVn
bFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKKyNp
ZiBQTEFURk9STShYMTEpCisgICAgaWYgKGF1dG8gY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRl
eHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjptb3Zl
KGNvbnRleHQpOworI2VuZGlmCisgICAgaWYgKGF1dG8gY29udGV4dCA9IGNyZWF0ZVBidWZmZXJD
b250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bW92ZShjb250ZXh0KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVH
TD4oY29udGV4dCwgc3VyZmFjZSwgV1RGOjptb3ZlKHBpeG1hcCkpOworICAgIHJldHVybiBudWxs
cHRyOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQorYm9vbCBHTENvbnRleHRFR0w6Omlu
aXRpYWxpemVPcGVuR0xBUEkoKQogewotICAgIGlmICghc2hhcmVkRUdMRGlzcGxheSgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFs
c2U7CiAgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgaWYgKCFpbml0aWFsaXpl
ZCkgewpAQCAtMTk1LDM0ICsxODQsMjQgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
R0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2kKICNlbmRp
ZgogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQotICAgIGlmICghc3VjY2VzcykK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250
ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5n
Q29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0gICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3Jl
YXRlV2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7Ci0jaWYg
UExBVEZPUk0oWDExKQotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0
ZVBpeG1hcENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwotI2VuZGlmCi0gICAgaWYgKCFjb250
ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0Nv
bnRleHQpOwotCi0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKKyAgICByZXR1cm4gc3Vj
Y2VzczsKIH0KIAotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMQ29udGV4dCBjb250ZXh0
LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlIHR5cGUpCi0gICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKK0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTERpc3BsYXkgZGlzcGxh
eSwgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIENvbnRleHRUeXBlIGNv
bnRleHRUeXBlKQorICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29u
dGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQotICAgICwgbV90eXBlKHR5cGUpCisgICAg
LCBtX3R5cGUoY29udGV4dFR5cGUpCiB7Ci0gICAgQVNTRVJUKHR5cGUgIT0gUGl4bWFwU3VyZmFj
ZSk7CisgICAgQVNTRVJUKGNvbnRleHRUeXBlICE9IFBpeG1hcEJhc2VkKTsKIH0KIAogI2lmIFBM
QVRGT1JNKFgxMSkKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4
dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwKQotICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xEaXNwbGF5IGRp
c3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBYVW5pcXVlUGl4
bWFwJiYgcGl4bWFwKQorICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQotICAgICwgbV90eXBlKFBpeG1hcFN1
cmZhY2UpCisgICAgLCBtX3R5cGUoUGl4bWFwQmFzZWQpCiAgICAgLCBtX3BpeG1hcChXVEY6Om1v
dmUocGl4bWFwKSkKIHsKIH0KQEAgLTIzNSwyMCArMjE0LDIxIEBAIEdMQ29udGV4dEVHTDo6fkdM
Q29udGV4dEVHTCgpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2Up
OwogI2VuZGlmCiAKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7
Ci0gICAgaWYgKG1fY29udGV4dCkgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgMCk7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJG
QUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOwotICAgIH0KKyAgICBpZiAobV9kaXNwbGF5ICE9
IEVHTF9OT19ESVNQTEFZKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQgIT0gRUdMX05PX0NPTlRF
WFQpIHsKKyAgICAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsK
KyAgICAgICAgICAgIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVH
TF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICBlZ2xEZXN0cm95Q29u
dGV4dChtX2Rpc3BsYXksIG1fY29udGV4dCk7CisgICAgICAgIH0KIAotICAgIGlmIChtX3N1cmZh
Y2UpCi0gICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CisgICAg
ICAgIGlmIChtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgICAgICBlZ2xEZXN0
cm95U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgfQogfQogCiBib29sIEdMQ29u
dGV4dEVHTDo6Y2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewotICAgIHJldHVybiBt
X3R5cGUgPT0gV2luZG93U3VyZmFjZTsKKyAgICByZXR1cm4gbV90eXBlID09IFdpbmRvd0Jhc2Vk
OwogfQogCiBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCkBA
IC0yNTcsOCArMjM3LDggQEAgSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZl
clNpemUoKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgRUdMaW50IHdpZHRoLCBo
ZWlnaHQ7Ci0gICAgaWYgKCFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1
cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQotICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKHNo
YXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KSkKKyAgICBp
ZiAoIWVnbFF1ZXJ5U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lk
dGgpCisgICAgICAgIHx8ICFlZ2xRdWVyeVN1cmZhY2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVH
TF9IRUlHSFQsICZoZWlnaHQpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgcmV0
dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC0yNjYsMTkgKzI0NiwxNyBAQCBJbnRTaXpl
IEdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAKIGJvb2wgR0xDb250ZXh0
RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIEFTU0VSVChtX2NvbnRleHQgJiYgbV9z
dXJmYWNlKTsKLQogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYg
KGVnbEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3Vy
ZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudCht
X2Rpc3BsYXksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdM
Q29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMoKQogewotICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAg
IGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBpZiAo
bV9zdXJmYWNlKQorICAgICAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7
CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKQEAgLTI5Myw3ICsyNzEsNyBA
QCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJl
dHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
LSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdMRGlz
cGxheSgpLCBtX2NvbnRleHQpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNl
X2NyZWF0ZShtX2Rpc3BsYXksIG1fY29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2Nh
aXJvRGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5oCmluZGV4IGQwNGViYmIuLjMwYTRhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTM0LDEz
ICszNCwzNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHTENvbnRleHRFR0wgOiBwdWJs
aWMgR0xDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOwog
cHVibGljOgotICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93
U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBjcmVhdGVDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQgPSAwKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KTsKKyAgICBlbnVtIENvbnRleHRUeXBlIHsKKyAgICAgICAgV2luZG93
QmFzZWQsCisgICAgICAgIFBidWZmZXJCYXNlZCwKKyAgICAgICAgUGl4bWFwQmFzZWQsCisgICAg
ICAgIFN1cmZhY2VsZXNzLAorICAgIH07CiAKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwg
RUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGUoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRl
eHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgQ29udGV4dFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oZGlzcGxheSwgY29udGV4dCwg
c3VyZmFjZSwgdHlwZSk7CisgICAgfQorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IGNyZWF0ZUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJp
bmdDb250ZXh0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gY3JlYXRl
V2luZG93Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEdMTmF0aXZlV2luZG93VHlwZSBuYXRp
dmVXaW5kb3csIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworI2lmIFBMQVRGT1JNKFdBWUxB
TkQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVdheWxhbmRD
b250ZXh0KEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOworI2VuZGlmCiAjaWYgUExBVEZPUk0o
WDExKQotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVlUGl4
bWFwJiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVQaXht
YXBDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVgxMUNvbnRleHQo
R0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgor
CisgICAgc3RhdGljIEVHTEJvb2xlYW4gY2hvb3NlQ29uZmlnKEVHTERpc3BsYXksIEVHTENvbmZp
ZyosIENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgRUdMZW51bSBnbEFQSSgpOworICAgIHN0YXRp
YyBFR0xpbnQqIGNvbnRleHRBdHRyaWJ1dGVzKCk7CisKKyAgICBHTENvbnRleHRFR0woRUdMRGlz
cGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgQ29udGV4dFR5cGUpOworI2lmIFBMQVRGT1JN
KFgxMSkKKyAgICBHTENvbnRleHRFR0woRUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFj
ZSwgWFVuaXF1ZVBpeG1hcCYmKTsKICNlbmRpZgogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgp
OwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTU4LDE3ICs4MCwx
NSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCk7Ci0jaWYgUExBVEZPUk0oWDExKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRl
eHQpOwotI2VuZGlmCi0KKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplT3BlbkdMQVBJKCk7CiAg
ICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRleHRFR0wqKTsKICAgICBzdGF0
aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lkKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMRGlzcGxheSwg
RUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CiAKKyAgICBFR0xEaXNwbGF5IG1fZGlzcGxheTsK
ICAgICBFR0xDb250ZXh0IG1fY29udGV4dDsKICAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKLSAg
ICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7CisgICAgQ29udGV4dFR5cGUgbV90eXBlOwogI2lmIFBM
QVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5
bGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMV2F5bGFuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyMGJl
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZ
TEFORCkKKworI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkK
K3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKS5lZ2xEaXNwbGF5KCk7CisKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xBUEko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXN0cnN0cihlZ2xRdWVyeVN0
cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyksICJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRl
eHQiKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJp
bmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihz
aGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0g
ZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCAwLCBlZ2xTaGFyaW5nQ29udGV4dCwgY29udGV4dEF0
dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlKGRpc3Bs
YXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVzcyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMWDExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xYMTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhODg2
N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMWDExLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNF
KEVHTCkgJiYgUExBVEZPUk0oWDExKQorCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgiCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUg
PFgxMS9YbGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTERpc3BsYXkgZGlz
cGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xDb25maWcgY29uZmln
OworICAgIGlmIChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBH
TENvbnRleHRFR0w6OlBpeG1hcEJhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0
ZXMoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgRUdMaW50IGRlcHRoOworICAgIGlmICghZWdsR2V0Q29uZmlnQXR0
cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCkpIHsKKyAgICAgICAg
ZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIERpc3BsYXkqIHgxMURpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsK
KyAgICBYVW5pcXVlUGl4bWFwIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXAoeDExRGlzcGxheSwgRGVm
YXVsdFJvb3RXaW5kb3coeDExRGlzcGxheSksIDEsIDEsIGRlcHRoKTsKKyAgICBpZiAoIXBpeG1h
cCkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWds
Q3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdM
TmF0aXZlUGl4bWFwVHlwZT4ocGl4bWFwLmdldCgpKSwgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0g
RUdMX05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RG
Ojptb3ZlKHBpeG1hcCkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVgxMUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZVdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisgICAgaWYgKGRp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
aWYgKCFpbml0aWFsaXplT3BlbkdMQVBJKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGlj
X2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOworICAg
IGlmIChhdXRvIGNvbnRleHQgPSBjcmVhdGVXaW5kb3dDb250ZXh0KGRpc3BsYXksIG5hdGl2ZVdp
bmRvdywgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGNvbnRl
eHQpOworICAgIGlmIChhdXRvIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGRpc3BsYXks
IGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsK
KyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWds
U2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGNvbnRleHQpOworCisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdh
eWxhbmQuY3BwCmluZGV4IDRkMGQzMzkuLmFhODg5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmNwcApAQCAtMTI5LDExICsxMjksMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFdh
eWxhbmRTdXJmYWNlPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTdXJmYWNlKGNvbnN0
IEludFMKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXlsYW5kU3VyZmFjZT4od2xTdXJm
YWNlLCBuYXRpdmVXaW5kb3cpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBQ
bGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6OmNyZWF0ZVNoYXJpbmdH
TENvbnRleHQoKQogewogICAgIHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UgPSB3bF9jb21w
b3NpdG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7CiAgICAgRUdMTmF0aXZlV2luZG93
VHlwZSBuYXRpdmVXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UsIDEsIDEp
OwotICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQobmF0aXZlV2lu
ZG93LCBudWxscHRyKTsKKyAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250
ZXh0KG1fZWdsRGlzcGxheSwgbmF0aXZlV2luZG93LCBudWxscHRyKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaAppbmRleCA0Y2M5
MDQ0Li5hNjRiM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuaApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAorI2luY2x1ZGUgIkdMQ29udGV4
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgogI2luY2x1ZGUgIldlYktpdEd0a1dh
eWxhbmRDbGllbnRQcm90b2NvbC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTUwLDcgKzUxLDcg
QEAgcHVibGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVT
dXJmYWNlKGNvbnN0IEludFNpemUmLCBpbnQgd2lkZ2V0SUQpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKTsKIAogcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIG1fcmVnaXN0cnlM
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKaW5kZXggOTcxYWIxOS4uYzEwNDU0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5k
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XYXlsYW5kU3VyZmFjZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBXYXlsYW5kU3VyZmFj
ZTo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgd2xfZWdsX3dpbmRvd19yZXNpemUo
bV9uYXRpdmVXaW5kb3csIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgMCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IFdheWxhbmRTdXJmYWNlOjpjcmVhdGVHTENv
bnRleHQoKQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0
ZUdMQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29u
dGV4dChtX25hdGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICBy
ZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSwgbV9uYXRpdmVXaW5kb3csIEdMQ29udGV4dDo6
c2hhcmluZ0NvbnRleHQoKSk7CiB9CiAKIHZvaWQgV2F5bGFuZFN1cmZhY2U6OnJlcXVlc3RGcmFt
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dheWxhbmRTdXJmYWNlLmgKaW5kZXggNjlmMjJiMS4uNTgxMGMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1
cmZhY2UuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAorI2lu
Y2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+CiAKICNpbmNs
dWRlIDx3YXlsYW5kLWVnbC5oPgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlc2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBjcmVhdGVHTENvbnRleHQoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBj
cmVhdGVHTENvbnRleHQoKTsKIAogICAgIHZvaWQgcmVxdWVzdEZyYW1lKCk7CiAKLS0gCjIuMS40
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266778</attachid>
            <date>2015-12-07 08:56:18 -0800</date>
            <delta_ts>2015-12-08 02:37:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20151207175548.patch</filename>
            <type>text/plain</type>
            <size>24252</size>
            <attacher name="Emilio Pozuelo Monfort">pochu27</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEyZjcyNmE5YWVmMGZk
NDFkNTQzMmYzYzY3Yzg4MjZkNGM0ZDFkMi4uZGRiOTdiMDg5MzM2M2QxZjhmOGI1Y2ZjYzc4YmU0
YjUyZDJhYTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTEyLTA3ICBFbWls
aW8gUG96dWVsbyBNb25mb3J0ICA8ZW1pbGlvLnBvenVlbG9AY29sbGFib3JhLmNvLnVrPgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJHTCBvbiBXYXlsYW5kLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjpjaG9vc2VDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVh
dGVXaW5kb3dDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
UGJ1ZmZlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6aW5pdGlhbGl6ZU9wZW5H
TEFQSSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOgorICAgICAgICAo
V2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0w6OmNhaXJvRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEVH
TENvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0
ZVBpeG1hcENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdh
eWxhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5V2F5bGFuZDo6Y3Jl
YXRlU2hhcmluZ0dMQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9XYXlsYW5kU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXlsYW5kU3VyZmFjZTo6
Y3JlYXRlR0xDb250ZXh0KToKKwogMjAxNS0xMi0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG93IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU1ZH
IHJlbmRlcmVycyBpbiBzaG93TGF5ZXJUcmVlKCkgb3V0cHV0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDhlNzg5MDdkMGIyMWQ4ZTA0YzM4NmEzZTNjNGQ1NDdjMDYwNjUyNjAuLmE5ZDc4
Y2Y3YzYxMWEwYWU4MjMyMmMxNGM0MTIzY2U1ODA2Y2EzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC0xMTYsNiArMTE2LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAKIAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXlsYW5kLmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dM
Q29udGV4dC5jcHAKaW5kZXggZjYyMTQwM2FmZmY4NTRhZGU2MTc1MWQ3ZTFhMDc4OWRhYjcyM2Nl
Mi4uYjliY2E0NGE4Y2U5NjBhYmE2YThmNWJjYjIwN2I3OWRmNjE0MDNmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xMTYsNyArMTE2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0
Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZQogewogI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYm
IFVTRShFR0wpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUo
KSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAgaWYgKGF1dG8g
ZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIHNo
YXJpbmdDb250ZXh0KSkKKyAgICAgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVH
TDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoc2hhcmluZ0NvbnRleHQpKQogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bW92ZShlZ2xDb250ZXh0KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmNwcAppbmRleCBjMDJmZDYzYmY5YzYyYTg0NWNlZjFkNDUwZmExNDk0MWEwY2E5OTMz
Li5iYjhhNmM5ZTk1NTE2ZWMxNGRiMzU4MjBkOTc4OGQxYzBmNzAyZDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApA
QCAtMzUsMTEgKzM1LDYgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShYMTEpCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgiCi0jaW5jbHVk
ZSA8WDExL1hsaWIuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKIC8vIGNhaXJvLWdsLmggaW5jbHVkZXMgc29tZSBkZWZpbml0aW9ucyBmcm9tIEdMWCB0aGF0
IGNvbmZsaWN0IHdpdGgKIC8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHVzLiBTaW5jZSBHTENvbnRl
eHRFR0wgZG9lc24ndCB1c2UgYW55IEdMWApAQCAtNTUsMTQgKzUwLDE5IEBAIHN0YXRpYyBFR0xE
aXNwbGF5IHNoYXJlZEVHTERpc3BsYXkoKQogICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CiB9CiAKLXN0YXRpYyBjb25zdCBFR0xpbnQgZ0Nv
bnRleHRBdHRyaWJ1dGVzW10gPSB7CitFR0xpbnQqIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJp
YnV0ZXMoKQoreworICAgIHN0YXRpYyBFR0xpbnQgY29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisg
ICAgICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLAogI2VuZGlmCi0gICAgRUdMX05P
TkUKLX07CisgICAgICAgIEVHTF9OT05FCisgICAgfTsKIAotc3RhdGljIGJvb2wgZ2V0RUdMQ29u
ZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZh
Y2VUeXBlKQorICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlczsKK30KKworRUdMQm9vbGVhbiBH
TENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyog
Y29uZmlnLCBHTENvbnRleHRFR0w6OkNvbnRleHRUeXBlIGNvbnRleHRUeXBlKQogewogICAgIEVH
TGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtNzksMzUg
Kzc5LDM1IEBAIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xD
b250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlCiAgICAgICAgIEVHTF9OT05FCiAgICAg
fTsKIAotICAgIHN3aXRjaCAoc3VyZmFjZVR5cGUpIHsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6
UGJ1ZmZlclN1cmZhY2U6CisgICAgc3dpdGNoIChjb250ZXh0VHlwZSkgeworICAgIGNhc2UgR0xD
b250ZXh0RUdMOjpQYnVmZmVyQmFzZWQ6CiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdM
X1BCVUZGRVJfQklUOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4
bWFwU3VyZmFjZToKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwQmFzZWQ6CiAgICAgICAg
IGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgorICAgIGNhc2UgR0xDb250ZXh0RUdM
OjpXaW5kb3dCYXNlZDoKICAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJ
VDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlN1cmZhY2VsZXNzOgor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKICAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBl
Z2xDaG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcs
IDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAg
ICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywg
MSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRv
d0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4dERhdGEpCitz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dDo6RGF0YT4m
JiBjb250ZXh0RGF0YSkKIHsKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hh
cmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCkt
Pm1fY29udGV4dCA6IDA7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNw
bGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgaWYgKCF3aW5k
b3cpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAg
ICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAgICBpZiAoIWNo
b29zZUNvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBHTENvbnRleHRFR0w6OldpbmRvd0Jhc2VkKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xD
cmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGdDb250ZXh0
QXR0cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRlcygpKTsKICAg
ICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTExNywyMiArMTE3LDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOwor
ICAgIGF1dG8gZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4
dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCk7CiAgICAgZ2xDb250ZXh0LT5t
X2NvbnRleHREYXRhID0gV1RGOjptb3ZlKGNvbnRleHREYXRhKTsKICAgICByZXR1cm4gZ2xDb250
ZXh0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVH
TERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBFR0xE
aXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CiAgICAgaWYgKGRpc3BsYXkgPT0g
RUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29uZmln
IGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVyU3VyZmFjZSkp
CisgICAgaWYgKCFjaG9vc2VDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGJ1ZmZlckJhc2VkKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xD
cmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0
cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNw
bGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRlcygpKTsKICAgICBp
ZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTE0Myw4OCArMTQyLDU1IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29u
dGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpOworICAgIHJldHVybiBH
TENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBQYnVmZmVyQmFz
ZWQpOwogfQogCi0jaWYgUExBVEZPUk0oWDExKQotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0Nv
bnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0
ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hh
cmluZ0NvbnRleHQpCiB7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxh
eSgpOwogICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWco
JmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
RUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNo
YXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChjb250ZXh0ID09IEVH
TF9OT19DT05URVhUKQorICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTEFQSSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTGludCBkZXB0aDsKLSAgICBpZiAoIWVnbEdldENvbmZp
Z0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgpKSB7Ci0gICAg
ICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZl
KCk7Ci0gICAgWFVuaXF1ZVBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHgxMURpc3BsYXks
IERlZmF1bHRSb290V2luZG93KHgxMURpc3BsYXkpLCAxLCAxLCBkZXB0aCk7Ci0gICAgaWYgKCFw
aXhtYXApIHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9
IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCByZWludGVycHJldF9jYXN0
PEVHTE5hdGl2ZVBpeG1hcFR5cGU+KHBpeG1hcC5nZXQoKSksIDApOwotICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKSB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXks
IGNvbnRleHQpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgRUdMQ29udGV4
dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250
ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiBudWxscHRyOworICAgIGlmIChh
dXRvIGNvbnRleHQgPSBjcmVhdGVXaW5kb3dDb250ZXh0KGRpc3BsYXksIG5hdGl2ZVdpbmRvdywg
ZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGNvbnRleHQpOwor
I2lmIFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29u
dGV4dChkaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6Om1v
dmUoY29udGV4dCk7CisjZW5kaWYKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZl
ckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RG
Ojptb3ZlKGNvbnRleHQpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0
RUdMPihjb250ZXh0LCBzdXJmYWNlLCBXVEY6Om1vdmUocGl4bWFwKSk7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oWDExKQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitib29sIEdMQ29udGV4dEVHTDo6
aW5pdGlhbGl6ZU9wZW5HTEFQSSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNwbGF5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKLSAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAoIWluaXRpYWxp
emVkKSB7CiAjaWYgIVVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgc3VjY2VzcyA9IGluaXRpYWxp
emVPcGVuR0xTaGltcygpOwotI2VuZGlmCi0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAg
ICB9Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVH
TENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0
PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBhdXRv
IGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywgc2hhcmluZ0Nv
bnRleHQpIDogbnVsbHB0cjsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5nQ29udGV4dCk7
CisgICAgcmV0dXJuIGluaXRpYWxpemVPcGVuR0xTaGltcygpOworI2Vsc2UKKyAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0
ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLQotICAgIHJldHVybiBXVEY6Om1v
dmUoY29udGV4dCk7CiB9CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQg
Y29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQotICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xEaXNwbGF5
IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBDb250ZXh0
VHlwZSBjb250ZXh0VHlwZSkKKyAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZSh0eXBl
KQorICAgICwgbV90eXBlKGNvbnRleHRUeXBlKQogewotICAgIEFTU0VSVCh0eXBlICE9IFBpeG1h
cFN1cmZhY2UpOworICAgIEFTU0VSVChjb250ZXh0VHlwZSAhPSBQaXhtYXBCYXNlZCk7CiB9CiAK
ICNpZiBQTEFURk9STShYMTEpCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0
IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKLSAg
ICA6IG1fY29udGV4dChjb250ZXh0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMRGlz
cGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVu
aXF1ZVBpeG1hcCYmIHBpeG1hcCkKKyAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZShQ
aXhtYXBTdXJmYWNlKQorICAgICwgbV90eXBlKFBpeG1hcEJhc2VkKQogICAgICwgbV9waXhtYXAo
V1RGOjptb3ZlKHBpeG1hcCkpCiB7CiB9CkBAIC0yMzcsMjAgKzIwMywxOSBAQCBHTENvbnRleHRF
R0w6On5HTENvbnRleHRFR0woKQogICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJveShtX2NhaXJv
RGV2aWNlKTsKICNlbmRpZgogCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlz
cGxheSgpOwotICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICBpZiAobV9jb250ZXh0ICE9IEVHTF9O
T19DT05URVhUKSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAw
KTsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9O
T19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRp
c3BsYXksIG1fY29udGV4dCk7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9jb250ZXh0KTsKICAgICB9CiAKLSAgICBpZiAo
bV9zdXJmYWNlKQotICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCBtX3N1cmZhY2Up
OworICAgIGlmIChtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIGVnbERlc3Ry
b3lTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKIH0KIAogYm9vbCBHTENvbnRleHRFR0w6
OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbV90eXBlID09
IFdpbmRvd1N1cmZhY2U7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBXaW5kb3dCYXNlZDsKIH0KIAog
SW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQpAQCAtMjU5LDgg
KzIyNCw4IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZmZXJTaXplKCkK
ICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIEVHTGludCB3aWR0aCwgaGVpZ2h0Owot
ICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlLCBF
R0xfV0lEVEgsICZ3aWR0aCkKLSAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xE
aXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCisgICAgaWYgKCFlZ2xR
dWVyeVN1cmZhY2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndpZHRoKQorICAg
ICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlLCBFR0xfSEVJR0hU
LCAmaGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJldHVybiBJbnRT
aXplKHdpZHRoLCBoZWlnaHQpOwpAQCAtMjc0LDEzICsyMzksMTMgQEAgYm9vbCBHTENvbnRleHRF
R0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAgICAgaWYgKGVnbEdldEN1cnJlbnRDb250ZXh0KCkg
PT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBlZ2xNYWtl
Q3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRl
eHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3VyZmFjZSwgbV9z
dXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dhcEJ1ZmZlcnMo
KQogewotICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJzKHNoYXJlZEVH
TERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBpZiAobV9zdXJmYWNlKQorICAgICAgICBlZ2xT
d2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdM
Ojp3YWl0TmF0aXZlKCkKQEAgLTI5NSw3ICsyNjAsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250
ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAj
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fp
cm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgpLCBtX2NvbnRleHQpOworICAg
IG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3BsYXksIG1fY29u
dGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCmluZGV4IDg2
NTc1YTkxMjRjZWExNDRjZDJmYjMwOWJjYmFjNjg1MGJhYWRkNzEuLmY1OGRiMzQ2YmYyZTNjNmM5
YTc0MTU4OGRkMjU1NWIzMDU0YTUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTM0LDEzICszNCwyMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xDb250ZXh0IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOwogcHVibGljOgotICAgIGVu
dW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFw
U3VyZmFjZSB9OworICAgIGVudW0gQ29udGV4dFR5cGUgeyBXaW5kb3dCYXNlZCwgUGJ1ZmZlckJh
c2VkLCBQaXhtYXBCYXNlZCwgU3VyZmFjZWxlc3MgfTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENv
bnRleHQqIHNoYXJpbmdDb250ZXh0ID0gMCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dDo6RGF0YT4m
JiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBj
cmVhdGVXaW5kb3dDb250ZXh0KEVHTERpc3BsYXksIEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEVHTENv
bnRleHQgc2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYg
PSBudWxscHRyKTsKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXYXlsYW5kQ29udGV4dChHTENvbnRleHQqIHNoYXJp
bmdDb250ZXh0KTsKKyNlbmRpZgorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRFR0w+IGNyZWF0ZShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBDb250ZXh0VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNl
LCB0eXBlKTsKKyAgICB9CiAKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdMU3VyZmFj
ZSwgRUdMU3VyZmFjZVR5cGUpOworICAgIEdMQ29udGV4dEVHTChFR0xEaXNwbGF5LCBFR0xDb250
ZXh0LCBFR0xTdXJmYWNlLCBDb250ZXh0VHlwZSk7CiAjaWYgUExBVEZPUk0oWDExKQotICAgIEdM
Q29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVlUGl4bWFwJiYpOworICAg
IEdMQ29udGV4dEVHTChFR0xEaXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVl
UGl4bWFwJiYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7CiAgICAgdmly
dHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtNTgsMTcgKzY2LDIxIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNv
bnRleHQoRUdMRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CiAjaWYgUExBVEZP
Uk0oWDExKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQ
aXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTERpc3BsYXks
IEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGVYMTFDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpOwogI2VuZGlmCi0KKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplT3BlbkdMQVBJKCk7CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4dChHTENvbnRl
eHRFR0wqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxheSh2b2lkKTsK
KyAgICBzdGF0aWMgRUdMQm9vbGVhbiBjaG9vc2VDb25maWcoRUdMRGlzcGxheSwgRUdMQ29uZmln
KiwgQ29udGV4dFR5cGUpOworICAgIHN0YXRpYyBFR0xpbnQqIGNvbnRleHRBdHRyaWJ1dGVzKCk7
CiAKKyAgICBFR0xEaXNwbGF5IG1fZGlzcGxheTsKICAgICBFR0xDb250ZXh0IG1fY29udGV4dDsK
ICAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKLSAgICBFR0xTdXJmYWNlVHlwZSBtX3R5cGU7Cisg
ICAgQ29udGV4dFR5cGUgbV90eXBlOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBYVW5pcXVlUGl4
bWFwIG1fcGl4bWFwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWQ3MjgxMGI2Yzg2OGQ4NTFlZmZhM2JjZmZlM2QyYWM5OTZhYjRlNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXls
YW5kLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxp
YSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZP
Uk0oV0FZTEFORCkKKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDx3YXlsYW5kLWVn
bC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5n
Q29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9f
RElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWluaXRpYWxpemVP
cGVuR0xBUEkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXN0cnN0cihl
Z2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyksICJFR0xfS0hSX3N1cmZhY2Vs
ZXNzX2NvbnRleHQiKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb25maWcg
Y29uZmlnOworICAgIGlmIChHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmY29u
ZmlnLCBHTENvbnRleHRFR0w6OldpbmRvd0Jhc2VkKSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmlu
Z0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1f
Y29udGV4dCA6IG51bGxwdHI7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29u
dGV4dChkaXNwbGF5LCBjb25maWcsIGVnbFNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRl
cygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29u
dGV4dCwgRUdMX05PX1NVUkZBQ0UsIFN1cmZhY2VsZXNzKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEVHTCkgJiYgUExBVEZPUk0oV0FZTEFORCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xY
MTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU2MmU3ZjI5YWVlNjdlMTM5YjllYzBmZjA5YTRjOTI1MWE2
Y2U1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0xYMTEuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgSWdhbGlhLCBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShYMTEpCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVk
ZSA8WDExL1hsaWIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMRGlzcGxh
eSBkaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTENvbmZpZyBj
b25maWc7CisgICAgaWYgKEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZjb25m
aWcsIEdMQ29udGV4dEVHTDo6UGl4bWFwQmFzZWQpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
ZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0
cmlidXRlcygpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xpbnQgZGVwdGg7CisgICAgaWYgKCFlZ2xHZXRDb25m
aWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkgeworICAg
ICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgRGlzcGxheSogeDExRGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOworICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNwbGF5
LCBEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5KSwgMSwgMSwgZGVwdGgpOworICAgIGlmICgh
cGl4bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2Ug
PSBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcmVpbnRlcnByZXRfY2Fz
dDxFR0xOYXRpdmVQaXhtYXBUeXBlPihwaXhtYXAuZ2V0KCkpLCAwKTsKKyAgICBpZiAoc3VyZmFj
ZSA9PSBFR0xfTk9fU1VSRkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5
LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNl
LCBXVEY6Om1vdmUocGl4bWFwKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+
IEdMQ29udGV4dEVHTDo6Y3JlYXRlWDExQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIG5hdGl2
ZVdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7Cisg
ICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMQVBJKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0
ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbnRleHQgPSBjcmVhdGVXaW5kb3dDb250ZXh0KGRp
c3BsYXksIG5hdGl2ZVdpbmRvdywgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4g
V1RGOjptb3ZlKGNvbnRleHQpOworICAgIGlmIChhdXRvIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBD
b250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bW92ZShjb250ZXh0KTsKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRl
eHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjptb3Zl
KGNvbnRleHQpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShFR0wpICYmIFBMQVRGT1JNKFgxMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1Bs
YXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCmluZGV4IGMyMWQ3MDQ1ZjMwNGQ4NWNiZDhkNWEwODA0
YzBhMWIxNTk1M2FiMmIuLjQ0OTc5MzBmMTQ1OTdmZTg5MDk2NjZjNDZjYjdmNDgyZmIzOTEyNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxh
dGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IFBsYXRmb3JtRGlzcGxheVdheWxhbmQ6
OmNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKQogICAgIGNvbnRleHREYXRhLT5uYXRpdmVXaW5kb3cg
PSB3bF9lZ2xfd2luZG93X2NyZWF0ZShjb250ZXh0RGF0YS0+c3VyZmFjZSwgMSwgMSk7CiAKICAg
ICBhdXRvIG5hdGl2ZVdpbmRvdyA9IGNvbnRleHREYXRhLT5uYXRpdmVXaW5kb3c7Ci0gICAgcmV0
dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChuYXRpdmVXaW5kb3csIG51bGxw
dHIsIFdURjo6bW92ZShjb250ZXh0RGF0YSkpOworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQobV9lZ2xEaXNwbGF5LCBuYXRpdmVXaW5kb3csIG51bGxwdHIsIFdU
Rjo6bW92ZShjb250ZXh0RGF0YSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRT
dXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5
bGFuZFN1cmZhY2UuY3BwCmluZGV4IDk3MWFiMTllZDM0OTU2NGFlZjZlM2NlYmZiODRiODFjN2Jj
NTI0NTIuLmYxMzI0MWU0ZDY5NGRiNGFmZGU0NmM5YmU5ODYyOWU5YjM0YjI1ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5
bGFuZFN1cmZhY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgV2F5bGFuZFN1cmZhY2U6OnJl
c2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlR0xDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gR0xDb250
ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG1fbmF0aXZlV2luZG93LCBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCkpOworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBtX25h
dGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKIH0KIAogdm9pZCBXYXls
YW5kU3VyZmFjZTo6cmVxdWVzdEZyYW1lKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266870</attachid>
            <date>2015-12-08 02:38:00 -0800</date>
            <delta_ts>2016-04-18 04:25:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20151208113730.patch</filename>
            <type>text/plain</type>
            <size>24679</size>
            <attacher name="Emilio Pozuelo Monfort">pochu27</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEyZjcyNmE5YWVmMGZk
NDFkNTQzMmYzYzY3Yzg4MjZkNGM0ZDFkMi4uNzJiYTkyODdhZmYwMjk3ZmY3NzI2NDg4ZTU0NmVl
NWE4YTQ0NDMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTEyLTA3ICBFbWls
aW8gUG96dWVsbyBNb25mb3J0ICA8ZW1pbGlvLnBvenVlbG9AY29sbGFib3JhLmNvLnVrPgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJHTCBvbiBXYXlsYW5kLgorICAgICAgICBCYXNlZCBv
biBhIHBhdGNoIGZyb20gWmFuIERvYmVyc2VrIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKyAgICAg
ICAgYW5kIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQGlnYWxpYS5jb20+LgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OmNob29zZUNvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjcmVhdGVQYnVmZmVyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjppbml0aWFs
aXplT3BlbkdMQVBJKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0
RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVy
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RUdMQ29uZmlnKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXls
YW5kOjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldheWxhbmRT
dXJmYWNlOjpjcmVhdGVHTENvbnRleHQpOgorCiAyMDE1LTEyLTA2ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3cgbW9yZSBpbmZvcm1hdGlvbiBh
Ym91dCBTVkcgcmVuZGVyZXJzIGluIHNob3dMYXllclRyZWUoKSBvdXRwdXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggOGU3ODkwN2QwYjIxZDhlMDRjMzg2YTNlM2M0ZDU0N2MwNjA2NTI2
MC4uYTlkNzhjZjdjNjExYTBhZTgyMzIyYzE0YzQxMjNjZTU4MDZjYTNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTExNiw2ICsxMTYsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcAogCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCBmNjIxNDAzYWZmZjg1NGFkZTYxNzUxZDdlMWEwNzg5
ZGFiNzIzY2UyLi5iOWJjYTQ0YThjZTk2MGFiYTZhOGY1YmNiMjA3Yjc5ZGY2MTQwM2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTEx
Niw3ICsxMTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0
ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiB7CiAjaWYgUExBVEZPUk0oV0FZ
TEFORCkgJiYgVVNFKEVHTCkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewotICAgICAgICBp
ZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hh
bmRsZSwgc2hhcmluZ0NvbnRleHQpKQorICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xD
b250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChzaGFyaW5nQ29udGV4dCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjptb3ZlKGVnbENvbnRleHQpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuY3BwCmluZGV4IGMwMmZkNjNiZjljNjJhODQ1Y2VmMWQ0NTBmYTE0OTQx
YTBjYTk5MzMuLmNjNzU1MDlkZWNmMjY5N2Y0YjQ3NWMwYzU1ZjE5ZGU2YmU0NDVlMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEs
IFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzUsMTEgKzM2LDYgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShYMTEpCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgi
Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVE
XzJEX0NBTlZBUykKIC8vIGNhaXJvLWdsLmggaW5jbHVkZXMgc29tZSBkZWZpbml0aW9ucyBmcm9t
IEdMWCB0aGF0IGNvbmZsaWN0IHdpdGgKIC8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHVzLiBTaW5j
ZSBHTENvbnRleHRFR0wgZG9lc24ndCB1c2UgYW55IEdMWApAQCAtNTUsMTQgKzUxLDE5IEBAIHN0
YXRpYyBFR0xEaXNwbGF5IHNoYXJlZEVHTERpc3BsYXkoKQogICAgIHJldHVybiBQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CiB9CiAKLXN0YXRpYyBjb25zdCBF
R0xpbnQgZ0NvbnRleHRBdHRyaWJ1dGVzW10gPSB7CitFR0xpbnQqIEdMQ29udGV4dEVHTDo6Y29u
dGV4dEF0dHJpYnV0ZXMoKQoreworICAgIHN0YXRpYyBFR0xpbnQgY29udGV4dEF0dHJpYnV0ZXNb
XSA9IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJ
T04sIDIsCisgICAgICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLAogI2VuZGlmCi0g
ICAgRUdMX05PTkUKLX07CisgICAgICAgIEVHTF9OT05FCisgICAgfTsKIAotc3RhdGljIGJvb2wg
Z2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VU
eXBlIHN1cmZhY2VUeXBlKQorICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlczsKK30KKworRUdM
Qm9vbGVhbiBHTENvbnRleHRFR0w6OmNob29zZUNvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVH
TENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkNvbnRleHRUeXBlIGNvbnRleHRUeXBlKQog
ewogICAgIEVHTGludCBhdHRyaWJ1dGVMaXN0W10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpA
QCAtNzksMzUgKzgwLDM1IEBAIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNv
bmZpZywgR0xDb250ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlCiAgICAgICAgIEVHTF9O
T05FCiAgICAgfTsKIAotICAgIHN3aXRjaCAoc3VyZmFjZVR5cGUpIHsKLSAgICBjYXNlIEdMQ29u
dGV4dEVHTDo6UGJ1ZmZlclN1cmZhY2U6CisgICAgc3dpdGNoIChjb250ZXh0VHlwZSkgeworICAg
IGNhc2UgR0xDb250ZXh0RUdMOjpQYnVmZmVyQmFzZWQ6CiAgICAgICAgIGF0dHJpYnV0ZUxpc3Rb
MTNdID0gRUdMX1BCVUZGRVJfQklUOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEdMQ29udGV4
dEVHTDo6UGl4bWFwU3VyZmFjZToKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwQmFzZWQ6
CiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgorICAgIGNhc2UgR0xD
b250ZXh0RUdMOjpXaW5kb3dCYXNlZDoKICAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xf
V0lORE9XX0JJVDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlN1cmZh
Y2VsZXNzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKICAgICB9CiAKICAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAg
IHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0
LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1
cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3Qs
IGNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVy
bmVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCog
c2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4
dERhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0
ZVdpbmRvd0NvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdp
bmRvdywgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dDo6RGF0YT4mJiBjb250ZXh0RGF0YSkKIHsKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250
ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5n
Q29udGV4dCktPm1fY29udGV4dCA6IDA7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFy
ZWRFR0xEaXNwbGF5KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAg
aWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29uZmlnIGNv
bmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAg
ICBpZiAoIWNob29zZUNvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBHTENvbnRleHRFR0w6OldpbmRv
d0Jhc2VkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQs
IGdDb250ZXh0QXR0cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRl
cygpKTsKICAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTExNywyMiArMTE4LDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dU
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gZ2xDb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1
cmZhY2UpOworICAgIGF1dG8gZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxh
eSwgY29udGV4dCwgc3VyZmFjZSwgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCk7CiAgICAgZ2xD
b250ZXh0LT5tX2NvbnRleHREYXRhID0gV1RGOjptb3ZlKGNvbnRleHREYXRhKTsKICAgICByZXR1
cm4gZ2xDb250ZXh0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRl
eHRFR0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCitz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBidWZmZXJD
b250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsK
LSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5KCk7CiAgICAgaWYgKGRp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
RUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQYnVmZmVy
U3VyZmFjZSkpCisgICAgaWYgKCFjaG9vc2VDb25maWcoZGlzcGxheSwgJmNvbmZpZywgUGJ1ZmZl
ckJhc2VkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdD
b250ZXh0QXR0cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29u
dGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRlcygp
KTsKICAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTE0Myw4OCArMTQzLDU1IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoRUdMQ29udGV4dCBzaGFyCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlclN1cmZhY2UpOworICAg
IHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBQ
YnVmZmVyQmFzZWQpOwogfQogCi0jaWYgUExBVEZPUk0oWDExKQotc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQg
c2hhcmluZ0NvbnRleHQpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29u
dGV4dCogc2hhcmluZ0NvbnRleHQpCiB7CiAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVk
RUdMRGlzcGxheSgpOwogICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKCFnZXRF
R0xDb25maWcoJmNvbmZpZywgUGl4bWFwU3VyZmFjZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBj
b25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGlmIChjb250
ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTEFQSSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTGludCBkZXB0aDsKLSAgICBpZiAoIWVn
bEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgp
KSB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSkubmF0aXZlKCk7Ci0gICAgWFVuaXF1ZVBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHgx
MURpc3BsYXksIERlZmF1bHRSb290V2luZG93KHgxMURpc3BsYXkpLCAxLCAxLCBkZXB0aCk7Ci0g
ICAgaWYgKCFwaXhtYXApIHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEVHTFN1cmZhY2Ug
c3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCByZWludGVy
cHJldF9jYXN0PEVHTE5hdGl2ZVBpeG1hcFR5cGU+KHBpeG1hcC5nZXQoKSksIDApOwotICAgIGlm
IChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0
KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAg
RUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nh
c3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiBudWxscHRyOwor
ICAgIGlmIChhdXRvIGNvbnRleHQgPSBjcmVhdGVXaW5kb3dDb250ZXh0KGRpc3BsYXksIG5hdGl2
ZVdpbmRvdywgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGNv
bnRleHQpOworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRl
UGl4bWFwQ29udGV4dChkaXNwbGF5LCBlZ2xTaGFyaW5nQ29udGV4dCkpCisgICAgICAgIHJldHVy
biBXVEY6Om1vdmUoY29udGV4dCk7CisjZW5kaWYKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3Jl
YXRlUGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gV1RGOjptb3ZlKGNvbnRleHQpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
R0xDb250ZXh0RUdMPihjb250ZXh0LCBzdXJmYWNlLCBXVEY6Om1vdmUocGl4bWFwKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oWDExKQogCi1zdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCitib29sIEdMQ29u
dGV4dEVHTDo6aW5pdGlhbGl6ZU9wZW5HTEFQSSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRFR0xEaXNw
bGF5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBpZiAo
IWluaXRpYWxpemVkKSB7CiAjaWYgIVVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgc3VjY2VzcyA9
IGluaXRpYWxpemVPcGVuR0xTaGltcygpOwotI2VuZGlmCi0gICAgICAgIGluaXRpYWxpemVkID0g
dHJ1ZTsKLSAgICB9Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0
YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsK
LSAgICBhdXRvIGNvbnRleHQgPSB3aW5kb3cgPyBjcmVhdGVXaW5kb3dDb250ZXh0KHdpbmRvdywg
c2hhcmluZ0NvbnRleHQpIDogbnVsbHB0cjsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgaWYgKCFj
b250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChlZ2xTaGFyaW5n
Q29udGV4dCk7CisgICAgcmV0dXJuIGluaXRpYWxpemVPcGVuR0xTaGltcygpOworI2Vsc2UKKyAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4
dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKLQotICAgIHJldHVy
biBXVEY6Om1vdmUoY29udGV4dCk7CiB9CiAKLUdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVH
TENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBl
KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChF
R0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNl
LCBDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKKyAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1f
dHlwZSh0eXBlKQorICAgICwgbV90eXBlKGNvbnRleHRUeXBlKQogewotICAgIEFTU0VSVCh0eXBl
ICE9IFBpeG1hcFN1cmZhY2UpOworICAgIEFTU0VSVChjb250ZXh0VHlwZSAhPSBQaXhtYXBCYXNl
ZCk7CiB9CiAKICNpZiBQTEFURk9STShYMTEpCi1HTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChF
R0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBp
eG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQorR0xDb250ZXh0RUdMOjpHTENvbnRleHRF
R0woRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKKyAgICA6IG1fZGlzcGxheShkaXNwbGF5KQor
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAs
IG1fdHlwZShQaXhtYXBTdXJmYWNlKQorICAgICwgbV90eXBlKFBpeG1hcEJhc2VkKQogICAgICwg
bV9waXhtYXAoV1RGOjptb3ZlKHBpeG1hcCkpCiB7CiB9CkBAIC0yMzcsMjAgKzIwNCwxOSBAQCBH
TENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQogICAgICAgICBjYWlyb19kZXZpY2VfZGVzdHJv
eShtX2NhaXJvRGV2aWNlKTsKICNlbmRpZgogCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hh
cmVkRUdMRGlzcGxheSgpOwotICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICBpZiAobV9jb250ZXh0
ICE9IEVHTF9OT19DT05URVhUKSB7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCAwKTsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KGRpc3BsYXksIG1fY29udGV4dCk7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KG1fZGlz
cGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Cisg
ICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9jb250ZXh0KTsKICAgICB9CiAK
LSAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCBt
X3N1cmZhY2UpOworICAgIGlmIChtX3N1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAg
IGVnbERlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKIH0KIAogYm9vbCBHTENv
bnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVmZmVyKCkKIHsKLSAgICByZXR1cm4g
bV90eXBlID09IFdpbmRvd1N1cmZhY2U7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBXaW5kb3dCYXNl
ZDsKIH0KIAogSW50U2l6ZSBHTENvbnRleHRFR0w6OmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKQpA
QCAtMjU5LDggKzIyNSw4IEBAIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZhdWx0RnJhbWVCdWZm
ZXJTaXplKCkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIEVHTGludCB3aWR0aCwg
aGVpZ2h0OwotICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKHNoYXJlZEVHTERpc3BsYXkoKSwgbV9z
dXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKLSAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZShz
aGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCisgICAg
aWYgKCFlZ2xRdWVyeVN1cmZhY2UobV9kaXNwbGF5LCBtX3N1cmZhY2UsIEVHTF9XSURUSCwgJndp
ZHRoKQorICAgICAgICB8fCAhZWdsUXVlcnlTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlLCBF
R0xfSEVJR0hULCAmaGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIHJl
dHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwpAQCAtMjc0LDEzICsyNDAsMTMgQEAgYm9vbCBH
TENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAgICAgaWYgKGVnbEdldEN1cnJlbnRD
b250ZXh0KCkgPT0gbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVy
biBlZ2xNYWtlQ3VycmVudChzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgbV9zdXJmYWNl
LCBtX2NvbnRleHQpOworICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3Vy
ZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6c3dh
cEJ1ZmZlcnMoKQogewotICAgIEFTU0VSVChtX3N1cmZhY2UpOwotICAgIGVnbFN3YXBCdWZmZXJz
KHNoYXJlZEVHTERpc3BsYXkoKSwgbV9zdXJmYWNlKTsKKyAgICBpZiAobV9zdXJmYWNlKQorICAg
ICAgICBlZ2xTd2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CiB9CiAKIHZvaWQgR0xD
b250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKQEAgLTI5NSw3ICsyNjEsNyBAQCBjYWlyb19kZXZpY2Vf
dCogR0xDb250ZXh0RUdMOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2
aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJvRGV2
aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoc2hhcmVkRUdMRGlzcGxheSgpLCBtX2NvbnRl
eHQpOworICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19lZ2xfZGV2aWNlX2NyZWF0ZShtX2Rpc3Bs
YXksIG1fY29udGV4dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5o
CmluZGV4IDg2NTc1YTkxMjRjZWExNDRjZDJmYjMwOWJjYmFjNjg1MGJhYWRkNzEuLmY1OGRiMzQ2
YmYyZTNjNmM5YTc0MTU4OGRkMjU1NWIzMDU0YTUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKQEAgLTM0LDEzICszNCwy
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHTENvbnRleHRFR0wgOiBwdWJsaWMgR0xD
b250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTENvbnRleHRFR0wpOwogcHVibGlj
OgotICAgIGVudW0gRUdMU3VyZmFjZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFj
ZSwgUGl4bWFwU3VyZmFjZSB9OworICAgIGVudW0gQ29udGV4dFR5cGUgeyBXaW5kb3dCYXNlZCwg
UGJ1ZmZlckJhc2VkLCBQaXhtYXBCYXNlZCwgU3VyZmFjZWxlc3MgfTsKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dU
eXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0ID0gMCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93
VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dDo6RGF0YT4mJiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0RUdMPiBjcmVhdGVXaW5kb3dDb250ZXh0KEVHTERpc3BsYXksIEVHTE5hdGl2ZVdpbmRvd1R5
cGUsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6
OkRhdGE+JiYgPSBudWxscHRyKTsKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXYXlsYW5kQ29udGV4dChHTENvbnRl
eHQqIHNoYXJpbmdDb250ZXh0KTsKKyNlbmRpZgorCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+IGNyZWF0ZShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29u
dGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBDb250ZXh0VHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0RUdMPihkaXNwbGF5LCBjb250ZXh0
LCBzdXJmYWNlLCB0eXBlKTsKKyAgICB9CiAKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwg
RUdMU3VyZmFjZSwgRUdMU3VyZmFjZVR5cGUpOworICAgIEdMQ29udGV4dEVHTChFR0xEaXNwbGF5
LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBDb250ZXh0VHlwZSk7CiAjaWYgUExBVEZPUk0oWDEx
KQotICAgIEdMQ29udGV4dEVHTChFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBYVW5pcXVlUGl4bWFw
JiYpOworICAgIEdMQ29udGV4dEVHTChFR0xEaXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNl
LCBYVW5pcXVlUGl4bWFwJiYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB+R0xDb250ZXh0RUdMKCk7
CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtNTgsMTcgKzY2LDIx
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
UGJ1ZmZlckNvbnRleHQoRUdMRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CiAj
aWYgUExBVEZPUk0oWDExKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBjcmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQaXhtYXBDb250ZXh0KEVH
TERpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVYMTFDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5
cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogI2VuZGlmCi0KKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplT3BlbkdMQVBJKCk7CiAgICAgc3RhdGljIHZvaWQgYWRkQWN0aXZlQ29udGV4
dChHTENvbnRleHRFR0wqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwU2hhcmVkRUdMRGlzcGxh
eSh2b2lkKTsKKyAgICBzdGF0aWMgRUdMQm9vbGVhbiBjaG9vc2VDb25maWcoRUdMRGlzcGxheSwg
RUdMQ29uZmlnKiwgQ29udGV4dFR5cGUpOworICAgIHN0YXRpYyBFR0xpbnQqIGNvbnRleHRBdHRy
aWJ1dGVzKCk7CiAKKyAgICBFR0xEaXNwbGF5IG1fZGlzcGxheTsKICAgICBFR0xDb250ZXh0IG1f
Y29udGV4dDsKICAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKLSAgICBFR0xTdXJmYWNlVHlwZSBt
X3R5cGU7CisgICAgQ29udGV4dFR5cGUgbV90eXBlOwogI2lmIFBMQVRGT1JNKFgxMSkKICAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTRiNGRiNDU2MDBmMmMxZWFiNDhmN2MxM2FmMGU0NjIxZmFjNzllMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0xXYXlsYW5kLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSwgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE1IENvbGxhYm9yYSBMdGQuCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5E
KQorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250
ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQor
eworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpLmVnbERpc3BsYXkoKTsKKworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5HTEFQSSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghc3Ryc3RyKGVnbFF1ZXJ5U3Ry
aW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKSwgIkVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4
dCIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbmZpZyBjb25maWc7Cisg
ICAgaWYgKEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZjb25maWcsIEdMQ29u
dGV4dEVHTDo6V2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/
IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDog
bnVsbHB0cjsKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVzKCkpOworICAg
IGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250ZXh0LCBFR0xf
Tk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mODU0YWI4NzE5MzdmOThhNDc1MDcwNTdlYmExN2FiODAyODI0NTVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTFgxMS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEsIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdMQ29udGV4dEVHTC5oIgorCisjaWYgVVNFKEVHTCkgJiYgUExBVEZPUk0oWDExKQorCisj
aW5jbHVkZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgiCisj
aW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVQaXhtYXBDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5n
Q29udGV4dCkKK3sKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmIChHTENvbnRleHRFR0w6
OmNob29zZUNvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBHTENvbnRleHRFR0w6OlBpeG1hcEJhc2Vk
KSAhPSBFR0xfVFJVRSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBFR0xDb250ZXh0
IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRl
eHQsIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKGNvbnRleHQg
PT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMaW50
IGRlcHRoOworICAgIGlmICghZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdM
X0RFUFRIX1NJWkUsICZkZXB0aCkpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxh
eSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIERpc3Bs
YXkqIHgxMURpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBYVW5pcXVlUGl4bWFwIHBpeG1h
cCA9IFhDcmVhdGVQaXhtYXAoeDExRGlzcGxheSwgRGVmYXVsdFJvb3RXaW5kb3coeDExRGlzcGxh
eSksIDEsIDEsIGRlcHRoKTsKKyAgICBpZiAoIXBpeG1hcCkgeworICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNw
bGF5LCBjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMTmF0aXZlUGl4bWFwVHlwZT4ocGl4bWFw
LmdldCgpKSwgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpIHsKKyAgICAg
ICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVH
TD4oZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgV1RGOjptb3ZlKHBpeG1hcCkpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVgxMUNvbnRl
eHQoRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0Nv
bnRleHQpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghaW5pdGlhbGl6ZU9wZW5H
TEFQSSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hh
cmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+
KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb250
ZXh0ID0gY3JlYXRlV2luZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVnbFNoYXJp
bmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKKyAgICBpZiAo
YXV0byBjb250ZXh0ID0gY3JlYXRlUGl4bWFwQ29udGV4dChkaXNwbGF5LCBlZ2xTaGFyaW5nQ29u
dGV4dCkpCisgICAgICAgIHJldHVybiBXVEY6Om1vdmUoY29udGV4dCk7CisgICAgaWYgKGF1dG8g
Y29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGRpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKKworICAgIHJldHVybiBudWxs
cHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAm
JiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAppbmRl
eCBjMjFkNzA0NWYzMDRkODVjYmQ4ZDVhMDgwNGMwYTFiMTU5NTNhYjJiLi40NDk3OTMwZjE0NTk3
ZmU4OTA5NjY2YzQ2Y2I3ZjQ4MmZiMzkxMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
RUdMPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCkKICAg
ICBjb250ZXh0RGF0YS0+bmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUoY29udGV4
dERhdGEtPnN1cmZhY2UsIDEsIDEpOwogCiAgICAgYXV0byBuYXRpdmVXaW5kb3cgPSBjb250ZXh0
RGF0YS0+bmF0aXZlV2luZG93OwotICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRv
d0NvbnRleHQobmF0aXZlV2luZG93LCBudWxscHRyLCBXVEY6Om1vdmUoY29udGV4dERhdGEpKTsK
KyAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG1fZWdsRGlzcGxh
eSwgbmF0aXZlV2luZG93LCBudWxscHRyLCBXVEY6Om1vdmUoY29udGV4dERhdGEpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAppbmRleCA5NzFhYjE5
ZWQzNDk1NjRhZWY2ZTNjZWJmYjg0YjgxYzdiYzUyNDUyLi5mMTMyNDFlNGQ2OTRkYjRhZmRlNDZj
OWJlOTg2MjllOWIzNGIyNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcApAQCAtNjksNyArNjks
NyBAQCB2b2lkIFdheWxhbmRTdXJmYWNlOjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAog
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29u
dGV4dCgpCiB7Ci0gICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dCht
X25hdGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKyAgICByZXR1cm4g
R0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpLmVnbERpc3BsYXkoKSwgbV9uYXRpdmVXaW5kb3csIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKSk7CiB9CiAKIHZvaWQgV2F5bGFuZFN1cmZhY2U6OnJlcXVlc3RGcmFtZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276630</attachid>
            <date>2016-04-18 04:26:04 -0700</date>
            <delta_ts>2016-08-17 00:33:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118944-20160418132620.patch</filename>
            <type>text/plain</type>
            <size>24681</size>
            <attacher name="Emilio Pozuelo Monfort">pochu27</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk0NTVjYzdiNjg3ODk2
ZjE5YzVhNDk2MmUzZDc5NjhkYWM5M2MyNC4uNGYzM2Q0N2E4YmUyNzNlZWRiNjQ5YTRmNzQ5MGY5
MmE4MmExODFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTA0LTE4ICBFbWls
aW8gUG96dWVsbyBNb25mb3J0ICA8ZW1pbGlvLnBvenVlbG9AY29sbGFib3JhLmNvLnVrPgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJHTCBvbiBXYXlsYW5kLgorICAgICAgICBCYXNlZCBv
biBhIHBhdGNoIGZyb20gWmFuIERvYmVyc2VrIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKyAgICAg
ICAgYW5kIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQGlnYWxpYS5jb20+LgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
TENvbnRleHRFR0w6OmNob29zZUNvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjcmVhdGVQYnVmZmVyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjppbml0aWFs
aXplT3BlbkdMQVBJKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0
RUdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNhblJlbmRlclRvRGVmYXVsdEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVy
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6Om1ha2VDb250ZXh0Q3VycmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RUdMQ29uZmlnKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdM
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlXYXls
YW5kOjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldheWxhbmRT
dXJmYWNlOjpjcmVhdGVHTENvbnRleHQpOgorCiAyMDE2LTA0LTE0ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgRGFzaGJvYXJkIGlzIHNwZWxsZWQgYXMgRGFz
aGJhcmQgaW4gc2V2ZXJhbCBzb3VyY2UgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5k
ZXggMjYwMTY0ZjI5MjE4NTEyYjJkZGUzZWIyZWE5YmQ0OGI0ZGMyYzA4NS4uMTQyYzk3MzU5MDk1
YTY4MzdlMmY3Mzk4OWJkNGZiOWRjYzRhYzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTExNyw2ICsxMTcsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcAogCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
TENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0
LmNwcAppbmRleCBkZTYxMjQ4M2RkZDZjYWY5NDBlMmQyYjc2ZDk0NzM3NThhMjUyMmU4Li5mZmQx
MTY4YjcxODNkMjlkODFmMDFhMWUzY2VjYmE2MDgyYmExZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5k
b3coR0xOYXRpdmVXaW5kb3dUeXBlCiB7CiAjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVH
TCkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewotICAgICAgICBpZiAoYXV0byBlZ2xDb250
ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0Nv
bnRleHQpKQorICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVh
dGVXYXlsYW5kQ29udGV4dChzaGFyaW5nQ29udGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShlZ2xDb250ZXh0KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cAppbmRleCBhMmJjNzViZTZhMzU1NWQ3NDBhYTk1MWU0YTc2NWJkMmFmZGE0NzQzLi4xYzVlYTQ4
Mjk4MWYzMTRlMTBjNGZmZmIxOTMyZDE1MzgwMWZlZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNiBDb2xsYWJvcmEgTHRkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MzUsMTEgKzM2LDYgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgiCi0jaW5jbHVkZSA8
WDExL1hsaWIuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
IC8vIGNhaXJvLWdsLmggaW5jbHVkZXMgc29tZSBkZWZpbml0aW9ucyBmcm9tIEdMWCB0aGF0IGNv
bmZsaWN0IHdpdGgKIC8vIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHVzLiBTaW5jZSBHTENvbnRleHRF
R0wgZG9lc24ndCB1c2UgYW55IEdMWApAQCAtNTUsMTQgKzUxLDE5IEBAIHN0YXRpYyBFR0xEaXNw
bGF5IHNoYXJlZEVHTERpc3BsYXkoKQogICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CiB9CiAKLXN0YXRpYyBjb25zdCBFR0xpbnQgZ0NvbnRl
eHRBdHRyaWJ1dGVzW10gPSB7CitFR0xpbnQqIEdMQ29udGV4dEVHTDo6Y29udGV4dEF0dHJpYnV0
ZXMoKQoreworICAgIHN0YXRpYyBFR0xpbnQgY29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKICNpZiBV
U0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisgICAg
ICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLAogI2VuZGlmCi0gICAgRUdMX05PTkUK
LX07CisgICAgICAgIEVHTF9OT05FCisgICAgfTsKIAotc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmln
KEVHTENvbmZpZyogY29uZmlnLCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKQorICAgIHJldHVybiBjb250ZXh0QXR0cmlidXRlczsKK30KKworRUdMQm9vbGVhbiBHTENv
bnRleHRFR0w6OmNob29zZUNvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyogY29u
ZmlnLCBHTENvbnRleHRFR0w6OkNvbnRleHRUeXBlIGNvbnRleHRUeXBlKQogewogICAgIEVHTGlu
dCBhdHRyaWJ1dGVMaXN0W10gPSB7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQpAQCAtNzksMzUgKzgw
LDM1IEBAIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhFR0xDb25maWcqIGNvbmZpZywgR0xDb250
ZXh0RUdMOjpFR0xTdXJmYWNlVHlwZSBzdXJmYWNlCiAgICAgICAgIEVHTF9OT05FCiAgICAgfTsK
IAotICAgIHN3aXRjaCAoc3VyZmFjZVR5cGUpIHsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGJ1
ZmZlclN1cmZhY2U6CisgICAgc3dpdGNoIChjb250ZXh0VHlwZSkgeworICAgIGNhc2UgR0xDb250
ZXh0RUdMOjpQYnVmZmVyQmFzZWQ6CiAgICAgICAgIGF0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BC
VUZGRVJfQklUOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFw
U3VyZmFjZToKKyAgICBjYXNlIEdMQ29udGV4dEVHTDo6UGl4bWFwQmFzZWQ6CiAgICAgICAgIGF0
dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgR0xDb250ZXh0RUdMOjpXaW5kb3dTdXJmYWNlOgorICAgIGNhc2UgR0xDb250ZXh0RUdMOjpX
aW5kb3dCYXNlZDoKICAgICAgICAgYXR0cmlidXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHTENvbnRleHRFR0w6OlN1cmZhY2VsZXNzOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAg
ICB9CiAKICAgICBFR0xpbnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xD
aG9vc2VDb25maWcoc2hhcmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEs
ICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICBy
ZXR1cm4gZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYnV0ZUxpc3QsIGNvbmZpZywgMSwg
Jm51bWJlckNvbmZpZ3NSZXR1cm5lZCkgJiYgbnVtYmVyQ29uZmlnc1JldHVybmVkOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0Nv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRl
eHQsIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgY29udGV4dERhdGEpCitzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRl
eHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dDo6RGF0YT4mJiBj
b250ZXh0RGF0YSkKIHsKLSAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0ID0gc2hhcmlu
Z0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29udGV4dCktPm1f
Y29udGV4dCA6IDA7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFyZWRFR0xEaXNwbGF5
KCk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgaWYgKCF3aW5kb3cp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBp
ZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBXaW5kb3dTdXJmYWNlKSkKKyAgICBpZiAoIWNob29z
ZUNvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBHTENvbnRleHRFR0w6OldpbmRvd0Jhc2VkKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGdDb250ZXh0QXR0
cmlidXRlcyk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNw
bGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250ZXh0QXR0cmlidXRlcygpKTsKICAgICBp
ZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTExNywyMiArMTE4LDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxHTENvbnRleHRFR0w+KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOworICAg
IGF1dG8gZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwg
c3VyZmFjZSwgR0xDb250ZXh0RUdMOjpXaW5kb3dCYXNlZCk7CiAgICAgZ2xDb250ZXh0LT5tX2Nv
bnRleHREYXRhID0gV1RGTW92ZShjb250ZXh0RGF0YSk7CiAgICAgcmV0dXJuIGdsQ29udGV4dDsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQ
YnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQorc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xEaXNw
bGF5IGRpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7Ci0gICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOwogICAgIGlmIChkaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEVHTENvbmZpZyBjb25m
aWc7Ci0gICAgaWYgKCFnZXRFR0xDb25maWcoJmNvbmZpZywgUGJ1ZmZlclN1cmZhY2UpKQorICAg
IGlmICghY2hvb3NlQ29uZmlnKGRpc3BsYXksICZjb25maWcsIFBidWZmZXJCYXNlZCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBnQ29udGV4dEF0dHJpYnV0
ZXMpOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMoKSk7CiAgICAgaWYgKGNv
bnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NDMsODggKzE0Myw1NSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTENvbnRleHQgc2hhcgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRF
R0w+KGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNlKTsKKyAgICByZXR1cm4gR0xDb250
ZXh0RUdMOjpjcmVhdGUoZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgUGJ1ZmZlckJhc2VkKTsK
IH0KIAotI2lmIFBMQVRGT1JNKFgxMSkKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
KQorc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250
ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdD
b250ZXh0KQogewogICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsK
ICAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmlnKCZjb25m
aWcsIFBpeG1hcFN1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENv
bnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5n
Q29udGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9f
Q09OVEVYVCkKKyAgICBpZiAoIWluaXRpYWxpemVPcGVuR0xBUEkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBFR0xpbnQgZGVwdGg7Ci0gICAgaWYgKCFlZ2xHZXRDb25maWdBdHRy
aWIoZGlzcGxheSwgY29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkgewotICAgICAgICBl
Z2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgRGlzcGxheSogeDExRGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwot
ICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNwbGF5LCBEZWZh
dWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5KSwgMSwgMSwgZGVwdGgpOwotICAgIGlmICghcGl4bWFw
KSB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xD
cmVhdGVQaXhtYXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxFR0xO
YXRpdmVQaXhtYXBUeXBlPihwaXhtYXAuZ2V0KCkpLCAwKTsKLSAgICBpZiAoc3VyZmFjZSA9PSBF
R0xfTk9fU1VSRkFDRSkgewotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIEVHTENvbnRleHQgZWds
U2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVH
TCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBj
b250ZXh0ID0gY3JlYXRlV2luZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5kb3csIGVnbFNo
YXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CisjaWYgUExB
VEZPUk0oWDExKQorICAgIGlmIChhdXRvIGNvbnRleHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGRp
c3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29udGV4
dCk7CisjZW5kaWYKKyAgICBpZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQo
ZGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShjb250
ZXh0KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4
dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXApKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KLSNl
bmRpZiAvLyBQTEFURk9STShYMTEpCiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xD
b250ZXh0KiBzaGFyaW5nQ29udGV4dCkKK2Jvb2wgR0xDb250ZXh0RUdMOjppbml0aWFsaXplT3Bl
bkdMQVBJKCkKIHsKLSAgICBpZiAoIXNoYXJlZEVHTERpc3BsYXkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0
YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICNpZiAh
VVNFKE9QRU5HTF9FU18yKQotICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1z
KCk7Ci0jZW5kaWYKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLSAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMQ29udGV4dCBlZ2xT
aGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0RUdM
Kj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwotICAgIGF1dG8gY29udGV4dCA9IHdp
bmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxs
cHRyOwotI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIGNvbnRl
eHQgPSBjcmVhdGVQaXhtYXBDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKKyAgICByZXR1cm4g
aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisjZWxzZQorICAgIHJldHVybiB0cnVlOwogI2VuZGlm
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRl
eHQoZWdsU2hhcmluZ0NvbnRleHQpOwotCi0gICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdMQ29u
dGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENv
bnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29u
dGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBDb250ZXh0VHlwZSBjb250ZXh0VHlwZSkKKyAgICA6
IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1
cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV90eXBlKGNvbnRleHRU
eXBlKQogewotICAgIEFTU0VSVCh0eXBlICE9IFBpeG1hcFN1cmZhY2UpOworICAgIEFTU0VSVChj
b250ZXh0VHlwZSAhPSBQaXhtYXBCYXNlZCk7CiB9CiAKICNpZiBQTEFURk9STShYMTEpCi1HTENv
bnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0
IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKKyAg
ICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlwZShQaXhtYXBTdXJmYWNlKQorICAgICwgbV90
eXBlKFBpeG1hcEJhc2VkKQogICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXhtYXApKQogewogfQpA
QCAtMjM3LDIwICsyMDQsMTkgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICAgICAg
ICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAjZW5kaWYKIAotICAgIEVH
TERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKLSAgICBpZiAobV9jb250ZXh0
KSB7CisgICAgaWYgKG1fY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkgewogICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50
KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQp
OwotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOworICAgICAg
ICBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2Rpc3BsYXks
IG1fY29udGV4dCk7CiAgICAgfQogCi0gICAgaWYgKG1fc3VyZmFjZSkKLSAgICAgICAgZWdsRGVz
dHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICBpZiAobV9zdXJmYWNlICE9IEVH
TF9OT19TVVJGQUNFKQorICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtX2Rpc3BsYXksIG1fc3Vy
ZmFjZSk7CiB9CiAKIGJvb2wgR0xDb250ZXh0RUdMOjpjYW5SZW5kZXJUb0RlZmF1bHRGcmFtZWJ1
ZmZlcigpCiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBXaW5kb3dTdXJmYWNlOworICAgIHJldHVy
biBtX3R5cGUgPT0gV2luZG93QmFzZWQ7CiB9CiAKIEludFNpemUgR0xDb250ZXh0RUdMOjpkZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCkKQEAgLTI1OSw4ICsyMjUsOCBAQCBJbnRTaXplIEdMQ29udGV4
dEVHTDo6ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7
CiAKICAgICBFR0xpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShz
aGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAg
IHx8ICFlZ2xRdWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9I
RUlHSFQsICZoZWlnaHQpKQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKG1fZGlzcGxheSwgbV9z
dXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFjZSht
X2Rpc3BsYXksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkpCiAgICAgICAgIHJldHVy
biBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTI3
NCwxMyArMjQwLDEzIEBAIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQog
ICAgIGlmIChlZ2xHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZWdsTWFrZUN1cnJlbnQoc2hhcmVkRUdMRGlzcGxheSgp
LCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gZWdsTWFrZUN1
cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKIH0KIAog
dm9pZCBHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKCkKIHsKLSAgICBBU1NFUlQobV9zdXJmYWNl
KTsKLSAgICBlZ2xTd2FwQnVmZmVycyhzaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSk7Cisg
ICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgZWdsU3dhcEJ1ZmZlcnMobV9kaXNwbGF5LCBtX3N1
cmZhY2UpOwogfQogCiB2b2lkIEdMQ29udGV4dEVHTDo6d2FpdE5hdGl2ZSgpCkBAIC0yOTUsNyAr
MjYxLDcgQEAgY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQogICAg
ICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCi0gICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2VnbF9kZXZpY2VfY3JlYXRlKHNoYXJl
ZEVHTERpc3BsYXkoKSwgbV9jb250ZXh0KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZWds
X2RldmljZV9jcmVhdGUobV9kaXNwbGF5LCBtX2NvbnRleHQpOwogI2VuZGlmCiAKICAgICByZXR1
cm4gbV9jYWlyb0RldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCA4NjU3NWE5MTI0Y2VhMTQ0Y2QyZmIzMDliY2Jh
YzY4NTBiYWFkZDcxLi5mNThkYjM0NmJmMmUzYzZjOWE3NDE1ODhkZDI1NTViMzA1NGE1MzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5oCkBAIC0zNCwxMyArMzQsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR0xD
b250ZXh0RUdMIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
R0xDb250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBlbnVtIEVHTFN1cmZhY2VUeXBlIHsgUGJ1ZmZl
clN1cmZhY2UsIFdpbmRvd1N1cmZhY2UsIFBpeG1hcFN1cmZhY2UgfTsKKyAgICBlbnVtIENvbnRl
eHRUeXBlIHsgV2luZG93QmFzZWQsIFBidWZmZXJCYXNlZCwgUGl4bWFwQmFzZWQsIFN1cmZhY2Vs
ZXNzIH07CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUNv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSwgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCA9IDAp
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXaW5kb3dD
b250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUsIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQsIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ6OkRhdGE+JiYgPSBudWxscHRyKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChFR0xEaXNw
bGF5LCBFR0xOYXRpdmVXaW5kb3dUeXBlLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0LCBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0OjpEYXRhPiYmID0gbnVsbHB0cik7CisjaWYgUExBVEZPUk0o
V0FZTEFORCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRl
V2F5bGFuZENvbnRleHQoR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CisjZW5kaWYKKworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGUoRUdMRGlzcGxheSBk
aXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgQ29udGV4dFR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4
dEVHTD4oZGlzcGxheSwgY29udGV4dCwgc3VyZmFjZSwgdHlwZSk7CisgICAgfQogCi0gICAgR0xD
b250ZXh0RUdMKEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIEVHTFN1cmZhY2VUeXBlKTsKKyAgICBH
TENvbnRleHRFR0woRUdMRGlzcGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgQ29udGV4dFR5
cGUpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBHTENvbnRleHRFR0woRUdMQ29udGV4dCwgRUdM
U3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKKyAgICBHTENvbnRleHRFR0woRUdMRGlzcGxheSwg
RUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKICNlbmRpZgogICAgIHZp
cnR1YWwgfkdMQ29udGV4dEVHTCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKQEAgLTU4LDE3ICs2NiwyMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRl
eHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEVHTERpc3BsYXksIEVHTENvbnRl
eHQgc2hhcmluZ0NvbnRleHQpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xEaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlWDExQ29u
dGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKICNl
bmRpZgotCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZU9wZW5HTEFQSSgpOwogICAgIHN0YXRp
YyB2b2lkIGFkZEFjdGl2ZUNvbnRleHQoR0xDb250ZXh0RUdMKik7CiAgICAgc3RhdGljIHZvaWQg
Y2xlYW51cFNoYXJlZEVHTERpc3BsYXkodm9pZCk7CisgICAgc3RhdGljIEVHTEJvb2xlYW4gY2hv
b3NlQ29uZmlnKEVHTERpc3BsYXksIEVHTENvbmZpZyosIENvbnRleHRUeXBlKTsKKyAgICBzdGF0
aWMgRUdMaW50KiBjb250ZXh0QXR0cmlidXRlcygpOwogCisgICAgRUdMRGlzcGxheSBtX2Rpc3Bs
YXk7CiAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQ7CiAgICAgRUdMU3VyZmFjZSBtX3N1cmZhY2U7
Ci0gICAgRUdMU3VyZmFjZVR5cGUgbV90eXBlOworICAgIENvbnRleHRUeXBlIG1fdHlwZTsKICNp
ZiBQTEFURk9STShYMTEpCiAgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TFdheWxhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTFdheWxhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MDhiNDE1ZDIyYzM4YjM2MzJiMWQ0OTIz
NjE3MzY0ZTcxNWM0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMV2F5bGFuZC5jcHAKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEsIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IENvbGxhYm9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgiCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFURk9S
TShXQVlMQU5EKQorCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPHdheWxhbmQtZWds
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4dChHTENvbnRleHQqIHNoYXJpbmdD
b250ZXh0KQoreworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKTsKKworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19E
SVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghaW5pdGlhbGl6ZU9w
ZW5HTEFQSSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghc3Ryc3RyKGVn
bFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKSwgIkVHTF9LSFJfc3VyZmFjZWxl
c3NfY29udGV4dCIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENvbmZpZyBj
b25maWc7CisgICAgaWYgKEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZjb25m
aWcsIEdMQ29udGV4dEVHTDo6V2luZG93QmFzZWQpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEVHTENvbnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5n
Q29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9j
b250ZXh0IDogbnVsbHB0cjsKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250
ZXh0KGRpc3BsYXksIGNvbmZpZywgZWdsU2hhcmluZ0NvbnRleHQsIGNvbnRleHRBdHRyaWJ1dGVz
KCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZShkaXNwbGF5LCBjb250
ZXh0LCBFR0xfTk9fU1VSRkFDRSwgU3VyZmFjZWxlc3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFgx
MS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
WDExLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZGFkMzdiMzEyYTdlNWQ3ZTMwZjA1OTVhYjY5MDY0MTIwMWUz
YWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTFgxMS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJZ2FsaWEsIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IENvbGxh
Ym9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBVU0UoRUdMKSAmJiBQTEFU
Rk9STShYMTEpCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURp
c3BsYXlYMTEuaCIKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8WDExL1hsaWIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBH
TENvbnRleHRFR0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xD
b250ZXh0IHNoYXJpbmdDb250ZXh0KQoreworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYg
KEdMQ29udGV4dEVHTDo6Y2hvb3NlQ29uZmlnKGRpc3BsYXksICZjb25maWcsIEdMQ29udGV4dEVH
TDo6UGl4bWFwQmFzZWQpICE9IEVHTF9UUlVFKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmln
LCBzaGFyaW5nQ29udGV4dCwgR0xDb250ZXh0RUdMOjpjb250ZXh0QXR0cmlidXRlcygpKTsKKyAg
ICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBFR0xpbnQgZGVwdGg7CisgICAgaWYgKCFlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxh
eSwgY29uZmlnLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoKSkgeworICAgICAgICBlZ2xEZXN0cm95
Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgRGlzcGxheSogeDExRGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOworICAgIFhVbmlx
dWVQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNwbGF5LCBEZWZhdWx0Um9vdFdp
bmRvdyh4MTFEaXNwbGF5KSwgMSwgMSwgZGVwdGgpOworICAgIGlmICghcGl4bWFwKSB7CisgICAg
ICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xDcmVhdGVQaXht
YXBTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxFR0xOYXRpdmVQaXht
YXBUeXBlPihwaXhtYXAuZ2V0KCkpLCAwKTsKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VS
RkFDRSkgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8R0xDb250ZXh0RUdMPihkaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHBpeG1h
cCkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNy
ZWF0ZVgxMUNvbnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSBuYXRpdmVXaW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpOworICAgIGlmIChkaXNwbGF5ID09
IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghaW5p
dGlhbGl6ZU9wZW5HTEFQSSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEVHTENv
bnRleHQgZWdsU2hhcmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdM
Q29udGV4dEVHTCo+KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogbnVsbHB0cjsKKyAgICBp
ZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlV2luZG93Q29udGV4dChkaXNwbGF5LCBuYXRpdmVXaW5k
b3csIGVnbFNoYXJpbmdDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7
CisgICAgaWYgKGF1dG8gY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRleHQoZGlzcGxheSwgZWds
U2hhcmluZ0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShjb250ZXh0KTsKKyAgICBp
ZiAoYXV0byBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZGlzcGxheSwgZWdsU2hhcmlu
Z0NvbnRleHQpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShjb250ZXh0KTsKKworICAgIHJldHVy
biBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
RUdMKSAmJiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNw
cAppbmRleCBkMzMwNWUxNmEyNDMzN2Y1NDg2MjUzMGQxMmEzZGY3YmYzYmUwN2FiLi5hMTU0ZWI0
ODI0NjFhNDEwYWVlZWI0YTBjZWUyZmRiYjkxMmI3YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1E
aXNwbGF5V2F5bGFuZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBQbGF0Zm9ybURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0
KCkKICAgICBjb250ZXh0RGF0YS0+bmF0aXZlV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUo
Y29udGV4dERhdGEtPnN1cmZhY2UsIDEsIDEpOwogCiAgICAgYXV0byBuYXRpdmVXaW5kb3cgPSBj
b250ZXh0RGF0YS0+bmF0aXZlV2luZG93OwotICAgIHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0
ZVdpbmRvd0NvbnRleHQobmF0aXZlV2luZG93LCBudWxscHRyLCBXVEZNb3ZlKGNvbnRleHREYXRh
KSk7CisgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChtX2VnbERp
c3BsYXksIG5hdGl2ZVdpbmRvdywgbnVsbHB0ciwgV1RGTW92ZShjb250ZXh0RGF0YSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCmluZGV4IDk3MWFi
MTllZDM0OTU2NGFlZjZlM2NlYmZiODRiODFjN2JjNTI0NTIuLmYxMzI0MWU0ZDY5NGRiNGFmZGU0
NmM5YmU5ODYyOWU5YjM0YjI1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgV2F5bGFuZFN1cmZhY2U6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlR0xD
b250ZXh0KCkKIHsKLSAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0
KG1fbmF0aXZlV2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOworICAgIHJldHVy
biBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkuZWdsRGlzcGxheSgpLCBtX25hdGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFy
aW5nQ29udGV4dCgpKTsKIH0KIAogdm9pZCBXYXlsYW5kU3VyZmFjZTo6cmVxdWVzdEZyYW1lKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>